add comments

This commit is contained in:
MaysWind
2020-12-25 23:49:51 +08:00
parent becfb0bed5
commit 7d9b3290d8
4 changed files with 25 additions and 0 deletions
+2
View File
@@ -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
View File
@@ -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
+3
View File
@@ -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)
+14
View File
@@ -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,