data-source.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import "reflect-metadata"
  2. import { DataSource } from "typeorm"
  3. import process from 'node:process'
  4. // 实体类导入
  5. import { UserEntity as User } from "./modules/users/user.entity"
  6. import { Role } from "./modules/users/role.entity"
  7. // 在测试环境下使用测试数据库配置
  8. const isTestEnv = process.env.NODE_ENV === 'test';
  9. const testDatabaseUrl = process.env.TEST_DATABASE_URL || 'postgresql://postgres:test_password@localhost:5432/test_d8dai';
  10. ;
  11. const dataSource = isTestEnv && testDatabaseUrl
  12. ? new DataSource({
  13. type: "postgres",
  14. url: testDatabaseUrl,
  15. entities: [User, Role],
  16. migrations: [],
  17. synchronize: true, // 测试环境总是同步schema
  18. dropSchema: true, // 测试环境每次重新创建schema
  19. logging: false, // 测试环境关闭日志
  20. })
  21. : new DataSource({
  22. type: "postgres",
  23. host: process.env.DB_HOST || "localhost",
  24. port: parseInt(process.env.DB_PORT || "5432"),
  25. username: process.env.DB_USERNAME || "postgres",
  26. password: process.env.DB_PASSWORD || "",
  27. database: process.env.DB_DATABASE || "postgres",
  28. entities: [User, Role],
  29. migrations: [],
  30. synchronize: process.env.DB_SYNCHRONIZE !== "false",
  31. logging: process.env.DB_LOGGING === "true",
  32. });
  33. export const AppDataSource = dataSource;