config.ts 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import type { ConnectionOptions, Options } from '@sequelize/core';
  2. import { Db2Dialect } from '@sequelize/db2';
  3. import { IBMiDialect } from '@sequelize/db2-ibmi';
  4. import { MariaDbDialect } from '@sequelize/mariadb';
  5. import { MsSqlDialect } from '@sequelize/mssql';
  6. import { MySqlDialect } from '@sequelize/mysql';
  7. import { PostgresDialect } from '@sequelize/postgres';
  8. import { SnowflakeDialect } from '@sequelize/snowflake';
  9. import { SqliteDialect } from '@sequelize/sqlite3';
  10. import { parseSafeInteger } from '@sequelize/utils';
  11. import path from 'node:path';
  12. export const SQLITE_DATABASES_DIR = path.join(__dirname, '..', 'sqlite-databases');
  13. export function getSqliteDatabasePath(name: string): string {
  14. return path.join(SQLITE_DATABASES_DIR, name);
  15. }
  16. const { env } = process;
  17. export interface DialectConfigs {
  18. mssql: Options<MsSqlDialect>;
  19. mysql: Options<MySqlDialect>;
  20. snowflake: Options<SnowflakeDialect>;
  21. mariadb: Options<MariaDbDialect>;
  22. sqlite3: Options<SqliteDialect>;
  23. postgres: Options<PostgresDialect>;
  24. db2: Options<Db2Dialect>;
  25. ibmi: Options<IBMiDialect>;
  26. }
  27. export interface DialectConnectionConfigs {
  28. mssql: ConnectionOptions<MsSqlDialect>;
  29. mysql: ConnectionOptions<MySqlDialect>;
  30. snowflake: ConnectionOptions<SnowflakeDialect>;
  31. mariadb: ConnectionOptions<MariaDbDialect>;
  32. sqlite3: ConnectionOptions<SqliteDialect>;
  33. postgres: ConnectionOptions<PostgresDialect>;
  34. db2: ConnectionOptions<Db2Dialect>;
  35. ibmi: ConnectionOptions<IBMiDialect>;
  36. }
  37. const seqPort = env.SEQ_PORT ? parseSafeInteger.orThrow(env.SEQ_PORT) : undefined;
  38. export const CONFIG: DialectConfigs = {
  39. mssql: {
  40. dialect: MsSqlDialect,
  41. authentication: {
  42. type: 'default',
  43. options: {
  44. userName: env.SEQ_MSSQL_USER || env.SEQ_USER || 'SA',
  45. password: env.SEQ_MSSQL_PW || env.SEQ_PW || 'Password12!',
  46. },
  47. },
  48. database: env.SEQ_MSSQL_DB || env.SEQ_DB || 'sequelize_test',
  49. encrypt: false,
  50. pool: {
  51. max: parseSafeInteger.orThrow(env.SEQ_MSSQL_POOL_MAX || env.SEQ_POOL_MAX || 5),
  52. idle: parseSafeInteger.orThrow(env.SEQ_MSSQL_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
  53. },
  54. port: parseSafeInteger.orThrow(env.SEQ_MSSQL_PORT || seqPort || 22_019),
  55. requestTimeout: 25_000,
  56. server: env.SEQ_MSSQL_HOST || env.SEQ_HOST || 'localhost',
  57. },
  58. mysql: {
  59. dialect: MySqlDialect,
  60. database: env.SEQ_MYSQL_DB || env.SEQ_DB || 'sequelize_test',
  61. user: env.SEQ_MYSQL_USER || env.SEQ_USER || 'sequelize_test',
  62. password: env.SEQ_MYSQL_PW || env.SEQ_PW || 'sequelize_test',
  63. host: env.MYSQL_PORT_3306_TCP_ADDR || env.SEQ_MYSQL_HOST || env.SEQ_HOST || '127.0.0.1',
  64. port: parseSafeInteger.orThrow(
  65. env.MYSQL_PORT_3306_TCP_PORT || env.SEQ_MYSQL_PORT || seqPort || 20_057,
  66. ),
  67. pool: {
  68. max: parseSafeInteger.orThrow(env.SEQ_MYSQL_POOL_MAX || env.SEQ_POOL_MAX || 5),
  69. idle: parseSafeInteger.orThrow(env.SEQ_MYSQL_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
  70. },
  71. },
  72. snowflake: {
  73. dialect: SnowflakeDialect,
  74. username: env.SEQ_SNOWFLAKE_USER || env.SEQ_USER || 'root',
  75. password: env.SEQ_SNOWFLAKE_PW || env.SEQ_PW || '',
  76. database: env.SEQ_SNOWFLAKE_DB || env.SEQ_DB || 'sequelize_test',
  77. account: env.SEQ_SNOWFLAKE_ACCOUNT || env.SEQ_ACCOUNT || 'sequelize_test',
  78. role: env.SEQ_SNOWFLAKE_ROLE || env.SEQ_ROLE || 'role',
  79. warehouse: env.SEQ_SNOWFLAKE_WH || env.SEQ_WH || 'warehouse',
  80. schema: env.SEQ_SNOWFLAKE_SCHEMA || env.SEQ_SCHEMA || '',
  81. },
  82. mariadb: {
  83. dialect: MariaDbDialect,
  84. database: env.SEQ_MARIADB_DB || env.SEQ_DB || 'sequelize_test',
  85. user: env.SEQ_MARIADB_USER || env.SEQ_USER || 'sequelize_test',
  86. password: env.SEQ_MARIADB_PW || env.SEQ_PW || 'sequelize_test',
  87. host: env.MARIADB_PORT_3306_TCP_ADDR || env.SEQ_MARIADB_HOST || env.SEQ_HOST || '127.0.0.1',
  88. port: parseSafeInteger.orThrow(
  89. env.MARIADB_PORT_3306_TCP_PORT || env.SEQ_MARIADB_PORT || seqPort || 21_103,
  90. ),
  91. pool: {
  92. max: Number(env.SEQ_MARIADB_POOL_MAX || env.SEQ_POOL_MAX || 5),
  93. idle: Number(env.SEQ_MARIADB_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
  94. },
  95. },
  96. sqlite3: {
  97. dialect: SqliteDialect,
  98. storage: getSqliteDatabasePath('default.sqlite'),
  99. },
  100. postgres: {
  101. dialect: PostgresDialect,
  102. database: env.SEQ_PG_DB || env.SEQ_DB || 'sequelize_test',
  103. user: env.SEQ_PG_USER || env.SEQ_USER || 'sequelize_test',
  104. password: env.SEQ_PG_PW || env.SEQ_PW || 'sequelize_test',
  105. host: env.POSTGRES_PORT_5432_TCP_ADDR || env.SEQ_PG_HOST || env.SEQ_HOST || '127.0.0.1',
  106. port: parseSafeInteger.orThrow(
  107. env.POSTGRES_PORT_5432_TCP_PORT || env.SEQ_PG_PORT || seqPort || 23_010,
  108. ),
  109. pool: {
  110. max: Number(env.SEQ_PG_POOL_MAX || env.SEQ_POOL_MAX || 5),
  111. idle: Number(env.SEQ_PG_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
  112. },
  113. minifyAliases: Boolean(env.SEQ_PG_MINIFY_ALIASES),
  114. },
  115. db2: {
  116. dialect: Db2Dialect,
  117. database: env.SEQ_DB2_DB || env.SEQ_DB || env.IBM_DB_DBNAME || 'testdb',
  118. username: env.SEQ_DB2_USER || env.SEQ_USER || env.IBM_DB_UID || 'db2inst1',
  119. password: env.SEQ_DB2_PW || env.SEQ_PW || env.IBM_DB_PWD || 'password',
  120. hostname:
  121. env.DB2_PORT_50000_TCP_ADDR ||
  122. env.SEQ_DB2_HOST ||
  123. env.SEQ_HOST ||
  124. env.IBM_DB_HOSTNAME ||
  125. '127.0.0.1',
  126. port: env.DB2_PORT_50000_TCP_PORT || env.SEQ_DB2_PORT || seqPort || env.IBM_DB_PORT || 50_000,
  127. pool: {
  128. max: parseSafeInteger.orThrow(env.SEQ_DB2_POOL_MAX || env.SEQ_POOL_MAX || 5),
  129. idle: parseSafeInteger.orThrow(env.SEQ_DB2_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
  130. },
  131. },
  132. ibmi: {
  133. dialect: IBMiDialect,
  134. dataSourceName: env.SEQ_IBMI_DB || env.SEQ_DB,
  135. username: env.SEQ_IBMI_USER || env.SEQ_USER,
  136. password: env.SEQ_IBMI_PW || env.SEQ_PW,
  137. pool: {
  138. max: Number(env.SEQ_IBMI_POOL_MAX || env.SEQ_POOL_MAX || env.SEQ_POOL_MAX || 5),
  139. idle: Number(env.SEQ_IBMI_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
  140. },
  141. odbcConnectionString: env.SEQ_IBMI_CONN_STR,
  142. },
  143. };