interfaces.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package gorm
  2. import (
  3. "context"
  4. "database/sql"
  5. "gorm.io/gorm/clause"
  6. "gorm.io/gorm/schema"
  7. )
  8. // Dialector GORM database dialector
  9. type Dialector interface {
  10. Name() string
  11. Initialize(*DB) error
  12. Migrator(db *DB) Migrator
  13. DataTypeOf(*schema.Field) string
  14. DefaultValueOf(*schema.Field) clause.Expression
  15. BindVarTo(writer clause.Writer, stmt *Statement, v interface{})
  16. QuoteTo(clause.Writer, string)
  17. Explain(sql string, vars ...interface{}) string
  18. }
  19. // Plugin GORM plugin interface
  20. type Plugin interface {
  21. Name() string
  22. Initialize(*DB) error
  23. }
  24. // ConnPool db conns pool interface
  25. type ConnPool interface {
  26. PrepareContext(ctx context.Context, query string) (*sql.Stmt, error)
  27. ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
  28. QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
  29. QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
  30. }
  31. // SavePointerDialectorInterface save pointer interface
  32. type SavePointerDialectorInterface interface {
  33. SavePoint(tx *DB, name string) error
  34. RollbackTo(tx *DB, name string) error
  35. }
  36. type TxBeginner interface {
  37. BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error)
  38. }
  39. type ConnPoolBeginner interface {
  40. BeginTx(ctx context.Context, opts *sql.TxOptions) (ConnPool, error)
  41. }
  42. type TxCommitter interface {
  43. Commit() error
  44. Rollback() error
  45. }
  46. // Valuer gorm valuer interface
  47. type Valuer interface {
  48. GormValue(context.Context, *DB) clause.Expr
  49. }
  50. type GetDBConnector interface {
  51. GetDBConn() (*sql.DB, error)
  52. }