data-source.ts 1.9 KB

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