77 lines
2.5 KiB
Go
77 lines
2.5 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"server/internal/api"
|
|
"server/internal/config"
|
|
"server/internal/db"
|
|
"server/internal/logging"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
cfg := config.Load()
|
|
if cfg.YMTKeyDecryptKeyB64 != "" {
|
|
os.Setenv("YMT_KEY_DECRYPT_KEY_B64", cfg.YMTKeyDecryptKeyB64)
|
|
}
|
|
_ = logging.Init("log")
|
|
log.Println("connecting YMT MySQL:", cfg.YMTDB.Host+":"+cfg.YMTDB.Port, "db", cfg.YMTDB.Name, "user", cfg.YMTDB.User)
|
|
log.Println("connecting Marketing MySQL:", cfg.MarketingDB.Host+":"+cfg.MarketingDB.Port, "db", cfg.MarketingDB.Name, "user", cfg.MarketingDB.User)
|
|
log.Println("connecting Meta MySQL (templates/jobs):", cfg.YMTTestDB.Host+":"+cfg.YMTTestDB.Port, "db", cfg.YMTTestDB.Name, "user", cfg.YMTTestDB.User)
|
|
if cfg.YMTDB.DSN() == "" {
|
|
log.Fatal("YMT MySQL DSN missing: host, port, user, name required")
|
|
}
|
|
if cfg.MarketingDB.DSN() == "" {
|
|
log.Fatal("Marketing MySQL DSN missing: host, port, user, name required")
|
|
}
|
|
if cfg.YMTTestDB.DSN() == "" {
|
|
log.Fatal("Meta MySQL DSN missing: host, port, user, name required")
|
|
}
|
|
ymt, err := db.ConnectMySQL(cfg.YMTDB.DSN())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
// apply pool settings from env for YMT
|
|
db.ApplyPoolFromEnv(ymt, "YMT_DB_")
|
|
marketing, err := db.ConnectMySQL(cfg.MarketingDB.DSN())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
// apply pool settings from env for Marketing
|
|
db.ApplyPoolFromEnv(marketing, "MARKETING_DB_")
|
|
// Marketing Authorization DB for creators
|
|
var marketingAuth *sql.DB
|
|
if cfg.MarketingAuthorizationDB.DSN() != "" {
|
|
marketingAuth, err = db.ConnectMySQL(cfg.MarketingAuthorizationDB.DSN())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
db.ApplyPoolFromEnv(marketingAuth, "MARKETING_AUTH_DB_")
|
|
log.Println("connecting Marketing Authorization MySQL:", cfg.MarketingAuthorizationDB.Host+":"+cfg.MarketingAuthorizationDB.Port, "db", cfg.MarketingAuthorizationDB.Name)
|
|
} else {
|
|
marketingAuth = marketing // fallback
|
|
}
|
|
meta, err := db.ConnectMySQL(cfg.YMTTestDB.DSN())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
// apply pool settings from env for Meta (templates/jobs)
|
|
db.ApplyPoolFromEnv(meta, "YMT_TEST_DB_")
|
|
r := api.NewRouter(meta, marketing, marketingAuth, ymt)
|
|
addr := ":" + func() string {
|
|
s := cfg.Port
|
|
if s == "" {
|
|
return "8077"
|
|
}
|
|
return s
|
|
}()
|
|
srv := &http.Server{Addr: addr, Handler: r, ReadTimeout: 15 * time.Second, WriteTimeout: 60 * time.Second}
|
|
log.Println("server listening on ", addr)
|
|
log.Fatal(srv.ListenAndServe())
|
|
}
|
|
|
|
// buildDSN deprecated; use cfg.YMTDB.DSN()/cfg.MarketingDB.DSN()
|