Compare commits

...

3 Commits

Author SHA1 Message Date
injoyai
84404bcb2c 增加Manage对mysql的支持 2025-10-16 11:00:58 +08:00
injoyai
716e35122f 增加Manage对mysql的支持 2025-10-16 10:54:44 +08:00
injoyai
c4866a2f2e 增加Manage对mysql的支持 2025-10-16 10:47:24 +08:00
3 changed files with 66 additions and 19 deletions

View File

@@ -34,12 +34,6 @@ func NewCodesMysql(c *Client, dsn string) (*Codes, error) {
return nil, err
}
db.SetMapper(core.SameMapper{})
if err := db.Sync2(new(CodeModel)); err != nil {
return nil, err
}
if err := db.Sync2(new(UpdateModel)); err != nil {
return nil, err
}
return NewCodes(c, db)
}
@@ -62,6 +56,12 @@ func NewCodesSqlite(c *Client, filenames ...string) (*Codes, error) {
}
db.SetMapper(core.SameMapper{})
db.DB().SetMaxOpenConns(1)
return NewCodes(c, db)
}
func NewCodes(c *Client, db *xorm.Engine) (*Codes, error) {
if err := db.Sync2(new(CodeModel)); err != nil {
return nil, err
}
@@ -69,17 +69,13 @@ func NewCodesSqlite(c *Client, filenames ...string) (*Codes, error) {
return nil, err
}
return NewCodes(c, db)
}
func NewCodes(c *Client, db *xorm.Engine) (*Codes, error) {
update := new(UpdateModel)
{ //查询或者插入一条数据
has, err := db.Get(update)
has, err := db.Where("Key=?", "codes").Get(update)
if err != nil {
return nil, err
} else if !has {
update.Key = "codes"
if _, err := db.Insert(update); err != nil {
return nil, err
}
@@ -276,7 +272,7 @@ func (this *Codes) Update(byDB ...bool) error {
this.list = codes
this.exchanges = exchanges
//更新时间
_, err = this.db.Update(&UpdateModel{Time: time.Now().Unix()})
_, err = this.db.Where("Key=?", "codes").Update(&UpdateModel{Time: time.Now().Unix()})
return err
}
@@ -362,6 +358,7 @@ func (this *Codes) GetCodes(byDatabase bool) ([]*CodeModel, error) {
}
type UpdateModel struct {
Key string
Time int64 //更新时间
}

View File

@@ -1,6 +1,7 @@
package tdx
import (
"errors"
"github.com/injoyai/ios/client"
"github.com/robfig/cron/v3"
"time"
@@ -10,6 +11,57 @@ const (
DefaultDatabaseDir = "./data/database"
)
func NewManageMysql(cfg *ManageConfig, op ...client.Option) (*Manage, error) {
//初始化配置
if cfg == nil {
cfg = &ManageConfig{}
}
if cfg.CodesFilename == "" {
return nil, errors.New("未配置Codes的数据库")
}
if cfg.WorkdayFileName == "" {
return nil, errors.New("未配置Workday的数据库")
}
if cfg.Dial == nil {
cfg.Dial = DialDefault
}
//通用客户端
commonClient, err := cfg.Dial(op...)
if err != nil {
return nil, err
}
commonClient.Wait.SetTimeout(time.Second * 5)
//代码管理
codes, err := NewCodesMysql(commonClient, cfg.CodesFilename)
if err != nil {
return nil, err
}
//工作日管理
workday, err := NewWorkdayMysql(commonClient, cfg.WorkdayFileName)
if err != nil {
return nil, err
}
//连接池
p, err := NewPool(func() (*Client, error) {
return cfg.Dial(op...)
}, cfg.Number)
if err != nil {
return nil, err
}
return &Manage{
Pool: p,
Config: cfg,
Codes: codes,
Workday: workday,
Cron: cron.New(cron.WithSeconds()),
}, nil
}
func NewManage(cfg *ManageConfig, op ...client.Option) (*Manage, error) {
//初始化配置
if cfg == nil {

View File

@@ -24,9 +24,6 @@ func NewWorkdayMysql(c *Client, dsn string) (*Workday, error) {
return nil, err
}
db.SetMapper(core.SameMapper{})
if err := db.Sync2(new(WorkdayModel)); err != nil {
return nil, err
}
return NewWorkday(c, db)
}
@@ -47,14 +44,15 @@ func NewWorkdaySqlite(c *Client, filenames ...string) (*Workday, error) {
}
db.SetMapper(core.SameMapper{})
db.DB().SetMaxOpenConns(1)
if err := db.Sync2(new(WorkdayModel)); err != nil {
return nil, err
}
return NewWorkday(c, db)
}
func NewWorkday(c *Client, db *xorm.Engine) (*Workday, error) {
if err := db.Sync2(new(WorkdayModel)); err != nil {
return nil, err
}
w := &Workday{
Client: c,
db: db,