import app from '@adonisjs/core/services/app' import { defineConfig } from '@adonisjs/lucid' import env from '#start/env' const dbConfig = defineConfig({ /** * Postgres en dev/prod. SQLite reste accessible via DB_CONNECTION=sqlite * pour les tests rapides ou un usage offline. */ connection: env.get('DB_CONNECTION', 'postgres'), connections: { postgres: { client: 'pg', // TCP keepalive (keepAlive / keepAliveInitialDelayMillis) : empêche le // firewall entre pod K3s et LXC PG de couper silencieusement les // connexions idle (cause de l'erreur « Connection terminated // unexpectedly » remontée par Sentry). Lucid type-narrow ne les expose // pas mais le driver `pg` les accepte et knex les forward tels quels. connection: { host: env.get('PG_HOST'), port: env.get('PG_PORT'), user: env.get('PG_USER'), password: env.get('PG_PASSWORD'), database: env.get('PG_DB_NAME'), // @ts-expect-error Lucid n'expose pas keepAlive/keepAliveInitialDelayMillis dans son type pg ; le driver et knex les forward tels quels. keepAlive: true, keepAliveInitialDelayMillis: 10_000, }, pool: { min: 0, max: 10, // Recycler les connexions idle rapidement plutôt que d'en garder // qui risquent d'être coupées côté réseau. idleTimeoutMillis: 30_000, }, migrations: { naturalSort: true, paths: ['database/migrations'], }, schemaGeneration: { enabled: true, rulesPaths: ['./database/schema_rules.js'], }, debug: app.inDev, }, sqlite: { client: 'better-sqlite3', connection: { filename: app.tmpPath('db.sqlite3'), }, useNullAsDefault: true, migrations: { naturalSort: true, paths: ['database/migrations'], }, schemaGeneration: { enabled: true, rulesPaths: ['./database/schema_rules.js'], }, }, }, }) export default dbConfig