db

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Feb 2, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EnforceReadOnly

func EnforceReadOnly(sql string, unsafeAllowWrite bool) *errors.XError

func IsReadOnlySQL

func IsReadOnlySQL(sql string) (bool, string)

IsReadOnlySQL 做保守判定:默认拒绝;仅允许文档明确的只读语句。 解析失败/多语句时一律返回 false。

func Register

func Register(name string, d Driver)

func RegisteredNames

func RegisteredNames() []string

Types

type ConnOptions

type ConnOptions struct {
	DSN      string // 原生 DSN(优先级最高)
	Host     string
	Port     int
	User     string
	Password string
	Database string
	Params   map[string]string // 额外参数
	Dialer   Dialer            // 自定义 dialer(如 SSH tunnel)
}

ConnOptions 是通用连接参数(由 config/CLI/ENV 合并而来)。

type Dialer

type Dialer interface {
	DialContext(ctx context.Context, network, addr string) (net.Conn, error)
}

Dialer 用于自定义网络连接(如 SSH tunnel)。

type Driver

type Driver interface {
	// Open 返回 *sql.DB;由具体 driver 实现连接参数解析。
	Open(ctx context.Context, opts ConnOptions) (*sql.DB, *errors.XError)
}

Driver 是数据库驱动的最小抽象。

func Get

func Get(name string) (Driver, bool)

type QueryOptions

type QueryOptions struct {
	UnsafeAllowWrite bool   // 允许写操作(绕过只读保护)
	DBType           string // 数据库类型:mysql 或 pg
}

QueryOptions 包含查询执行的选项。

type QueryResult

type QueryResult struct {
	Columns []string         `json:"columns" yaml:"columns"`
	Rows    []map[string]any `json:"rows" yaml:"rows"`
}

QueryResult 是通用查询结果。

func Query

func Query(ctx context.Context, db *sql.DB, query string, opts QueryOptions) (*QueryResult, *errors.XError)

Query 执行 SQL 查询并返回结果。 当 opts.UnsafeAllowWrite=false 时,会启用双重只读保护: 1. SQL 语句静态分析(客户端) 2. 数据库事务级只读模式(服务端) 当 opts.UnsafeAllowWrite=true 时,绕过所有只读保护。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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