migrations.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. // Package migrations 包含嵌入的 SQL 数据库迁移文件。
  2. //
  3. // 该包使用 Go 1.16+ 的 embed 功能将 SQL 文件嵌入到编译后的二进制文件中。
  4. // 这种方式的优点:
  5. // - 部署时无需额外的迁移文件
  6. // - 迁移文件与代码版本一致
  7. // - 便于版本控制和代码审查
  8. package migrations
  9. import "embed"
  10. // FS 包含本目录下所有嵌入的 SQL 迁移文件。
  11. //
  12. // 迁移命名规范:
  13. // - 使用零填充的数字前缀确保正确的执行顺序
  14. // - 格式:NNN_description.sql(如 001_init.sql, 002_add_users.sql)
  15. // - 描述部分使用下划线分隔的小写单词
  16. //
  17. // 迁移文件要求:
  18. // - 必须是幂等的(可重复执行而不产生错误)
  19. // - 推荐使用 IF NOT EXISTS / IF EXISTS 语法
  20. // - 一旦应用,不应修改已有的迁移文件(通过 checksum 校验)
  21. //
  22. // 示例迁移文件:
  23. //
  24. // -- 001_init.sql
  25. // CREATE TABLE IF NOT EXISTS users (
  26. // id BIGSERIAL PRIMARY KEY,
  27. // email VARCHAR(255) NOT NULL UNIQUE,
  28. // created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
  29. // );
  30. //
  31. //go:embed *.sql
  32. var FS embed.FS