37 lines
1.5 KiB
Go
37 lines
1.5 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"kra/internal/modules/system/biz"
|
|
"kra/internal/modules/system/dto"
|
|
"kra/internal/modules/system/routeinfo"
|
|
)
|
|
|
|
func (s *SystemConfigService) Initialize(ctx context.Context, input *dto.DatabaseInitRequest, apis []*biz.API) error {
|
|
driver, config := input.DBType, ""
|
|
switch driver {
|
|
case "mysql":
|
|
config = "charset=utf8mb4&parseTime=True&loc=Local"
|
|
case "pgsql":
|
|
config = "sslmode=disable TimeZone=Asia/Shanghai"
|
|
case "sqlite", "mssql":
|
|
default:
|
|
// The compatible initialization flow treats an omitted or unknown dbType as MySQL during
|
|
// initialization rather than rejecting it as an unsupported driver.
|
|
driver = "mysql"
|
|
config = "charset=utf8mb4&parseTime=True&loc=Local"
|
|
}
|
|
return s.uc.Initialize(ctx, &biz.DatabaseConfig{Driver: driver, Host: input.Host, Port: input.Port, User: input.UserName, Password: input.Password, Name: input.DBName, Path: input.DBPath, Config: config, Template: input.Template, AdminPassword: input.AdminPassword, APIs: apis})
|
|
}
|
|
|
|
func (s *SystemConfigService) InitializeRoutes(ctx context.Context, input *dto.DatabaseInitRequest, routes []dto.Route) error {
|
|
apis := make([]*biz.API, 0, len(routes))
|
|
for _, route := range routes {
|
|
path := NormalizeRoutePath(route.Path, s.settings.RouterPrefix())
|
|
group, description := routeinfo.Metadata(route.Method, path)
|
|
apis = append(apis, &biz.API{Path: path, Method: route.Method, APIGroup: group, Description: description})
|
|
}
|
|
return s.Initialize(ctx, input, apis)
|
|
}
|