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  }