diff options
Diffstat (limited to 'vendor/github.com/uptrace/bun/bun.go')
-rw-r--r-- | vendor/github.com/uptrace/bun/bun.go | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/vendor/github.com/uptrace/bun/bun.go b/vendor/github.com/uptrace/bun/bun.go new file mode 100644 index 000000000..92ebe691a --- /dev/null +++ b/vendor/github.com/uptrace/bun/bun.go @@ -0,0 +1,122 @@ +package bun + +import ( + "context" + "fmt" + "reflect" + + "github.com/uptrace/bun/schema" +) + +type ( + Safe = schema.Safe + Ident = schema.Ident +) + +type NullTime = schema.NullTime + +type BaseModel = schema.BaseModel + +type ( + BeforeScanHook = schema.BeforeScanHook + AfterScanHook = schema.AfterScanHook +) + +type BeforeSelectHook interface { + BeforeSelect(ctx context.Context, query *SelectQuery) error +} + +type AfterSelectHook interface { + AfterSelect(ctx context.Context, query *SelectQuery) error +} + +type BeforeInsertHook interface { + BeforeInsert(ctx context.Context, query *InsertQuery) error +} + +type AfterInsertHook interface { + AfterInsert(ctx context.Context, query *InsertQuery) error +} + +type BeforeUpdateHook interface { + BeforeUpdate(ctx context.Context, query *UpdateQuery) error +} + +type AfterUpdateHook interface { + AfterUpdate(ctx context.Context, query *UpdateQuery) error +} + +type BeforeDeleteHook interface { + BeforeDelete(ctx context.Context, query *DeleteQuery) error +} + +type AfterDeleteHook interface { + AfterDelete(ctx context.Context, query *DeleteQuery) error +} + +type BeforeCreateTableHook interface { + BeforeCreateTable(ctx context.Context, query *CreateTableQuery) error +} + +type AfterCreateTableHook interface { + AfterCreateTable(ctx context.Context, query *CreateTableQuery) error +} + +type BeforeDropTableHook interface { + BeforeDropTable(ctx context.Context, query *DropTableQuery) error +} + +type AfterDropTableHook interface { + AfterDropTable(ctx context.Context, query *DropTableQuery) error +} + +//------------------------------------------------------------------------------ + +type InValues struct { + slice reflect.Value + err error +} + +var _ schema.QueryAppender = InValues{} + +func In(slice interface{}) InValues { + v := reflect.ValueOf(slice) + if v.Kind() != reflect.Slice { + return InValues{ + err: fmt.Errorf("bun: In(non-slice %T)", slice), + } + } + return InValues{ + slice: v, + } +} + +func (in InValues) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error) { + if in.err != nil { + return nil, in.err + } + return appendIn(fmter, b, in.slice), nil +} + +func appendIn(fmter schema.Formatter, b []byte, slice reflect.Value) []byte { + sliceLen := slice.Len() + for i := 0; i < sliceLen; i++ { + if i > 0 { + b = append(b, ", "...) + } + + elem := slice.Index(i) + if elem.Kind() == reflect.Interface { + elem = elem.Elem() + } + + if elem.Kind() == reflect.Slice { + b = append(b, '(') + b = appendIn(fmter, b, elem) + b = append(b, ')') + } else { + b = fmter.AppendValue(b, elem) + } + } + return b +} |