github.com/aacfactory/fns-contrib/databases/sql@v1.2.84/dac/conditions/literal.go (about)

     1  package conditions
     2  
     3  import (
     4  	"github.com/aacfactory/fns/commons/times"
     5  	"strconv"
     6  	"time"
     7  	"unsafe"
     8  )
     9  
    10  func String(s string) Literal {
    11  	return Literal{
    12  		value: "'" + s + "'",
    13  	}
    14  }
    15  
    16  func Bool(b bool) Literal {
    17  	return Literal{
    18  		value: strconv.FormatBool(b),
    19  	}
    20  }
    21  
    22  func Int(n int) Literal {
    23  	return Literal{
    24  		value: strconv.Itoa(n),
    25  	}
    26  }
    27  
    28  func Int64(n int64) Literal {
    29  	return Literal{
    30  		value: strconv.FormatInt(n, 10),
    31  	}
    32  }
    33  
    34  func Float(f float32) Literal {
    35  	return Literal{
    36  		value: strconv.FormatFloat(float64(f), 'f', -1, 32),
    37  	}
    38  }
    39  
    40  func Float64(f float64) Literal {
    41  	return Literal{
    42  		value: strconv.FormatFloat(f, 'f', -1, 64),
    43  	}
    44  }
    45  
    46  func Datetime(t time.Time) Literal {
    47  	return Literal{
    48  		value: "'" + t.Format(time.RFC3339Nano) + "'",
    49  	}
    50  }
    51  
    52  func Date(t times.Date) Literal {
    53  	return Literal{
    54  		value: "'" + t.String() + "'",
    55  	}
    56  }
    57  
    58  func Time(t times.Time) Literal {
    59  	return Literal{
    60  		value: "'" + t.String() + "'",
    61  	}
    62  }
    63  
    64  func Null() Literal {
    65  	return Literal{
    66  		value: "null",
    67  	}
    68  }
    69  
    70  func Lit(v string) Literal {
    71  	return Literal{
    72  		value: v,
    73  	}
    74  }
    75  
    76  type Literal struct {
    77  	value string
    78  }
    79  
    80  func (lit Literal) Value() string {
    81  	return lit.value
    82  }
    83  
    84  func (lit Literal) String() string {
    85  	return lit.value
    86  }
    87  
    88  func (lit Literal) Bytes() []byte {
    89  	return unsafe.Slice(unsafe.StringData(lit.value), len(lit.value))
    90  }