db

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2024 License: MIT Imports: 15 Imported by: 0

README

数据库

底层使用gorm库进行封装,支持多种数据库、支持单库与多库模式。

多库模式基于gorm.io/plugin/dbresolver实现。

配置

# 单库模式, key设置为db
driver: mysql
dsn: root:password@tcp(127.0.0.1:3306)/db?charset=utf8mb4&collation=utf8mb4_unicode_ci&parseTime=True&loc=Local&multiStatements=true
prefix: prefix_

# 多库模式, key设置为dbs
default: # 默认链接, 必须设置
  driver: mysql
  dsn: root:password@tcp(127.0.0.1:3306)/db?charset=utf8mb4&collation=utf8mb4_unicode_ci&parseTime=True&loc=Local&multiStatements=true
  prefix: prefix_
clickhouse: # clickhouse
  driver: clickhouse
  dsn: clickhouse://127.0.0.1:9009/default?read_timeout=10s

使用

db.Default().Model(&User{}).Where("id = ?", 1).First(&user)
db.Ctx(ctx).Model(&User{}).Where("id = ?", 1).First(&user)

// 多库
db.With("clickhouse").Model(&User{}).Where("id = ?", 1).First(&user)
db.CtxWith(ctx, "clickhouse").Model(&User{}).Where("id = ?", 1).First(&user)

驱动

默认支持mysql,其它驱动需要使用db.RegisterDriver进行注册。可以参考clickhouse的实现。

import (
_ "github.com/codfrm/cago/database/db/clickhouse"
)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContextWith added in v1.1.0

func ContextWith(ctx context.Context, key string) context.Context

func ContextWithDB added in v1.1.0

func ContextWithDB(ctx context.Context, db *gorm.DB) context.Context

func Ctx

func Ctx(ctx context.Context) *gorm.DB

func CtxWith added in v1.1.0

func CtxWith(ctx context.Context, key string) *gorm.DB

func Default

func Default() *gorm.DB

func RecordNotFound

func RecordNotFound(err error) bool

RecordNotFound 判断是否是记录不存在的错误

func RegisterDriver added in v1.1.0

func RegisterDriver(t Driver, f func(*Config) gorm.Dialector)

func With added in v1.1.0

func With(key string) *gorm.DB

Types

type Config

type Config struct {
	Driver Driver `yaml:"driver"`
	Dsn    string `yaml:"dsn"`
	Prefix string `yaml:"prefix"`
}

type DB added in v1.1.0

type DB struct {
	// contains filtered or unexported fields
}

func Database

func Database() *DB

Database gorm数据库封装

func (*DB) CloseHandle added in v1.1.0

func (d *DB) CloseHandle()

func (*DB) Start added in v1.1.0

func (d *DB) Start(ctx context.Context, config *configs.Config) error

type Driver added in v1.1.0

type Driver string
const (
	MySQL      Driver = "mysql"
	Clickhouse Driver = "clickhouse"
)

type GroupConfig added in v1.1.0

type GroupConfig map[string]*Config

type Logger added in v1.1.0

type Logger struct {
	logger.Config
	// contains filtered or unexported fields
}

func NewLogger added in v1.1.0

func NewLogger(driver Driver, config logger.Config) *Logger

func (*Logger) Error added in v1.1.0

func (l *Logger) Error(ctx context.Context, msg string, args ...interface{})

func (*Logger) Info added in v1.1.0

func (l *Logger) Info(ctx context.Context, msg string, args ...interface{})

func (*Logger) LogMode added in v1.1.0

func (l *Logger) LogMode(level logger.LogLevel) logger.Interface

func (*Logger) ParamsFilter added in v1.1.0

func (l *Logger) ParamsFilter(ctx context.Context, sql string, params ...interface{}) (string, []interface{})

ParamsFilter Trace print sql message

func (*Logger) Trace added in v1.1.0

func (l *Logger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error)

func (*Logger) Warn added in v1.1.0

func (l *Logger) Warn(ctx context.Context, msg string, args ...interface{})

type Option added in v1.1.0

type Option func(*Options)

type Options added in v1.1.0

type Options struct {
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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