File size: 1,687 Bytes
46252cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { DataSource } from 'typeorm';
import { loadCliEnv } from './load-cli-env';

// Load environment variables with the app's precedence (mirrors data-source.ts / main.ts).
loadCliEnv();

/**
 * Standalone TypeORM CLI DataSource for the MAIN connection (auth + audit).
 *
 * The app runs the main connection as a separate, ALWAYS-SQLite connection (app.module.ts), distinct
 * from the pluggable data connection. The default data-source.ts CLI only manages the data
 * connection's migrations, so without this the CLI could not run/generate the main-owned migrations
 * (migrations-main) — which matters the moment boot auto-migration is turned off
 * (MAIN_DATABASE_SYNCHRONIZE=false), where the schema must be managed via the CLI instead.
 *
 * Mirrors the runtime main connection exactly: SQLite at ./data/main.sqlite, auth/audit entities,
 * migrations-main. synchronize is always false here — the CLI manages schema via migrations.
 *
 * Usage: `npm run migration:run:main` (dev) / `migration:run:main:prod` (compiled).
 */
const mainDataSource = new DataSource({
  type: 'better-sqlite3',
  // Mirrors the runtime main path (configuration.ts) — MAIN_DATABASE_NAME overrides the default
  // ./data/main.sqlite (e.g. e2e points it at a temp file), so the CLI and the app never target
  // different main databases.
  database: process.env.MAIN_DATABASE_NAME || './data/main.sqlite',
  entities: [__dirname + '/../modules/auth/**/*.entity{.ts,.js}', __dirname + '/../modules/audit/**/*.entity{.ts,.js}'],
  migrations: [__dirname + '/migrations-main/*{.ts,.js}'],
  synchronize: false,
  logging: process.env.DATABASE_LOGGING === 'true',
});

export default mainDataSource;