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" 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
View File
@@ -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
+3
View File
@@ -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)
+14
View File
@@ -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,