mirror of
https://github.com/injoyai/tdx.git
synced 2025-11-26 21:25:35 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84404bcb2c | ||
|
|
716e35122f | ||
|
|
c4866a2f2e |
23
codes.go
23
codes.go
@@ -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 //更新时间
|
||||
}
|
||||
|
||||
|
||||
52
manage.go
52
manage.go
@@ -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 {
|
||||
|
||||
10
workday.go
10
workday.go
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user