data-source.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 { PaymentEntity } from "./modules/payments/payment.entity"
  9. import { MembershipPlan } from "./modules/membership/membership-plan.entity"
  10. import { Template } from "./modules/templates/template.entity"
  11. import { InitSystemSettings1735900000000 } from "./migrations/1735900000000-init-system-settings"
  12. import { SystemSetting } from "./modules/settings/system-setting.entity"
  13. import { SolutionDesign } from "./modules/solution-designs/solution-design.entity"
  14. import { SolutionChapter } from "./modules/solution-designs/solution-chapter.entity"
  15. import { ConsultationRequest } from "./modules/consultation/consultation-request.entity"
  16. // 在测试环境下使用测试数据库配置
  17. const isTestEnv = process.env.NODE_ENV === 'test';
  18. const testDatabaseUrl = process.env.TEST_DATABASE_URL || 'mysql://root:test_password@localhost:3306/test_d8dai';
  19. const dataSource = isTestEnv && testDatabaseUrl
  20. ? new DataSource({
  21. type: "mysql",
  22. url: testDatabaseUrl,
  23. entities: [
  24. User, Role, File, PaymentEntity, MembershipPlan, Template, SystemSetting,
  25. SolutionDesign, SolutionChapter, ConsultationRequest,
  26. ],
  27. migrations: [
  28. InitSystemSettings1735900000000,
  29. ],
  30. synchronize: true, // 测试环境总是同步schema
  31. dropSchema: true, // 测试环境每次重新创建schema
  32. logging: false, // 测试环境关闭日志
  33. })
  34. : new DataSource({
  35. type: "mysql",
  36. host: process.env.DB_HOST || "localhost",
  37. port: parseInt(process.env.DB_PORT || "3306"),
  38. username: process.env.DB_USERNAME || "root",
  39. password: process.env.DB_PASSWORD || "",
  40. database: process.env.DB_DATABASE || "d8dai",
  41. entities: [
  42. User, Role, File, PaymentEntity, MembershipPlan, Template, SystemSetting,
  43. SolutionDesign, SolutionChapter, ConsultationRequest,
  44. ],
  45. migrations: [
  46. InitSystemSettings1735900000000,
  47. ],
  48. synchronize: process.env.DB_SYNCHRONIZE !== "false",
  49. logging: process.env.DB_LOGGING === "true",
  50. });
  51. export const AppDataSource = dataSource;