Documentation ¶
Index ¶
- Constants
- type AdapterType
- type CaseWhen
- type Decimal
- func (d Decimal) Abs() Decimal
- func (d Decimal) Add(d2 Decimal) Decimal
- func (d Decimal) Cmp(d2 Decimal) int
- func (d Decimal) Cos() Decimal
- func (d Decimal) Div(d2 Decimal) Decimal
- func (d Decimal) Equal(d2 Decimal) bool
- func (d Decimal) Float64() (f float64)
- func (d *Decimal) FromFloat(v float64)
- func (d *Decimal) FromInt(v int64)
- func (d *Decimal) FromString(v string)
- func (d Decimal) GreaterThan(d2 Decimal) bool
- func (d Decimal) GreaterThanOrEqual(d2 Decimal) bool
- func (d Decimal) IntPart() int64
- func (d Decimal) IsNegative() bool
- func (d Decimal) IsPositive() bool
- func (d Decimal) IsZero() bool
- func (d Decimal) LessThan(d2 Decimal) bool
- func (d Decimal) LessThanOrEqual(d2 Decimal) bool
- func (d Decimal) MarshalBinary() (data []byte, err error)
- func (d Decimal) MarshalJSON() ([]byte, error)
- func (d Decimal) MarshalText() (text []byte, err error)
- func (d Decimal) Max(rest ...Decimal) Decimal
- func (d Decimal) Min(rest ...Decimal) Decimal
- func (d Decimal) Mod(d2 Decimal) Decimal
- func (d Decimal) Mul(d2 Decimal) Decimal
- func (d Decimal) Neg() Decimal
- func (d Decimal) Pow(d2 Decimal) Decimal
- func (d Decimal) Round(places int32) Decimal
- func (d *Decimal) Scan(src interface{}) error
- func (d Decimal) Sign() int
- func (d Decimal) Sin() Decimal
- func (d Decimal) String() string
- func (d Decimal) StringFixed(places int32) string
- func (d Decimal) StringScaled(exp int32) string
- func (d Decimal) Sub(d2 Decimal) Decimal
- func (d Decimal) Sum(rest ...Decimal) Decimal
- func (d Decimal) Tan() Decimal
- func (d Decimal) Truncate(precision int32) Decimal
- func (d *Decimal) UnmarshalBinary(data []byte) error
- func (d *Decimal) UnmarshalJSON(decimalBytes []byte) error
- func (d *Decimal) UnmarshalText(text []byte) error
- func (d Decimal) Value() (driver.Value, error)
- type Engine
- func (e *Engine) And(strFmt string, args ...interface{}) *Engine
- func (e *Engine) Asc(strColumns ...string) *Engine
- func (e *Engine) Attach(strDatabaseName string, db *sqlx.DB) *Engine
- func (e *Engine) AutoRollback() *Engine
- func (e *Engine) Avg(strColumn string, strAS ...string) *Engine
- func (e *Engine) Case(strThen string, strWhen string, args ...interface{}) *CaseWhen
- func (e *Engine) Count() (count int64, err error)
- func (e *Engine) Counter() *counter
- func (e *Engine) Debug(ok bool)
- func (e *Engine) Delete() (rowsAffected int64, err error)
- func (e *Engine) Desc(strColumns ...string) *Engine
- func (e *Engine) Distinct() *Engine
- func (e *Engine) Exclude(strColumns ...string) *Engine
- func (e *Engine) ExecRaw(strQuery string, args ...interface{}) (rowsAffected, lastInsertId int64, err error)
- func (e *Engine) Find(conditions map[string]interface{}) (rowsAffected int64, err error)
- func (e *Engine) Force() *Engine
- func (e *Engine) GeoHash(lng, lat float64, precision int) (strGeoHash string, strNeighbors []string)
- func (e *Engine) GetAdapter() AdapterType
- func (e *Engine) GetPkName() string
- func (e *Engine) GroupBy(strColumns ...string) *Engine
- func (e *Engine) Having(strFmt string, args ...interface{}) *Engine
- func (e *Engine) Id(value interface{}) *Engine
- func (e *Engine) In(strColumn string, args ...interface{}) *Engine
- func (e *Engine) InnerJoin(strTableName string) *Join
- func (e *Engine) Insert() (lastInsertId int64, err error)
- func (e *Engine) JsonMarshal(v interface{}) (strJson string)
- func (e *Engine) JsonUnmarshal(strJson string, v interface{}) (err error)
- func (e *Engine) LeftJoin(strTableName string) *Join
- func (e *Engine) Limit(args ...int) *Engine
- func (e *Engine) Max(strColumn string, strAS ...string) *Engine
- func (e *Engine) Min(strColumn string, strAS ...string) *Engine
- func (e *Engine) Model(args ...interface{}) *Engine
- func (e *Engine) NearBy(strLngCol, strLatCol, strAS string, lng, lat, distance float64) *Engine
- func (e *Engine) Not(strColumn string, args ...interface{}) *Engine
- func (e *Engine) Offset(offset int) *Engine
- func (e *Engine) OnConflict(strColumns ...string) *Engine
- func (e *Engine) Open(strUrl string, options ...interface{}) *Engine
- func (e *Engine) Or(strFmt string, args ...interface{}) *Engine
- func (e *Engine) OrderBy(strColumns ...string) *Engine
- func (e *Engine) Page(pageNo, pageSize int) *Engine
- func (e *Engine) Ping() (err error)
- func (e *Engine) Query() (rowsAffected int64, err error)
- func (e *Engine) QueryEx() (rowsAffected, total int64, err error)
- func (e *Engine) QueryJson() (s string, err error)
- func (e *Engine) QueryMap(strQuery string, args ...interface{}) (rowsAffected int64, err error)
- func (e *Engine) QueryRaw(strQuery string, args ...interface{}) (rowsAffected int64, err error)
- func (e *Engine) RightJoin(strTableName string) *Join
- func (e *Engine) Select(strColumns ...string) *Engine
- func (e *Engine) SetCustomTag(tagNames ...string) *Engine
- func (e *Engine) SetLogFile(strPath string)
- func (e *Engine) SetPkName(strName string) *Engine
- func (e *Engine) SetReadOnly(columns ...string)
- func (e *Engine) Slave() *Engine
- func (e *Engine) SlowQuery(on bool, ms int)
- func (e *Engine) Sum(strColumn string, strAS ...string) *Engine
- func (e *Engine) Table(strNames ...string) *Engine
- func (e *Engine) ToSQL(operType OperType) (strSql string)
- func (e *Engine) TxBegin() (*Engine, error)
- func (e *Engine) TxCommit() error
- func (e *Engine) TxExec(strQuery string, args ...interface{}) (lastInsertId, rowsAffected int64, err error)
- func (e *Engine) TxFunc(fn func(tx *Engine) error) (err error)
- func (e *Engine) TxFuncContext(ctx context.Context, fn func(ctx context.Context, tx *Engine) error) (err error)
- func (e *Engine) TxGet(dest interface{}, strQuery string, args ...interface{}) (count int64, err error)
- func (e *Engine) TxHandle(handler TxHandler) (err error)
- func (e *Engine) TxRollback() error
- func (e *Engine) Update() (rowsAffected int64, err error)
- func (e *Engine) Upsert(strCustomizeUpdates ...string) (lastInsertId int64, err error)
- func (e *Engine) Where(strWhere string, args ...interface{}) *Engine
- type Fetcher
- type Join
- type JoinType
- type ModelReflector
- type ModelType
- type OperType
- type Options
- type SSH
- type TxHandler
- type UrlInfo
Constants ¶
const ( JoinType_Inner = 0 //inner join JoinType_Left = 1 //left join JoinType_Right = 2 //right join )
const ( TAG_NAME_DB = "db" TAG_NAME_JSON = "json" TAG_NAME_PROTOBUF = "protobuf" TAG_NAME_SQLCA = "sqlca" )
const ( SQLCA_TAG_VALUE_AUTO_INCR = "autoincr" //auto increment SQLCA_TAG_VALUE_READ_ONLY = "readonly" //read only (eg. created_at) SQLCA_TAG_VALUE_IGNORE = "-" //ignore )
const ( PROTOBUF_VALUE_NAME = "name" SQLCA_CHAR_ASTERISK = "*" )
const ( DRIVER_NAME_MYSQL = "mysql" DRIVER_NAME_POSTGRES = "postgres" DRIVER_NAME_SQLITE = "sqlite3" DRIVER_NAME_MSSQL = "mssql" DRIVER_NAME_REDIS = "redis" )
const ( DATABASE_KEY_NAME_WHERE = "WHERE" DATABASE_KEY_NAME_UPDATE = "UPDATE" DATABASE_KEY_NAME_SET = "SET" DATABASE_KEY_NAME_FROM = "FROM" DATABASE_KEY_NAME_DELETE = "DELETE" DATABASE_KEY_NAME_SELECT = "SELECT" DATABASE_KEY_NAME_DISTINCT = "DISTINCT" DATABASE_KEY_NAME_IN = "IN" DATABASE_KEY_NAME_NOT_IN = "NOT IN" DATABASE_KEY_NAME_OR = "OR" DATABASE_KEY_NAME_AND = "AND" DATABASE_KEY_NAME_INSERT = "INSERT INTO" DATABASE_KEY_NAME_VALUE = "VALUE" DATABASE_KEY_NAME_VALUES = "VALUES" DATABASE_KEY_NAME_FOR_UPDATE = "FOR UPDATE" DATABASE_KEY_NAME_ORDER_BY = "ORDER BY" DATABASE_KEY_NAME_ASC = "ASC" DATABASE_KEY_NAME_DESC = "DESC" DATABASE_KEY_NAME_HAVING = "HAVING" DATABASE_KEY_NAME_CASE = "CASE" DATABASE_KEY_NAME_WHEN = "WHEN" DATABASE_KEY_NAME_THEN = "THEN" DATABASE_KEY_NAME_ELSE = "ELSE" DATABASE_KEY_NAME_END = "END" DATABASE_KEY_NAME_ON = "ON" DATABASE_KEY_NAME_INNER_JOIN = "INNER JOIN" DATABASE_KEY_NAME_LEFT_JOIN = "LEFT JOIN" DATABASE_KEY_NAME_RIGHT_JOIN = "RIGHT JOIN" DATABASE_KEY_NAME_FULL_JOIN = "FULL OUTER JOIN" //MSSQL-SERVER DATABASE_KEY_NAME_SUM = "SUM" DATABASE_KEY_NAME_AVG = "AVG" DATABASE_KEY_NAME_MIN = "MIN" DATABASE_KEY_NAME_MAX = "MAX" )
const ( ORDER_BY_ASC = "asc" ORDER_BY_DESC = "desc" DEFAULT_CAHCE_EXPIRE_SECONDS = 24 * 60 * 60 DEFAULT_PRIMARY_KEY_NAME = "id" DEFAULT_SLOW_QUERY_ALERT_TIME = 500 //milliseconds )
const ( ModelType_Struct = 1 ModelType_Slice = 2 ModelType_Map = 3 ModelType_BaseType = 4 )
const ( URL_SCHEME_SEP = "://" URL_QUERY_SLAVE = "slave" URL_QUERY_MAX = "max" URL_QUERY_IDLE = "idle" URL_QUERY_CHARSET = "charset" )
const ( //DSN no windows authentication: "Provider=SQLOLEDB;port=1433;server=127.0.0.1\SQLEXPRESS;database=test;user id=sa;password=123456" //DSN with windows authentication: "Provider=SQLOLEDB;integrated security=SSPI;port=1433;Data Source=127.0.0.1;database=mydb" WINDOWS_DSN_PROVIDER_SQLOLEDB = "Provider=SQLOLEDB" WINDOWS_DSN_PORT = "Port" WINDOWS_DSN_DATA_SOURCE = "Server" WINDOWS_DSN_INITIAL_CATALOG = "Database" WINDOWS_DSN_USER_ID = "User Id" WINDOWS_DSN_PASSWORD = "Password" WINDOWS_DSN_INTEGRATED_SECURITY_SSPI = "Integrated Security=SSPI" )
const (
SSH_TUNNEL_PORT = 6033 //
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdapterType ¶
type AdapterType int
const ( AdapterSqlx_MySQL AdapterType = 1 //mysql AdapterSqlx_Postgres AdapterType = 2 //postgresql AdapterSqlx_Sqlite AdapterType = 3 //sqlite AdapterSqlx_Mssql AdapterType = 4 //mssql server AdapterCache_Redis AdapterType = 11 //redis )
func (AdapterType) DriverName ¶
func (a AdapterType) DriverName() string
func (AdapterType) GoString ¶
func (a AdapterType) GoString() string
func (AdapterType) String ¶
func (a AdapterType) String() string
type CaseWhen ¶ added in v1.2.9
type CaseWhen struct {
// contains filtered or unexported fields
}
type Decimal ¶ added in v1.1.5
type Decimal struct {
// contains filtered or unexported fields
}
func NewDecimal ¶ added in v1.1.5
func NewDecimal(v interface{}) (d Decimal)
func (Decimal) Cmp ¶ added in v1.1.5
Cmp compares the numbers represented by d and d2 and returns:
-1 if d < d2 0 if d == d2 +1 if d > d2
func (Decimal) Div ¶ added in v1.1.5
Div returns d / d2. If it doesn't divide exactly, the result will have DivisionPrecision digits after the decimal point.
func (Decimal) Equal ¶ added in v1.1.5
Equal returns whether the numbers represented by d and d2 are equal.
func (Decimal) Float64 ¶ added in v1.1.5
Float64 returns the nearest float64 value for d and a bool indicating whether f represents d exactly.
func (*Decimal) FromString ¶ added in v1.1.5
func (Decimal) GreaterThan ¶ added in v1.1.5
GreaterThan (GT) returns true when d is greater than d2.
func (Decimal) GreaterThanOrEqual ¶ added in v1.1.5
GreaterThanOrEqual (GTE) returns true when d is greater than or equal to d2.
func (Decimal) IsNegative ¶ added in v1.1.5
IsNegative return
true if d < 0 false if d == 0 false if d > 0
func (Decimal) IsPositive ¶ added in v1.1.5
IsPositive return
true if d > 0 false if d == 0 false if d < 0
func (Decimal) LessThanOrEqual ¶ added in v1.1.5
LessThanOrEqual (LTE) returns true when d is less than or equal to d2.
func (Decimal) MarshalBinary ¶ added in v1.1.5
MarshalBinary implements the encoding.BinaryMarshaler interface.
func (Decimal) MarshalJSON ¶ added in v1.1.5
MarshalJSON implements the json.Marshaler interface.
func (Decimal) MarshalText ¶ added in v1.1.5
MarshalText implements the encoding.TextMarshaler interface for XML serialization.
func (Decimal) Max ¶ added in v1.1.5
Max returns the largest Decimal that was passed in the arguments. To call this function with an array, you must do: This makes it harder to accidentally call Max with 0 arguments.
func (Decimal) Min ¶ added in v1.1.5
Min returns the smallest Decimal that was passed in the arguments. To call this function with an array, you must do: This makes it harder to accidentally call Min with 0 arguments.
func (Decimal) Round ¶ added in v1.1.5
Round rounds the decimal to places decimal places. If places < 0, it will round the integer part to the nearest 10^(-places).
Example:
NewFromFloat(5.45).Round(1).String() // output: "5.5" NewFromFloat(545).Round(-1).String() // output: "550"
func (*Decimal) Scan ¶ added in v1.1.5
Scan implements the sql.Scanner interface for database deserialization.
func (Decimal) String ¶ added in v1.1.5
String returns the string representation of the decimal with the fixed point.
Example:
d := New(-12345, -3) println(d.String())
Output:
-12.345
func (Decimal) StringFixed ¶ added in v1.1.5
StringFixed returns a rounded fixed-point string with places digits after the decimal point.
Example:
NewFromFloat(0).StringFixed(2) // output: "0.00" NewFromFloat(0).StringFixed(0) // output: "0" NewFromFloat(5.45).StringFixed(0) // output: "5" NewFromFloat(5.45).StringFixed(1) // output: "5.5" NewFromFloat(5.45).StringFixed(2) // output: "5.45" NewFromFloat(5.45).StringFixed(3) // output: "5.450" NewFromFloat(545).StringFixed(-1) // output: "550"
func (Decimal) StringScaled ¶ added in v1.1.5
StringScaled first scales the decimal then calls .String() on it. NOTE: buggy, unintuitive, and DEPRECATED! Use StringFixed instead.
func (Decimal) Sum ¶ added in v1.1.5
Sum returns the combined total of the provided first and rest Decimals
func (Decimal) Truncate ¶ added in v1.1.5
Truncate truncates off digits from the number, without rounding.
NOTE: precision is the last digit that will not be truncated (must be >= 0).
Example:
decimal.NewFromString("123.456").Truncate(2).String() // "123.45"
func (*Decimal) UnmarshalBinary ¶ added in v1.1.5
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. As a string representation is already used when encoding to text, this method stores that string as []byte
func (*Decimal) UnmarshalJSON ¶ added in v1.1.5
UnmarshalJSON implements the json.Unmarshaler interface.
func (*Decimal) UnmarshalText ¶ added in v1.1.5
UnmarshalText implements the encoding.TextUnmarshaler interface for XML deserialization.
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
func NewEngine ¶
func NewEngine(args ...interface{}) *Engine
args[0] data source name url args[1] options if length of args is 0, must call Open method manual
func (*Engine) AutoRollback ¶ added in v1.2.2
func (*Engine) Count ¶ added in v1.1.18
orm count records SELECT COUNT(*) FROM table WHERE ... count, err := e.Model(nil).Table("users").Where("delete=1").Count()
func (*Engine) ExecRaw ¶
func (e *Engine) ExecRaw(strQuery string, args ...interface{}) (rowsAffected, lastInsertId int64, err error)
use raw sql to insert/update database, results can not be cached to redis/memcached/memory... return rows affected and error, if err is not nil must be something wrong
func (*Engine) GeoHash ¶ added in v1.2.11
func (e *Engine) GeoHash(lng, lat float64, precision int) (strGeoHash string, strNeighbors []string)
encode geo hash string (precision 1~8) returns geo hash and neighbors areas
func (*Engine) GetAdapter ¶ added in v1.4.0
func (e *Engine) GetAdapter() AdapterType
func (*Engine) Insert ¶
orm insert return last insert id and error, if err is not nil must be something wrong NOTE: Model function is must be called before call this function
func (*Engine) JsonMarshal ¶ added in v1.3.0
func (*Engine) JsonUnmarshal ¶ added in v1.3.0
func (*Engine) Model ¶
orm model use to get result set, support single struct object or slice [pointer type] notice: will clone a new engine object for orm operations(query/update/insert/upsert)
func (*Engine) NearBy ¶ added in v1.2.10
-- select geo point as distance where distance <= n km (float64)
SELECT
a.*, ( 6371 * ACOS ( COS( RADIANS( a.lat ) ) * COS( RADIANS( 28.8039097230 ) ) * COS( RADIANS( 121.5619236231 ) - RADIANS( a.lng ) ) + SIN( RADIANS( a.lat ) ) * SIN( RADIANS( 28.8039097230 ) ) ) ) AS distance
FROM
t_address a
HAVING distance <= 200 -- less than or equal 200km ORDER BY
distance LIMIT 10
func (*Engine) OnConflict ¶
set the conflict columns for upsert only for postgresql
func (*Engine) Open ¶
open a database or cache connection pool strUrl:
data source name
[mysql] Open("mysql://root:123456@127.0.0.1:3306/test?charset=utf8mb4&slave=false&max=100&idle=1") [postgres] Open("postgres://root:123456@127.0.0.1:5432/test?sslmode=disable&slave=false&max=100&idle=1") [mssql] Open("mssql://sa:123456@127.0.0.1:1433/mydb?instance=SQLExpress&windows=false&max=100&idle=1") [sqlite] Open("sqlite:///var/lib/test.db")
cache config [redis-alone] Open("redis://123456@127.0.0.1:6379/cluster?db=0") [redis-cluster] Open("redis://123456@127.0.0.1:6379/cluster?db=0&replicate=127.0.0.1:6380,127.0.0.1:6381")
options:
- specify master or slave, MySQL/Postgres (Options)
- cache data expire seconds, just for redis (Integer)
func (*Engine) Page ¶ added in v1.2.11
page query SELECT ... FROM ... WHERE ... LIMIT (pageNo*pageSize), pageSize
func (*Engine) Query ¶
orm query return rows affected and error, if err is not nil must be something wrong NOTE: Model function is must be called before call this function if slave == true, try query from a slave connection, if not exist query from master
func (*Engine) QueryEx ¶ added in v1.7.0
orm query with total count return rows affected and error, if err is not nil must be something wrong NOTE: Model function is must be called before call this function if slave == true, try query from a slave connection, if not exist query from master
func (*Engine) QueryMap ¶
use raw sql to query results into a map slice (model type is []map[string]string) return results and error NOTE: Model function is must be called before call this function
func (*Engine) QueryRaw ¶
use raw sql to query results return rows affected and error, if err is not nil must be something wrong NOTE: Model function is must be called before call this function
func (*Engine) SetCustomTag ¶ added in v1.0.6
set your customer tag for db query/insert/update (eg. go structure generated by protobuf not contain 'db' tag) this function must calls before Model()
func (*Engine) SetLogFile ¶ added in v1.0.7
set log file
func (*Engine) SetReadOnly ¶ added in v1.1.14
set read only columns
func (*Engine) SlowQuery ¶ added in v1.2.9
slow query alert on or off on -> true/false ms -> milliseconds (can be 0 if on is false)
func (*Engine) TxFunc ¶ added in v1.2.8
execute transaction by customize function auto rollback when function return error
func (*Engine) TxFuncContext ¶ added in v1.2.9
func (e *Engine) TxFuncContext(ctx context.Context, fn func(ctx context.Context, tx *Engine) error) (err error)
execute transaction by customize function with context auto rollback when function return error
func (*Engine) TxHandle ¶ added in v1.2.8
execute transaction by customize handler auto rollback when handler return error
func (*Engine) TxRollback ¶ added in v1.0.3
func (*Engine) Update ¶
orm update from model strColumns... if set, columns will be updated, if none all columns in model will be updated except primary key return rows affected and error, if err is not nil must be something wrong NOTE: Model function is must be called before call this function
func (*Engine) Upsert ¶
orm insert or update if key(s) conflict return last insert id and error, if err is not nil must be something wrong, if your primary key is not a int/int64 type, maybe id return 0 NOTE: Model function is must be called before call this function and call OnConflict function when you are on postgresql updates -> customize updates condition when key(s) conflict [MySQL] INSERT INTO messages(id, message_type, unread_count) VALUES('10000', '2', '1', '3') ON DUPLICATE KEY UPDATE message_type=values(message_type), unread_count=unread_count+values(unread_count) --------------------------------------------------------------------------------------------------------------------------------------- e.Model(&do).Table("messages").Upsert("message_type=values(message_type)", "unread_count=unread_count+values(unread_count)") ---------------------------------------------------------------------------------------------------------------------------------------
type ModelReflector ¶
type ModelReflector struct {
// contains filtered or unexported fields
}
func (*ModelReflector) ToMap ¶
func (s *ModelReflector) ToMap(tagNames ...string) map[string]interface{}
parse struct tag and value to map
type OperType ¶
type OperType int
const ( OperType_Query OperType = 1 // orm: query sql OperType_Update OperType = 2 // orm: update sql OperType_Insert OperType = 3 // orm: insert sql OperType_Upsert OperType = 4 // orm: insert or update sql OperType_Tx OperType = 5 // orm: tx sql OperType_QueryRaw OperType = 6 // raw: query sql into model OperType_ExecRaw OperType = 7 // raw: insert/update sql OperType_QueryMap OperType = 8 // raw: query sql into map OperType_Delete OperType = 9 // orm: delete sql OperType_ForUpdate OperType = 10 // orm: select ... for update sql )
type SSH ¶ added in v1.3.7
type SSH struct { User string //SSH tunnel server login account Password string //SSH tunnel server login password PrivateKey string //SSH tunnel server private key, eg. "/home/test/.ssh/private-key.pem" Host string //SSH tunnel server host [ip or domain], default port 22 if not specified // contains filtered or unexported fields }