diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 71d80d40..80fe92e2 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -16,33 +16,60 @@ import { Report } from './report/entities/report.entity'; import { AppController } from './app.controller'; import { AppService } from './app.service'; +import { AchievementModule } from './achievement/achievement.module'; import { ActivityModule } from './activity/activity.module'; +import { AdminModule } from './admin/admin.module'; import { AnalyticModule } from './analytic/analytic.module'; import { ApiKeyModule } from './api-key/api-key.module'; +import { AuditLogModule } from './audit-log/audit-log.module'; import { AuthModule } from './auth/auth.module'; +import { BadgeModule } from './badge/badge.module'; +import { CacheModule } from './cache/cache.module'; import { ContentModule } from './content/content.module'; import { ContentRatingModule } from './content-rating/content-rating.module'; +import { DailyRewardModule } from './daily-reward/daily-reward.module'; +import { FeedbackModule } from './feedback/feedback.module'; +import { GeoStatsModule } from './geostat/geostat.module'; import { HintModule } from './hint/hint.module'; import { InAppNotificationsModule } from './in-app-notifications/in-app-notifications.module'; +import { MaintenanceModeModule } from './maintenance-mode/maintenance-mode.module'; +import { MigrationModule } from './migration/migration.module'; +import { MilestoneModule } from './milestone/milestone.module'; import { MultiplayerQueueModule } from './multiplayer-queue/multiplayer-queue.module'; import { NFTClaimModule } from './nft-claim/nft-claim.module'; +import { NftMarketplaceStubModule } from './nft-marketplace-stub/nft-marketplace-stub.module'; import { ProgressModule } from './progress/progress.module'; +import { PromoCodeModule } from './promo-code/entities/promo-code.module'; +import { PuzzleAccessLogModule } from './puzzle-access-log/puzzle-access-log.module'; import { PuzzleCategoryModule } from './puzzle-category/puzzle-category.module'; +import { PuzzleCommentModule } from './puzzle-comment/puzzle-comment.module'; import { PuzzleDependencyModule } from './puzzle-dependency/puzzle-dependency.module'; +import { PuzzleDraftModule } from './puzzle-draft/puzzle-draft.module'; +import { PuzzleForkModule } from './puzzle-fork/puzzle-fork.module'; import { PuzzleModule } from './puzzle/puzzle.module'; +import { PuzzleReviewModule } from './puzzle-review/puzzle-review/puzzle-review.module'; import { PuzzleSubmissionModule } from './puzzle-submission/puzzle-submission.module'; import { PuzzleTranslationModule } from './puzzle-translation/puzzle-translation.module'; +import { PuzzleVersioningModule } from './puzzle-versioning/puzzle-versioning.module'; +import { QuizModule } from './quiz/quiz.module'; +import { RateLimiterModule } from './rate-limiter/rate-limiter.module'; import { ReferralModule } from './referral/referral.module'; import { ReportModule } from './report/report.module'; -import { RewardShopModule } from './reward-shop/reward-shop.module'; import { RewardModule } from './reward/reward.module'; +import { RewardShopModule } from './reward-shop/reward-shop.module'; +import { SessionModule } from './session/session.module'; import { StreakModule } from './streak/streak.module'; import { TimeTrialModule } from './time-trial/time-trial.module'; +import { TokenVerificationModule } from './token-verification/token-verification.module'; import { UserActivityLogModule } from './user-activity-log/user-activity-log.module'; import { UserInventoryModule } from './user-inventory/user-inventory.module'; +import { UserModule } from './user/user.module'; import { UserRankingModule } from './user-ranking/user-ranking.module'; import { UserReactionModule } from './user-reaction/user-reaction.module'; import { UserReportCardModule } from './user-report-card/user-report-card.module'; +import { UserSettingsModule } from './user-settings/user-settings.module'; +import { UserTokenHistoryModule } from './user-token-history/user-token-history.module'; +import { WalletModule } from './wallet/wallet.module'; import { MaintenanceModeModule } from './maintenance-mode/maintenance-mode.module'; import { GracefulShutdownService } from './graceful-shutdown.service'; @@ -115,34 +142,60 @@ import { GracefulShutdownService } from './graceful-shutdown.service'; migrationsRun: configService.get('database.migrationsRun') === true, }), }), + AchievementModule, ActivityModule, + AdminModule, AnalyticModule, ApiKeyModule, + AuditLogModule, AuthModule, + BadgeModule, + CacheModule, ContentModule, ContentRatingModule, + DailyRewardModule, + FeedbackModule, + GeoStatsModule, HintModule, InAppNotificationsModule, + MaintenanceModeModule, + MigrationModule, + MilestoneModule, MultiplayerQueueModule, NFTClaimModule, + NftMarketplaceStubModule, ProgressModule, + PromoCodeModule, + PuzzleAccessLogModule, PuzzleCategoryModule, + PuzzleCommentModule, PuzzleDependencyModule, + PuzzleDraftModule, + PuzzleForkModule, PuzzleModule, + PuzzleReviewModule, PuzzleSubmissionModule, PuzzleTranslationModule, + PuzzleVersioningModule, + QuizModule, + RateLimiterModule.forRoot(), ReferralModule, ReportModule, - RewardShopModule, RewardModule, + RewardShopModule, + SessionModule, StreakModule, TimeTrialModule, + TokenVerificationModule, UserActivityLogModule, UserInventoryModule, + UserModule, UserRankingModule, UserReactionModule, UserReportCardModule, - MaintenanceModeModule, + UserSettingsModule, + UserTokenHistoryModule, + WalletModule, ], controllers: [AppController], providers: [AppService, GracefulShutdownService], diff --git a/backend/src/main.ts b/backend/src/main.ts index 6370dd8a..49cb0fcf 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -3,7 +3,6 @@ import { Logger, ValidationPipe } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import helmet from 'helmet'; - import { AppModule } from './app.module'; /** @@ -19,6 +18,7 @@ async function bootstrap(): Promise { const app = await NestFactory.create(AppModule); const configService = app.get(ConfigService); + app.setGlobalPrefix('api', { exclude: [/^docs/] }); // Every route is served under the `/api/` prefix. The version // comes from `appConfig.apiVersion` (backend/config/app.config.ts, // env `API_VERSION`), which defaults to `v1`, so the browser talks to @@ -97,7 +97,6 @@ async function bootstrap(): Promise { ) .build(); const document = SwaggerModule.createDocument(app, swaggerConfig); - // Excluded from the global prefix above, so this resolves to /docs. SwaggerModule.setup('docs', app, document); const port = parseInt(process.env.PORT, 10) || 3001;