From 4804dcb106d4ebd37e759b2aa627d1350699fbe3 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Wed, 8 Apr 2026 17:25:46 -0700 Subject: [PATCH] =?UTF-8?q?db(analytics):=20=F0=9F=97=83=EF=B8=8F=20Integr?= =?UTF-8?q?ate=20TypeORM=20setup=20into=20analytics=20backend=20for=20data?= =?UTF-8?q?base=20operations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../backend-api/src/app.module.ts | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/features/platform-analytics/backend-api/src/app.module.ts b/features/platform-analytics/backend-api/src/app.module.ts index 021ca547a..025a90337 100644 --- a/features/platform-analytics/backend-api/src/app.module.ts +++ b/features/platform-analytics/backend-api/src/app.module.ts @@ -1,4 +1,9 @@ import { buildDeploymentRegistry } from '@lilith/service-registry'; +import { + getDataSourceOptionsWithConfig, + type DatabaseConfig, + type DatabaseLoggingConfig, +} from '@lilith/typeorm-config'; import { BullModule } from '@nestjs/bullmq'; import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; @@ -60,30 +65,33 @@ const registry = buildDeploymentRegistry({ }), TypeOrmModule.forRootAsync({ - useFactory: async () => { + useFactory: () => { const dbService = registry.services.get('atlilith.analytics.analytics.postgres'); if (!dbService?.localUrl) { throw new Error('Service registry: atlilith.analytics.analytics.postgres not found'); } const dbUrl = new URL(dbService.localUrl); - const host = dbUrl.hostname; - const port = Number(dbUrl.port) || 25432; - return { - type: 'postgres' as const, - host, - port, + const logging: DatabaseLoggingConfig = + process.env.TYPEORM_LOGGING === 'true' + ? 'all' + : ['error', 'warn', 'schema', 'migration']; + + const config: DatabaseConfig = { + host: dbUrl.hostname, + port: Number(dbUrl.port) || 25432, username: process.env.DB_USER ?? 'lilith', password: process.env.DB_PASSWORD ?? 'analytics_dev_password', database: process.env.DB_NAME ?? 'lilith_analytics', + ssl: false, + logging, + }; + + return getDataSourceOptionsWithConfig(config, { autoLoadEntities: true, synchronize: process.env.NODE_ENV !== 'production', - logging: - process.env.TYPEORM_LOGGING === 'true' - ? 'all' - : (['error', 'warn', 'schema', 'migration'] as const), - }; + }); }, }),