data-source.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. import { File } from "./modules/files/file.entity"
  8. // 在测试环境下使用测试数据库配置
  9. const isTestEnv = process.env.NODE_ENV === 'test';
  10. const testDatabaseUrl = process.env.TEST_DATABASE_URL || 'postgresql://postgres:test_password@localhost:5432/test_d8dai';
  11. ;
  12. const dataSource = isTestEnv && testDatabaseUrl
  13. ? new DataSource({
  14. type: "postgres",
  15. url: testDatabaseUrl,
  16. entities: [User, Role, File],
  17. migrations: [],
  18. synchronize: true, // 测试环境总是同步schema
  19. dropSchema: true, // 测试环境每次重新创建schema
  20. logging: false, // 测试环境关闭日志
  21. })
  22. : new DataSource({
  23. type: "postgres",
  24. host: process.env.DB_HOST || "localhost",
  25. port: parseInt(process.env.DB_PORT || "5432"),
  26. username: process.env.DB_USERNAME || "postgres",
  27. password: process.env.DB_PASSWORD || "",
  28. database: process.env.DB_DATABASE || "postgres",
  29. entities: [User, Role, File],
  30. migrations: [],
  31. synchronize: process.env.DB_SYNCHRONIZE !== "false",
  32. logging: process.env.DB_LOGGING === "true",
  33. });
  34. export const AppDataSource = dataSource;