PowerEngine/modelRT/main.go

77 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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