| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package app
- import (
- "context"
- "net/http"
- "cmr-backend/internal/httpapi"
- "cmr-backend/internal/platform/assets"
- "cmr-backend/internal/platform/jwtx"
- "cmr-backend/internal/platform/wechatmini"
- "cmr-backend/internal/service"
- "cmr-backend/internal/store/postgres"
- )
- type App struct {
- router http.Handler
- store *postgres.Store
- }
- func New(ctx context.Context, cfg Config) (*App, error) {
- pool, err := postgres.Open(ctx, cfg.DatabaseURL)
- if err != nil {
- return nil, err
- }
- store := postgres.NewStore(pool)
- jwtManager := jwtx.NewManager(cfg.JWTIssuer, cfg.JWTAccessSecret, cfg.JWTAccessTTL)
- wechatMiniClient := wechatmini.NewClient(cfg.WechatMiniAppID, cfg.WechatMiniSecret, cfg.WechatMiniDevPrefix)
- authService := service.NewAuthService(service.AuthSettings{
- AppEnv: cfg.AppEnv,
- RefreshTTL: cfg.RefreshTTL,
- SMSCodeTTL: cfg.SMSCodeTTL,
- SMSCodeCooldown: cfg.SMSCodeCooldown,
- SMSProvider: cfg.SMSProvider,
- DevSMSCode: cfg.DevSMSCode,
- WechatMini: wechatMiniClient,
- }, store, jwtManager)
- entryService := service.NewEntryService(store)
- entryHomeService := service.NewEntryHomeService(store)
- adminResourceService := service.NewAdminResourceService(store)
- adminEventService := service.NewAdminEventService(store)
- eventService := service.NewEventService(store)
- eventPlayService := service.NewEventPlayService(store)
- assetPublisher := assets.NewOSSUtilPublisher(cfg.OSSUtilPath, cfg.OSSUtilConfigFile, cfg.AssetBucketRoot, cfg.AssetPublicBaseURL)
- configService := service.NewConfigService(store, cfg.LocalEventDir, cfg.AssetBaseURL, assetPublisher)
- adminPipelineService := service.NewAdminPipelineService(store, configService)
- homeService := service.NewHomeService(store)
- profileService := service.NewProfileService(store)
- resultService := service.NewResultService(store)
- sessionService := service.NewSessionService(store)
- devService := service.NewDevService(cfg.AppEnv, store)
- meService := service.NewMeService(store)
- router := httpapi.NewRouter(cfg.AppEnv, jwtManager, authService, entryService, entryHomeService, adminResourceService, adminEventService, adminPipelineService, eventService, eventPlayService, configService, homeService, profileService, resultService, sessionService, devService, meService)
- return &App{
- router: router,
- store: store,
- }, nil
- }
- func (a *App) Router() http.Handler {
- return a.router
- }
- func (a *App) Close() {
- if a.store != nil {
- a.store.Close()
- }
- }
|