Files
bj_power/bj_power_mes/internal/svc/service_context.go
T

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,
}
}