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