45 lines
716 B
Go
45 lines
716 B
Go
package model
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
var _ ParseWhere = SqlBuilder{}
|
|
var globalBb dbQuery
|
|
|
|
func InitDB(db dbQuery) {
|
|
globalBb = db
|
|
}
|
|
|
|
type QueryFn func(context.Context, any, string, ...any) error
|
|
|
|
type Model interface {
|
|
PrimaryKey() string
|
|
Table() string
|
|
}
|
|
|
|
type ParseWhere interface {
|
|
ParseWhere(*[][]any) (string, []any, error)
|
|
}
|
|
|
|
type AndWhere interface {
|
|
AndWhere(field, operator, val, fieldType string) ParseWhere
|
|
}
|
|
|
|
type dbQuery interface {
|
|
Select(context.Context, any, string, ...any) error
|
|
Get(context.Context, any, string, ...any) error
|
|
}
|
|
|
|
type SqlBuilder [][]string
|
|
|
|
func Table[T Model]() string {
|
|
var r T
|
|
return r.Table()
|
|
}
|
|
|
|
func PrimaryKey[T Model]() string {
|
|
var r T
|
|
return r.PrimaryKey()
|
|
}
|