github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/sqlx/interface.go (about) 1 package sqlx 2 3 import ( 4 "database/sql" 5 ) 6 7 type SqlExecutor interface { 8 Exec(query string, args ...interface{}) (sql.Result, error) 9 Query(query string, args ...interface{}) (*sql.Rows, error) 10 } 11 12 type Model interface { 13 TableName() string 14 } 15 16 type FieldNames []string 17 18 func (fieldNames FieldNames) Map() map[string]bool { 19 m := make(map[string]bool, len(fieldNames)) 20 for _, fieldName := range fieldNames { 21 m[fieldName] = true 22 } 23 return m 24 } 25 26 type Indexes map[string]FieldNames 27 28 type IndexDeclarer func() (indexName string, fieldNames FieldNames) 29 30 type WithPrimaryKey interface { 31 PrimaryKey() FieldNames 32 } 33 34 type WithIndexes interface { 35 Indexes() Indexes 36 } 37 38 type WithUniqueIndexes interface { 39 UniqueIndexes() Indexes 40 } 41 42 type WithComments interface { 43 Comments() map[string]string 44 } 45 46 type Time interface { 47 SetNow() 48 IsZero() bool 49 } 50 51 type ZeroSetter interface { 52 SetToZero() 53 }