db(migrations): 🗃️ Add ShareEvents table migration, update registry in index.ts, and configure data source

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Lilith 2026-02-28 15:52:22 -08:00
parent 3becb66876
commit 10ec03bace
3 changed files with 41 additions and 21 deletions

View file

@ -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',
});

View file

@ -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<void> {
// 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<void> {
// 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');
}
}

View file

@ -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';