mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-22 02:34:26 +08:00
add comments
This commit is contained in:
@@ -2,10 +2,12 @@ package datastore
|
|||||||
|
|
||||||
import "xorm.io/xorm"
|
import "xorm.io/xorm"
|
||||||
|
|
||||||
|
// Database represents a database instance
|
||||||
type Database struct {
|
type Database struct {
|
||||||
*xorm.EngineGroup
|
*xorm.EngineGroup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DoTransaction runs a new database transaction
|
||||||
func (db *Database) DoTransaction(fn func(sess *xorm.Session) error) (err error) {
|
func (db *Database) DoTransaction(fn func(sess *xorm.Session) error) (err error) {
|
||||||
sess := db.NewSession()
|
sess := db.NewSession()
|
||||||
defer sess.Close()
|
defer sess.Close()
|
||||||
|
|||||||
@@ -6,22 +6,27 @@ import (
|
|||||||
"github.com/mayswind/lab/pkg/errs"
|
"github.com/mayswind/lab/pkg/errs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// DataStore represents a data storage containing a series of database shards
|
||||||
type DataStore struct {
|
type DataStore struct {
|
||||||
databases []*Database
|
databases []*Database
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Choose returns a database instance by sharding key
|
||||||
func (s *DataStore) Choose(key int64) *Database {
|
func (s *DataStore) Choose(key int64) *Database {
|
||||||
return s.databases[0]
|
return s.databases[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Query returns a new database session in a specific database by sharding key
|
||||||
func (s *DataStore) Query(key int64) *xorm.Session {
|
func (s *DataStore) Query(key int64) *xorm.Session {
|
||||||
return s.Choose(key).NewSession()
|
return s.Choose(key).NewSession()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DoTransaction runs a new database transaction in a specific database by sharding key
|
||||||
func (s *DataStore) DoTransaction(key int64, fn func(sess *xorm.Session) error) (err error) {
|
func (s *DataStore) DoTransaction(key int64, fn func(sess *xorm.Session) error) (err error) {
|
||||||
return s.Choose(key).DoTransaction(fn)
|
return s.Choose(key).DoTransaction(fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SyncStructs updates database structs by database models
|
||||||
func (s *DataStore) SyncStructs(beans ...interface{}) error {
|
func (s *DataStore) SyncStructs(beans ...interface{}) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
@@ -36,6 +41,7 @@ func (s *DataStore) SyncStructs(beans ...interface{}) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewDataStore returns a new data storage by a series of database
|
||||||
func NewDataStore(databases ...*Database) (*DataStore, error) {
|
func NewDataStore(databases ...*Database) (*DataStore, error) {
|
||||||
if len(databases) < 1 {
|
if len(databases) < 1 {
|
||||||
return nil, errs.ErrDatabaseIsNull
|
return nil, errs.ErrDatabaseIsNull
|
||||||
|
|||||||
@@ -16,16 +16,19 @@ import (
|
|||||||
"github.com/mayswind/lab/pkg/settings"
|
"github.com/mayswind/lab/pkg/settings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// DataStoreContainer contains all data storages
|
||||||
type DataStoreContainer struct {
|
type DataStoreContainer struct {
|
||||||
UserStore *DataStore
|
UserStore *DataStore
|
||||||
TokenStore *DataStore
|
TokenStore *DataStore
|
||||||
UserDataStore *DataStore
|
UserDataStore *DataStore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize a data storage container singleton instance
|
||||||
var (
|
var (
|
||||||
Container = &DataStoreContainer{}
|
Container = &DataStoreContainer{}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// InitializeDataStore initializes data storage according to the config
|
||||||
func InitializeDataStore(config *settings.Config) error {
|
func InitializeDataStore(config *settings.Config) error {
|
||||||
database, err := initializeDatabase(config.DatabaseConfig)
|
database, err := initializeDatabase(config.DatabaseConfig)
|
||||||
|
|
||||||
|
|||||||
@@ -7,43 +7,53 @@ import (
|
|||||||
"github.com/mayswind/lab/pkg/settings"
|
"github.com/mayswind/lab/pkg/settings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// XOrmLoggerAdapter represents the logger adapter for xorm
|
||||||
type XOrmLoggerAdapter struct {
|
type XOrmLoggerAdapter struct {
|
||||||
enable bool
|
enable bool
|
||||||
logLevel settings.Level
|
logLevel settings.Level
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Debug logs debug log
|
||||||
func (logger XOrmLoggerAdapter) Debug(v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Debug(v ...interface{}) {
|
||||||
log.SqlQuery(v...)
|
log.SqlQuery(v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Debugf logs debug log with custom format
|
||||||
func (logger XOrmLoggerAdapter) Debugf(format string, v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Debugf(format string, v ...interface{}) {
|
||||||
log.SqlQueryf(format, v...)
|
log.SqlQueryf(format, v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Info logs info log
|
||||||
func (logger XOrmLoggerAdapter) Info(v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Info(v ...interface{}) {
|
||||||
log.SqlQuery(v...)
|
log.SqlQuery(v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Infof logs info log with custom format
|
||||||
func (logger XOrmLoggerAdapter) Infof(format string, v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Infof(format string, v ...interface{}) {
|
||||||
log.SqlQueryf(format, v...)
|
log.SqlQueryf(format, v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warn logs warn log
|
||||||
func (logger XOrmLoggerAdapter) Warn(v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Warn(v ...interface{}) {
|
||||||
log.SqlQuery(v...)
|
log.SqlQuery(v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Warnf logs warn log with custom format
|
||||||
func (logger XOrmLoggerAdapter) Warnf(format string, v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Warnf(format string, v ...interface{}) {
|
||||||
log.SqlQueryf(format, v...)
|
log.SqlQueryf(format, v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Error logs error log
|
||||||
func (logger XOrmLoggerAdapter) Error(v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Error(v ...interface{}) {
|
||||||
log.SqlQuery(v...)
|
log.SqlQuery(v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Errorf logs error log with custom format
|
||||||
func (logger XOrmLoggerAdapter) Errorf(format string, v ...interface{}) {
|
func (logger XOrmLoggerAdapter) Errorf(format string, v ...interface{}) {
|
||||||
log.SqlQueryf(format, v...)
|
log.SqlQueryf(format, v...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Level returns the logger level
|
||||||
func (logger XOrmLoggerAdapter) Level() xorm.LogLevel {
|
func (logger XOrmLoggerAdapter) Level() xorm.LogLevel {
|
||||||
if logger.logLevel == settings.LOGLEVEL_DEBUG {
|
if logger.logLevel == settings.LOGLEVEL_DEBUG {
|
||||||
return xorm.LOG_DEBUG
|
return xorm.LOG_DEBUG
|
||||||
@@ -58,6 +68,7 @@ func (logger XOrmLoggerAdapter) Level() xorm.LogLevel {
|
|||||||
return xorm.LOG_INFO
|
return xorm.LOG_INFO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetLevel sets the logger level
|
||||||
func (logger XOrmLoggerAdapter) SetLevel(l xorm.LogLevel) {
|
func (logger XOrmLoggerAdapter) SetLevel(l xorm.LogLevel) {
|
||||||
if l == xorm.LOG_DEBUG {
|
if l == xorm.LOG_DEBUG {
|
||||||
logger.logLevel = settings.LOGLEVEL_DEBUG
|
logger.logLevel = settings.LOGLEVEL_DEBUG
|
||||||
@@ -72,14 +83,17 @@ func (logger XOrmLoggerAdapter) SetLevel(l xorm.LogLevel) {
|
|||||||
logger.logLevel = settings.LOGLEVEL_INFO
|
logger.logLevel = settings.LOGLEVEL_INFO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ShowSQL sets whether write sql to log
|
||||||
func (logger XOrmLoggerAdapter) ShowSQL(show ...bool) {
|
func (logger XOrmLoggerAdapter) ShowSQL(show ...bool) {
|
||||||
logger.enable = len(show) > 0 && show[0]
|
logger.enable = len(show) > 0 && show[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsShowSQL returns whether write sql to log
|
||||||
func (logger XOrmLoggerAdapter) IsShowSQL() bool {
|
func (logger XOrmLoggerAdapter) IsShowSQL() bool {
|
||||||
return logger.enable
|
return logger.enable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewXOrmLoggerAdapter returns a new XOrmLoggerAdapter instance
|
||||||
func NewXOrmLoggerAdapter(showSql bool, logLevel settings.Level) xorm.Logger {
|
func NewXOrmLoggerAdapter(showSql bool, logLevel settings.Level) xorm.Logger {
|
||||||
return XOrmLoggerAdapter{
|
return XOrmLoggerAdapter{
|
||||||
enable: showSql,
|
enable: showSql,
|
||||||
|
|||||||
Reference in New Issue
Block a user