44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package svc
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"database/sql"
|
||
|
|
"log/slog"
|
||
|
|
|
||
|
|
"bj_power_mes/ent"
|
||
|
|
"bj_power_mes/internal/auth"
|
||
|
|
"bj_power_mes/internal/config"
|
||
|
|
"bj_power_mes/internal/db"
|
||
|
|
"bj_power_mes/internal/plc"
|
||
|
|
)
|
||
|
|
|
||
|
|
type ServiceContext struct {
|
||
|
|
Config config.Config // �典��滨蔭嚗諹圾�𥖹aml�滨蔭��辣
|
||
|
|
TokenStore auth.TokenStore // �瑟鰵隞斤����摮睃�嚗𣬚蒈敶?�瑟鰵�嗉粉�? EntClient *ent.Client // Ent ORM�唳旿摨枏恥�瑞垢嚗峕�雿𨅯極�閧�銝𡁜𦛚銵? DB *sql.DB // �毺�SQL餈墧𦻖�交�嚗𣬚鍂鈭𡒊鸌畾𠰴��𡷑QL�亥砭
|
||
|
|
PLCManager *plc.Manager // PLC蝞∠��剁�蝏煺�蝞∠�PLC餈墧𦻖��縑�瑁粉�?}
|
||
|
|
|
||
|
|
func NewServiceContext(c config.Config) *ServiceContext {
|
||
|
|
// 隞斤�摮睃�嚗帋蝙�典�摮睃��堆��閗�蝔𧢲��� Redis
|
||
|
|
tokenStore := auth.NewInMemoryTokenStore()
|
||
|
|
slog.Info("svc: using in-memory token store")
|
||
|
|
|
||
|
|
// �唳旿摨栞��交����ent ORM �其�蝏𤘪��𡝗䰻霂g��毺� SQL �其�憭齿��𡁜�
|
||
|
|
entClient, dbConn := db.MustNewDB(c.Database)
|
||
|
|
|
||
|
|
// ���� PLC 撌脰��伐��臭��穃極摨誩噡蝑㗇�隞?����
|
||
|
|
var plcManager *plc.Manager
|
||
|
|
if c.Plc.Host != "" {
|
||
|
|
plcManager = plc.Build(c.Plc)
|
||
|
|
} else {
|
||
|
|
slog.Warn("svc: PLC �芷�蝵殷�頝唾�餈墧𦻖")
|
||
|
|
}
|
||
|
|
|
||
|
|
slog.Info("�滚𦛚銝𠹺��? �嘥��硋��?)
|
||
|
|
|
||
|
|
return &ServiceContext{
|
||
|
|
Config: c,
|
||
|
|
TokenStore: tokenStore,
|
||
|
|
EntClient: entClient,
|
||
|
|
DB: dbConn,
|
||
|
|
PLCManager: plcManager,
|
||
|
|
}
|
||
|
|
}
|