/
githubmirror
/
strapi
Обзор
Документация
Войти
/
githubmirror
/
strapi
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
examples/complex/config/database.ts
76 строк
3 KB
Ben Irvin
test(migration): version migration testing framework (#26060)
06 авг 2026, 15:39
Не верифицирован
06 авг 2026, 15:39
ac0c928
Код
Авторство
О чём код?
import path from 'path'; import type { Core } from '@strapi/strapi'; import { isDatabaseClientKind } from '@strapi/database'; export default ({ env }: Core.Config.Shared.ConfigParams): Core.Config.Database => { const client = env('DATABASE_CLIENT', 'postgres'); if (!isDatabaseClientKind(client)) { throw new Error( `Unsupported DATABASE_CLIENT: ${client}. Use "postgres", "mysql", or "sqlite".` ); } const connections: Record<Core.Config.Database.ClientKind, Core.Config.Database['connection']> = { mysql: { client: 'mysql', connection: { host: env('DATABASE_HOST', 'localhost'), port: env.int('DATABASE_PORT', 3306), database: env('DATABASE_NAME', 'strapi'), user: env('DATABASE_USERNAME', 'strapi'), password: env('DATABASE_PASSWORD', 'strapi'), ssl: env.bool('DATABASE_SSL', false) && { key: env('DATABASE_SSL_KEY', undefined), cert: env('DATABASE_SSL_CERT', undefined), ca: env('DATABASE_SSL_CA', undefined), capath: env('DATABASE_SSL_CAPATH', undefined), cipher: env('DATABASE_SSL_CIPHER', undefined), rejectUnauthorized: env.bool('DATABASE_SSL_REJECT_UNAUTHORIZED', true), }, }, pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, }, postgres: { client: 'postgres', connection: { connectionString: env('DATABASE_URL'), host: env('DATABASE_HOST', 'localhost'), port: env.int('DATABASE_PORT', 5432), database: env('DATABASE_NAME', 'strapi'), user: env('DATABASE_USERNAME', 'strapi'), password: env('DATABASE_PASSWORD', 'strapi'), ssl: env.bool('DATABASE_SSL', false) && { key: env('DATABASE_SSL_KEY', undefined), cert: env('DATABASE_SSL_CERT', undefined), ca: env('DATABASE_SSL_CA', undefined), capath: env('DATABASE_SSL_CAPATH', undefined), cipher: env('DATABASE_SSL_CIPHER', undefined), rejectUnauthorized: env.bool('DATABASE_SSL_REJECT_UNAUTHORIZED', true), }, schema: env('DATABASE_SCHEMA', 'public'), }, pool: { min: env.int('DATABASE_POOL_MIN', 2), max: env.int('DATABASE_POOL_MAX', 10) }, }, sqlite: { client: 'sqlite', connection: { filename: (() => { const f = env('DATABASE_FILENAME'); if (!f) { return path.join(process.cwd(), '.tmp', 'data.db'); } return path.isAbsolute(f) ? f : path.join(process.cwd(), f); })(), }, useNullAsDefault: true, }, }; return { connection: { ...connections[client], acquireConnectionTimeout: env.int('DATABASE_CONNECTION_TIMEOUT', 60000), }, }; };