feat: initialize tenant workbench in shared database

This commit is contained in:
richjohnrambo
2026-09-23 17:04:01 +08:00
parent c8413f82d9
commit 86c5486cc4
11 changed files with 187 additions and 92 deletions
+11 -1
View File
@@ -8,6 +8,8 @@ import (
"strconv"
"strings"
"time"
mysqlDriver "github.com/go-sql-driver/mysql"
)
type Config struct {
@@ -88,7 +90,7 @@ func defaultConfig() *Config {
return &Config{
Listen: ":6061",
MySQL: MySQLConfig{
DSN: "root:root@tcp(127.0.0.1:3306)/tinode?parseTime=true&charset=utf8mb4,utf8&loc=Local",
DSN: "root:root@tcp(127.0.0.1:3306)/meeting_im?parseTime=true&charset=utf8mb4,utf8&loc=Local",
},
Redis: RedisConfig{
Addr: "127.0.0.1:6379",
@@ -186,6 +188,14 @@ func (c *Config) validate() error {
if strings.TrimSpace(c.MySQL.DSN) == "" {
return errors.New("mysql dsn is required")
}
mysqlDSN := strings.TrimPrefix(strings.TrimSpace(c.MySQL.DSN), "mysql://")
parsedDSN, err := mysqlDriver.ParseDSN(mysqlDSN)
if err != nil {
return fmt.Errorf("mysql dsn is invalid: %w", err)
}
if strings.EqualFold(strings.TrimSpace(parsedDSN.DBName), "tinode") {
return errors.New("mysql database tinode is deprecated; use meeting_im")
}
if strings.TrimSpace(c.Redis.Addr) == "" && !c.Auth.SkipSessionInDev {
return errors.New("redis addr is required")
}