database

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package database 提供 SDK 级别的多站点数据库连接管理。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterSiteInitFunc

func RegisterSiteInitFunc(fn SiteInitFunc)

RegisterSiteInitFunc 注册站点数据库初始化回调(线程安全,幂等追加)。

Types

type DBConfig

type DBConfig struct {
	Host     string `json:"host"`
	Port     int    `json:"port"`
	User     string `json:"user"`
	Password string `json:"password"`
	DBName   string `json:"database"`
	Charset  string `json:"charset"`
}

DBConfig 站点独立库连接配置(从 Site.DBConfig JSON 解析)。

type DBManager

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

DBManager 多站点数据库连接管理器。

masterDB 用于全局级操作(管理员/角色/插件等全局表), defaultDB 用于 shared 模式站点的数据操作, siteDBs 缓存 independent 模式站点的独立连接(按 site_id 索引)。

func GetManager

func GetManager() *DBManager

GetManager 返回已初始化的全局 DBManager。

func InitManager

func InitManager(masterDB, defaultDB *gorm.DB) *DBManager

InitManager 初始化全局 DBManager(幂等,sync.Once 保护)。

func (*DBManager) CloseSiteDB

func (m *DBManager) CloseSiteDB(siteID uint)

CloseSiteDB 关闭指定站点的独立数据库连接并从缓存移除。

func (*DBManager) GetDefaultDB

func (m *DBManager) GetDefaultDB() *gorm.DB

GetDefaultDB 返回默认站点库连接(shared 模式共用)。

func (*DBManager) GetMasterDB

func (m *DBManager) GetMasterDB() *gorm.DB

GetMasterDB 返回全局主库连接。

func (*DBManager) GetSiteDB

func (m *DBManager) GetSiteDB(site *sdkmodel.Site) *gorm.DB

GetSiteDB 根据站点配置返回对应的数据库连接:

  • shared → 返回 defaultDB
  • independent → 懒加载并缓存独立库连接

func (*DBManager) InitSiteDB

func (m *DBManager) InitSiteDB(site *sdkmodel.Site) error

InitSiteDB 为 independent 模式站点主动建立连接并执行 AutoMigrate + Seed。 shared 模式站点直接返回 nil。

type SiteInitFunc

type SiteInitFunc func(db *gorm.DB) error

SiteInitFunc 是站点数据库初始化回调函数(AutoMigrate + Seed)。

Jump to

Keyboard shortcuts

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