types.go 2.6 KB
Newer Older
S
slene 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
package orm

import (
	"database/sql"
	"reflect"
)

type Fielder interface {
	String() string
	FieldType() int
	SetRaw(interface{}) error
	RawValue() interface{}
}

type Modeler interface {
	Init(Modeler) Modeler
	IsInited() bool
	Clean() FieldErrors
	CleanFields(string) FieldErrors
	GetTableName() string
}

type Ormer interface {
	Object(Modeler) ObjectSeter
	QueryTable(interface{}) QuerySeter
	Using(string) error
	Begin() error
	Commit() error
	Rollback() error
	Raw(string, ...interface{}) RawSeter
}

type ObjectSeter interface {
	Insert() (int64, error)
	Update() (int64, error)
	Delete() (int64, error)
}

type Inserter interface {
	Insert(Modeler) (int64, error)
	Close() error
}

type QuerySeter interface {
	Filter(string, ...interface{}) QuerySeter
	Exclude(string, ...interface{}) QuerySeter
	Limit(int, ...int64) QuerySeter
	Offset(int64) QuerySeter
	OrderBy(...string) QuerySeter
	RelatedSel(...interface{}) QuerySeter
	Clone() QuerySeter
	SetCond(*Condition) error
	Count() (int64, error)
	Update(Params) (int64, error)
	Delete() (int64, error)
	PrepareInsert() (Inserter, error)

	All(interface{}) (int64, error)
	One(Modeler) error
	Values(*[]Params, ...string) (int64, error)
	ValuesList(*[]ParamsList, ...string) (int64, error)
	ValuesFlat(*ParamsList, string) (int64, error)
}

type RawPreparer interface {
	Close() error
}

type RawSeter interface {
	Exec() (int64, error)
	Mapper(...interface{}) (int64, error)
	Values(*[]Params) (int64, error)
	ValuesList(*[]ParamsList) (int64, error)
	ValuesFlat(*ParamsList) (int64, error)
	Prepare() (RawPreparer, error)
}

type dbQuerier interface {
	Prepare(query string) (*sql.Stmt, error)
	Exec(query string, args ...interface{}) (sql.Result, error)
	Query(query string, args ...interface{}) (*sql.Rows, error)
	QueryRow(query string, args ...interface{}) *sql.Row
}

type dbBaser interface {
	Insert(dbQuerier, *modelInfo, reflect.Value) (int64, error)
	InsertStmt(*sql.Stmt, *modelInfo, reflect.Value) (int64, error)
	Update(dbQuerier, *modelInfo, reflect.Value) (int64, error)
	Delete(dbQuerier, *modelInfo, reflect.Value) (int64, error)
	ReadBatch(dbQuerier, *querySet, *modelInfo, *Condition, interface{}) (int64, error)
	UpdateBatch(dbQuerier, *querySet, *modelInfo, *Condition, Params) (int64, error)
	DeleteBatch(dbQuerier, *querySet, *modelInfo, *Condition) (int64, error)
	Count(dbQuerier, *querySet, *modelInfo, *Condition) (int64, error)
	GetOperatorSql(*modelInfo, string, []interface{}) (string, []interface{})
	PrepareInsert(dbQuerier, *modelInfo) (*sql.Stmt, error)
	ReadValues(dbQuerier, *querySet, *modelInfo, *Condition, []string, interface{}) (int64, error)
}