adapter

package
v0.0.0-...-8d40830 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 13, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContextWithSqlDo

func ContextWithSqlDo(ctx context.Context, db SqlDo) context.Context

ContextWithSqlDo 向 context 注入 SqlDo,供下游辅助函数复用。

func Register

func Register(a Adapter, aliases ...string)

Register 按驱动名及别名注册适配器。

Types

type Adapter

type Adapter interface {
	DB
	DriverName() string
	Dialect() Dialect
	Catalog(ctx context.Context) (*sqlbuilder.Tables, error)
}

Adapter 表示带有结构探查能力的驱动适配器。

func Open

func Open(ctx context.Context, dsn string) (a Adapter, err error)

Open 根据 DSN scheme 选择已注册适配器并打开连接。

type Connector

type Connector interface {
	Open(ctx context.Context, dsn *url.URL) (Adapter, error)
}

Connector 根据解析后的 DSN 打开一个 Adapter。

type DB

type DB interface {
	Exec(ctx context.Context, expr sqlfrag.Fragment) (sql.Result, error)
	Query(ctx context.Context, expr sqlfrag.Fragment) (*sql.Rows, error)
	Transaction(ctx context.Context, action func(ctx context.Context) error) error
	Close() error
}

DB 定义了存储适配器依赖的最小数据库操作集合。

func Wrap

func Wrap(d *sql.DB, convertErr func(err error) error) DB

Wrap 把 *sql.DB 包装为仓库内部统一使用的 DB 接口。

type Dialect

type Dialect interface {
	CreateTableIsNotExists(t sqlbuilder.Table) []sqlfrag.Fragment
	DropTable(t sqlbuilder.Table) sqlfrag.Fragment
	TruncateTable(t sqlbuilder.Table) sqlfrag.Fragment

	AddColumn(col sqlbuilder.Column) sqlfrag.Fragment
	RenameColumn(col sqlbuilder.Column, target sqlbuilder.Column) sqlfrag.Fragment
	ModifyColumn(col sqlbuilder.Column, prev sqlbuilder.Column) sqlfrag.Fragment
	DropColumn(col sqlbuilder.Column) sqlfrag.Fragment

	AddIndex(key sqlbuilder.Key) sqlfrag.Fragment
	DropIndex(key sqlbuilder.Key) sqlfrag.Fragment

	DataType(columnDef sqlbuilder.ColumnDef) sqlfrag.Fragment
}

Dialect 负责为具体数据库方言构造 DDL 片段。

type SqlDo

type SqlDo interface {
	ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)
	QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)
}

SqlDo 抽象了原始 SQL 辅助函数依赖的最小执行接口。

func SqlDoFromContext

func SqlDoFromContext(ctx context.Context) SqlDo

SqlDoFromContext 返回 context 中注入的 SqlDo。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL