PowerEngine/modelRT/main.go

77 lines
1.8 KiB
Go
Raw Normal View History

2024-11-12 16:39:14 +08:00
// entry function
package main
import (
"context"
"flag"
"time"
"modelRT/config"
"modelRT/database"
"modelRT/handler"
"modelRT/log"
"modelRT/middleware"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"gorm.io/gorm"
)
var limiter *middleware.Limiter
func init() {
limiter = middleware.NewLimiter(10, 1*time.Minute) // 设置限流器允许每分钟最多请求10次
}
var (
modelRTConfigDir = flag.String("modelRT_config_dir", "./config", "config file dir of model runtime service")
modelRTConfigName = flag.String("modelRT_config_name", "config", "config file name of model runtime service")
modelRTConfigType = flag.String("modelRT_config_type", "yaml", "config file type of model runtime service")
)
var (
modelRTConfig config.ModelRTConfig
postgresDBClient *gorm.DB
logger *zap.Logger
)
// TODO 使用 wire 依赖注入
func main() {
flag.Parse()
ctx := context.TODO()
modelRTConfig = config.ReadAndInitConfig(*modelRTConfigDir, *modelRTConfigName, *modelRTConfigType)
// TODO 创建 Redis 与 pg client
// init postgresDBClient
postgresDBClient = database.GetPostgresDBInstance(ctx, modelRTConfig.PostgresDBURI)
defer func() {
sqlDB, err := postgresDBClient.DB()
if err != nil {
panic(err)
}
sqlDB.Close()
}()
// init logger
logger = log.GetLoggerInstance(modelRTConfig.LCfg)
defer logger.Sync()
// load circuit diagram from postgres
database.LoadCircuitDiagramFromPostgresDB(ctx, logger)
// TODO 从 pg 加载到 redis
engine := gin.Default()
engine.Use(limiter.Middleware)
engine.GET("/model/model_load", handler.ModelLoad)
engine.POST("/model/model_create", nil)
engine.POST("/model/model_update", nil)
engine.POST("/model/model_delete", nil)
// start route with 8080 port
engine.Run(":8080")
// Redis hashmap 母线模型、异步电动机模型
// kv key name value busx
}