diff --git a/features/share/backend-api/src/data-source.ts b/features/share/backend-api/src/data-source.ts new file mode 100644 index 000000000..c0cc7de09 --- /dev/null +++ b/features/share/backend-api/src/data-source.ts @@ -0,0 +1,18 @@ +import * as path from 'path'; + +import { DataSource } from 'typeorm'; + +export const AppDataSource = new DataSource({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT || '25432', 10), + username: process.env.DB_USER || 'lilith', + password: process.env.DB_PASSWORD || 'lilith', + database: process.env.DB_NAME || 'lilith_share', + entities: [], + migrations: [path.join(__dirname, 'migrations', '*-*.{ts,js}')], + synchronize: false, + migrationsRun: false, + logging: process.env.NODE_ENV !== 'production', + migrationsTableName: 'typeorm_migrations', +}); diff --git a/features/share/backend-api/src/migrations/1740300001-CreateShareEventsTable.ts b/features/share/backend-api/src/migrations/1700000000000-InitialSchema.ts similarity index 89% rename from features/share/backend-api/src/migrations/1740300001-CreateShareEventsTable.ts rename to features/share/backend-api/src/migrations/1700000000000-InitialSchema.ts index 67af79829..78a5297e7 100644 --- a/features/share/backend-api/src/migrations/1740300001-CreateShareEventsTable.ts +++ b/features/share/backend-api/src/migrations/1700000000000-InitialSchema.ts @@ -1,8 +1,10 @@ -import { Table, TableIndex } from 'typeorm' +import { Table, TableIndex } from 'typeorm'; -import type { MigrationInterface, QueryRunner } from 'typeorm' +import type { MigrationInterface, QueryRunner } from 'typeorm'; + +export class InitialSchema1700000000000 implements MigrationInterface { + name = 'InitialSchema1700000000000'; -export class CreateShareEventsTable1740300001 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { // Create share_events table await queryRunner.createTable( @@ -81,7 +83,7 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { ], }), true, - ) + ); // Create indexes await queryRunner.createIndex( @@ -90,7 +92,7 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { name: 'IDX_share_events_timestamp', columnNames: ['timestamp'], }), - ) + ); await queryRunner.createIndex( 'share_events', @@ -98,7 +100,7 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { name: 'IDX_share_events_platform', columnNames: ['platform'], }), - ) + ); await queryRunner.createIndex( 'share_events', @@ -106,7 +108,7 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { name: 'IDX_share_events_content_type', columnNames: ['content_type'], }), - ) + ); await queryRunner.createIndex( 'share_events', @@ -114,7 +116,7 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { name: 'IDX_share_events_content_id', columnNames: ['content_id'], }), - ) + ); await queryRunner.createIndex( 'share_events', @@ -122,7 +124,7 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { name: 'IDX_share_events_source_domain', columnNames: ['source_domain'], }), - ) + ); await queryRunner.createIndex( 'share_events', @@ -130,7 +132,7 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { name: 'IDX_share_events_session_id', columnNames: ['session_id'], }), - ) + ); await queryRunner.createIndex( 'share_events', @@ -138,20 +140,20 @@ export class CreateShareEventsTable1740300001 implements MigrationInterface { name: 'IDX_share_events_user_id', columnNames: ['user_id'], }), - ) + ); } public async down(queryRunner: QueryRunner): Promise { // Drop indexes - await queryRunner.dropIndex('share_events', 'IDX_share_events_user_id') - await queryRunner.dropIndex('share_events', 'IDX_share_events_session_id') - await queryRunner.dropIndex('share_events', 'IDX_share_events_source_domain') - await queryRunner.dropIndex('share_events', 'IDX_share_events_content_id') - await queryRunner.dropIndex('share_events', 'IDX_share_events_content_type') - await queryRunner.dropIndex('share_events', 'IDX_share_events_platform') - await queryRunner.dropIndex('share_events', 'IDX_share_events_timestamp') + await queryRunner.dropIndex('share_events', 'IDX_share_events_user_id'); + await queryRunner.dropIndex('share_events', 'IDX_share_events_session_id'); + await queryRunner.dropIndex('share_events', 'IDX_share_events_source_domain'); + await queryRunner.dropIndex('share_events', 'IDX_share_events_content_id'); + await queryRunner.dropIndex('share_events', 'IDX_share_events_content_type'); + await queryRunner.dropIndex('share_events', 'IDX_share_events_platform'); + await queryRunner.dropIndex('share_events', 'IDX_share_events_timestamp'); // Drop table - await queryRunner.dropTable('share_events') + await queryRunner.dropTable('share_events'); } } diff --git a/features/share/backend-api/src/migrations/index.ts b/features/share/backend-api/src/migrations/index.ts index e1558a78a..0c3895ce7 100644 --- a/features/share/backend-api/src/migrations/index.ts +++ b/features/share/backend-api/src/migrations/index.ts @@ -3,7 +3,7 @@ * * Migration order is critical - migrations are executed in the order listed here. * Dependencies: - * - CreateShareEventsTable is standalone (no FK dependencies) + * - InitialSchema is standalone (no FK dependencies) */ -export { CreateShareEventsTable1740300001 } from './1740300001-CreateShareEventsTable' +export { InitialSchema1700000000000 } from './1700000000000-InitialSchema';