package app import ( "context" "database/sql" "log" "net/http" "time" "lingniu/vehicle-data-platform/apps/api/internal/config" "lingniu/vehicle-data-platform/apps/api/internal/platform" "lingniu/vehicle-data-platform/apps/api/internal/static" ) func NewServer(cfg config.Config) http.Handler { var store platform.Store = platform.NewMockStore() if cfg.MySQLDSN != "" { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() db, err := platform.OpenSQL(ctx, "mysql", cfg.MySQLDSN) if err != nil { log.Printf("production mysql store disabled: %v", err) } else { var tdengine *sql.DB if cfg.TDengineDSN != "" { tdengine, err = platform.OpenSQL(ctx, cfg.TDengineDriver, cfg.TDengineDSN) if err != nil { log.Printf("production tdengine store disabled: %v", err) } else { log.Printf("production tdengine store enabled") } } store = platform.NewProductionStore(db, tdengine, cfg.TDengineDatabase) log.Printf("production mysql store enabled") } } api := platform.NewHandler(platform.NewService(store)) return static.Handler(cfg.StaticDir, api) }