@zimezone/z-command 1.1.1 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/README.md +13 -1
  2. package/dist/cli.js +1 -1
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +42 -10
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/platforms.d.ts.map +1 -1
  7. package/dist/platforms.js +11 -1
  8. package/dist/platforms.js.map +1 -1
  9. package/dist/types.d.ts +2 -0
  10. package/dist/types.d.ts.map +1 -1
  11. package/package.json +8 -3
  12. package/templates.zip +0 -0
  13. package/templates/agents/accessibility-expert.agent.md +0 -56
  14. package/templates/agents/ai-engineer.agent.md +0 -61
  15. package/templates/agents/angular-architect.agent.md +0 -49
  16. package/templates/agents/api-designer.agent.md +0 -40
  17. package/templates/agents/api-documenter.agent.md +0 -161
  18. package/templates/agents/architect-review.agent.md +0 -146
  19. package/templates/agents/arm-cortex-expert.agent.md +0 -288
  20. package/templates/agents/azure-infra-engineer.agent.md +0 -57
  21. package/templates/agents/backend-architect.agent.md +0 -309
  22. package/templates/agents/backend-developer.agent.md +0 -61
  23. package/templates/agents/backend-security-coder.agent.md +0 -152
  24. package/templates/agents/bash-pro.agent.md +0 -285
  25. package/templates/agents/blockchain-developer.agent.md +0 -57
  26. package/templates/agents/build-engineer.agent.md +0 -56
  27. package/templates/agents/business-analyst.agent.md +0 -47
  28. package/templates/agents/c-pro.agent.md +0 -35
  29. package/templates/agents/c4-code.agent.md +0 -320
  30. package/templates/agents/c4-component.agent.md +0 -227
  31. package/templates/agents/c4-container.agent.md +0 -248
  32. package/templates/agents/c4-context.agent.md +0 -235
  33. package/templates/agents/cli-developer.agent.md +0 -57
  34. package/templates/agents/cloud-architect.agent.md +0 -56
  35. package/templates/agents/code-architect.agent.md +0 -63
  36. package/templates/agents/code-reviewer.agent.md +0 -49
  37. package/templates/agents/competitive-analyst.agent.md +0 -48
  38. package/templates/agents/conductor-validator.agent.md +0 -245
  39. package/templates/agents/context-manager.agent.md +0 -55
  40. package/templates/agents/cpp-pro.agent.md +0 -59
  41. package/templates/agents/csharp-developer.agent.md +0 -57
  42. package/templates/agents/csharp-pro.agent.md +0 -38
  43. package/templates/agents/customer-support.agent.md +0 -148
  44. package/templates/agents/data-engineer.agent.md +0 -55
  45. package/templates/agents/data-researcher.agent.md +0 -55
  46. package/templates/agents/data-scientist.agent.md +0 -56
  47. package/templates/agents/database-admin.agent.md +0 -142
  48. package/templates/agents/database-administrator.agent.md +0 -50
  49. package/templates/agents/database-architect.agent.md +0 -238
  50. package/templates/agents/database-optimizer.agent.md +0 -144
  51. package/templates/agents/debugger.agent.md +0 -30
  52. package/templates/agents/deployment-engineer.agent.md +0 -0
  53. package/templates/agents/devops-engineer.agent.md +0 -59
  54. package/templates/agents/devops-troubleshooter.agent.md +0 -138
  55. package/templates/agents/django-developer.agent.md +0 -50
  56. package/templates/agents/django-pro.agent.md +0 -159
  57. package/templates/agents/docs-architect.agent.md +0 -77
  58. package/templates/agents/documentation-engineer.agent.md +0 -57
  59. package/templates/agents/dotnet-architect.agent.md +0 -175
  60. package/templates/agents/dx-optimizer.agent.md +0 -63
  61. package/templates/agents/electron-pro.agent.md +0 -56
  62. package/templates/agents/elixir-pro.agent.md +0 -38
  63. package/templates/agents/embedded-systems.agent.md +0 -55
  64. package/templates/agents/error-detective.agent.md +0 -32
  65. package/templates/agents/event-sourcing-architect.agent.md +0 -42
  66. package/templates/agents/fastapi-pro.agent.md +0 -171
  67. package/templates/agents/fintech-engineer.agent.md +0 -57
  68. package/templates/agents/firmware-analyst.agent.md +0 -330
  69. package/templates/agents/flutter-expert.agent.md +0 -50
  70. package/templates/agents/frontend-developer.agent.md +0 -59
  71. package/templates/agents/frontend-security-coder.agent.md +0 -149
  72. package/templates/agents/fullstack-developer.agent.md +0 -46
  73. package/templates/agents/git-workflow-manager.agent.md +0 -57
  74. package/templates/agents/golang-pro.agent.md +0 -50
  75. package/templates/agents/graphql-architect.agent.md +0 -48
  76. package/templates/agents/haskell-pro.agent.md +0 -37
  77. package/templates/agents/hr-pro.agent.md +0 -105
  78. package/templates/agents/incident-responder.agent.md +0 -190
  79. package/templates/agents/ios-developer.agent.md +0 -198
  80. package/templates/agents/iot-engineer.agent.md +0 -56
  81. package/templates/agents/java-architect.agent.md +0 -48
  82. package/templates/agents/java-pro.agent.md +0 -156
  83. package/templates/agents/javascript-pro.agent.md +0 -35
  84. package/templates/agents/julia-pro.agent.md +0 -187
  85. package/templates/agents/kotlin-specialist.agent.md +0 -50
  86. package/templates/agents/laravel-specialist.agent.md +0 -50
  87. package/templates/agents/legacy-modernizer.agent.md +0 -56
  88. package/templates/agents/legal-advisor.agent.md +0 -49
  89. package/templates/agents/llm-architect.agent.md +0 -58
  90. package/templates/agents/malware-analyst.agent.md +0 -272
  91. package/templates/agents/mcp-developer.agent.md +0 -54
  92. package/templates/agents/mermaid-expert.agent.md +0 -39
  93. package/templates/agents/microservices-architect.agent.md +0 -47
  94. package/templates/agents/minecraft-bukkit-pro.agent.md +0 -104
  95. package/templates/agents/ml-engineer.agent.md +0 -56
  96. package/templates/agents/mlops-engineer.agent.md +0 -56
  97. package/templates/agents/mobile-developer.agent.md +0 -45
  98. package/templates/agents/mobile-security-coder.agent.md +0 -163
  99. package/templates/agents/monorepo-architect.agent.md +0 -44
  100. package/templates/agents/multi-agent-coordinator.agent.md +0 -55
  101. package/templates/agents/network-engineer.agent.md +0 -57
  102. package/templates/agents/nextjs-developer.agent.md +0 -48
  103. package/templates/agents/nlp-engineer.agent.md +0 -58
  104. package/templates/agents/observability-engineer.agent.md +0 -228
  105. package/templates/agents/payment-integration.agent.md +0 -56
  106. package/templates/agents/performance-engineer.agent.md +0 -167
  107. package/templates/agents/performance-optimizer.agent.md +0 -57
  108. package/templates/agents/php-pro.agent.md +0 -43
  109. package/templates/agents/platform-engineer.agent.md +0 -57
  110. package/templates/agents/posix-shell-pro.agent.md +0 -284
  111. package/templates/agents/postgres-pro.agent.md +0 -58
  112. package/templates/agents/product-manager.agent.md +0 -55
  113. package/templates/agents/project-manager.agent.md +0 -57
  114. package/templates/agents/prompt-engineer.agent.md +0 -58
  115. package/templates/agents/python-pro.agent.md +0 -48
  116. package/templates/agents/quant-analyst.agent.md +0 -32
  117. package/templates/agents/rails-expert.agent.md +0 -50
  118. package/templates/agents/react-specialist.agent.md +0 -49
  119. package/templates/agents/refactoring-specialist.agent.md +0 -56
  120. package/templates/agents/reference-builder.agent.md +0 -167
  121. package/templates/agents/research-analyst.agent.md +0 -63
  122. package/templates/agents/reverse-engineer.agent.md +0 -202
  123. package/templates/agents/risk-manager.agent.md +0 -41
  124. package/templates/agents/ruby-pro.agent.md +0 -35
  125. package/templates/agents/rust-pro.agent.md +0 -156
  126. package/templates/agents/sales-automator.agent.md +0 -35
  127. package/templates/agents/scala-pro.agent.md +0 -60
  128. package/templates/agents/scrum-master.agent.md +0 -54
  129. package/templates/agents/search-specialist.agent.md +0 -59
  130. package/templates/agents/security-analyst.agent.md +0 -57
  131. package/templates/agents/security-auditor.agent.md +0 -138
  132. package/templates/agents/security-engineer.agent.md +0 -57
  133. package/templates/agents/seo-authority-builder.agent.md +0 -116
  134. package/templates/agents/seo-cannibalization-detector.agent.md +0 -103
  135. package/templates/agents/seo-content-auditor.agent.md +0 -63
  136. package/templates/agents/seo-content-planner.agent.md +0 -88
  137. package/templates/agents/seo-content-refresher.agent.md +0 -98
  138. package/templates/agents/seo-content-writer.agent.md +0 -76
  139. package/templates/agents/seo-keyword-strategist.agent.md +0 -75
  140. package/templates/agents/seo-meta-optimizer.agent.md +0 -72
  141. package/templates/agents/seo-snippet-hunter.agent.md +0 -94
  142. package/templates/agents/seo-specialist.agent.md +0 -57
  143. package/templates/agents/seo-structure-architect.agent.md +0 -88
  144. package/templates/agents/service-mesh-expert.agent.md +0 -41
  145. package/templates/agents/sql-pro.agent.md +0 -146
  146. package/templates/agents/sre-engineer.agent.md +0 -58
  147. package/templates/agents/swift-expert.agent.md +0 -49
  148. package/templates/agents/task-distributor.agent.md +0 -47
  149. package/templates/agents/tdd-orchestrator.agent.md +0 -183
  150. package/templates/agents/technical-writer.agent.md +0 -48
  151. package/templates/agents/temporal-python-pro.agent.md +0 -349
  152. package/templates/agents/terraform-engineer.agent.md +0 -57
  153. package/templates/agents/terraform-specialist.agent.md +0 -137
  154. package/templates/agents/test-automator.agent.md +0 -203
  155. package/templates/agents/test-engineer.agent.md +0 -55
  156. package/templates/agents/threat-modeling-expert.agent.md +0 -44
  157. package/templates/agents/trend-analyst.agent.md +0 -47
  158. package/templates/agents/tutorial-engineer.agent.md +0 -118
  159. package/templates/agents/typescript-pro.agent.md +0 -48
  160. package/templates/agents/ui-designer.agent.md +0 -48
  161. package/templates/agents/ui-ux-designer.agent.md +0 -188
  162. package/templates/agents/ui-visual-validator.agent.md +0 -192
  163. package/templates/agents/ux-researcher.agent.md +0 -48
  164. package/templates/agents/vector-database-engineer.agent.md +0 -43
  165. package/templates/agents/vue-expert.agent.md +0 -48
  166. package/templates/agents/websocket-engineer.agent.md +0 -49
  167. package/templates/agents/workflow-orchestrator.agent.md +0 -48
  168. package/templates/skills/angular-migration/SKILL.md +0 -410
  169. package/templates/skills/api-design-principles/SKILL.md +0 -528
  170. package/templates/skills/api-design-principles/assets/api-design-checklist.md +0 -155
  171. package/templates/skills/api-design-principles/assets/rest-api-template.py +0 -182
  172. package/templates/skills/api-design-principles/references/graphql-schema-design.md +0 -583
  173. package/templates/skills/api-design-principles/references/rest-best-practices.md +0 -408
  174. package/templates/skills/architecture-decision-records/SKILL.md +0 -428
  175. package/templates/skills/architecture-patterns/SKILL.md +0 -494
  176. package/templates/skills/async-python-patterns/SKILL.md +0 -694
  177. package/templates/skills/auth-implementation-patterns/SKILL.md +0 -634
  178. package/templates/skills/changelog-automation/SKILL.md +0 -552
  179. package/templates/skills/code-review/SKILL.md +0 -62
  180. package/templates/skills/code-review-excellence/SKILL.md +0 -520
  181. package/templates/skills/competitive-landscape/SKILL.md +0 -479
  182. package/templates/skills/context-driven-development/SKILL.md +0 -385
  183. package/templates/skills/cost-optimization/SKILL.md +0 -274
  184. package/templates/skills/cqrs-implementation/SKILL.md +0 -554
  185. package/templates/skills/data-quality-frameworks/SKILL.md +0 -587
  186. package/templates/skills/data-storytelling/SKILL.md +0 -453
  187. package/templates/skills/database-migration/SKILL.md +0 -424
  188. package/templates/skills/dbt-transformation-patterns/SKILL.md +0 -561
  189. package/templates/skills/debugging-strategies/SKILL.md +0 -527
  190. package/templates/skills/defi-protocol-templates/SKILL.md +0 -454
  191. package/templates/skills/dependency-upgrade/SKILL.md +0 -409
  192. package/templates/skills/deployment-pipeline-design/SKILL.md +0 -359
  193. package/templates/skills/distributed-tracing/SKILL.md +0 -438
  194. package/templates/skills/dotnet-backend-patterns/SKILL.md +0 -815
  195. package/templates/skills/dotnet-backend-patterns/assets/repository-template.cs +0 -523
  196. package/templates/skills/dotnet-backend-patterns/assets/service-template.cs +0 -336
  197. package/templates/skills/dotnet-backend-patterns/references/dapper-patterns.md +0 -544
  198. package/templates/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +0 -355
  199. package/templates/skills/e2e-testing-patterns/SKILL.md +0 -547
  200. package/templates/skills/employment-contract-templates/SKILL.md +0 -507
  201. package/templates/skills/error-handling-patterns/SKILL.md +0 -636
  202. package/templates/skills/event-store-design/SKILL.md +0 -437
  203. package/templates/skills/fastapi-templates/SKILL.md +0 -567
  204. package/templates/skills/git-advanced-workflows/SKILL.md +0 -400
  205. package/templates/skills/github-actions-templates/SKILL.md +0 -333
  206. package/templates/skills/go-concurrency-patterns/SKILL.md +0 -655
  207. package/templates/skills/grafana-dashboards/SKILL.md +0 -369
  208. package/templates/skills/helm-chart-scaffolding/SKILL.md +0 -544
  209. package/templates/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -42
  210. package/templates/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -185
  211. package/templates/skills/helm-chart-scaffolding/references/chart-structure.md +0 -500
  212. package/templates/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -244
  213. package/templates/skills/javascript-testing-patterns/SKILL.md +0 -1025
  214. package/templates/skills/langchain-architecture/SKILL.md +0 -338
  215. package/templates/skills/llm-evaluation/SKILL.md +0 -471
  216. package/templates/skills/microservices-patterns/SKILL.md +0 -595
  217. package/templates/skills/modern-javascript-patterns/SKILL.md +0 -911
  218. package/templates/skills/monorepo-management/SKILL.md +0 -622
  219. package/templates/skills/nextjs-app-router-patterns/SKILL.md +0 -544
  220. package/templates/skills/nodejs-backend-patterns/SKILL.md +0 -1020
  221. package/templates/skills/nx-workspace-patterns/SKILL.md +0 -452
  222. package/templates/skills/openapi-spec-generation/SKILL.md +0 -1028
  223. package/templates/skills/paypal-integration/SKILL.md +0 -467
  224. package/templates/skills/pci-compliance/SKILL.md +0 -466
  225. package/templates/skills/postgresql/SKILL.md +0 -204
  226. package/templates/skills/projection-patterns/SKILL.md +0 -490
  227. package/templates/skills/prometheus-configuration/SKILL.md +0 -392
  228. package/templates/skills/prompt-engineering-patterns/SKILL.md +0 -201
  229. package/templates/skills/prompt-engineering-patterns/assets/few-shot-examples.json +0 -106
  230. package/templates/skills/prompt-engineering-patterns/assets/prompt-template-library.md +0 -246
  231. package/templates/skills/prompt-engineering-patterns/references/chain-of-thought.md +0 -399
  232. package/templates/skills/prompt-engineering-patterns/references/few-shot-learning.md +0 -369
  233. package/templates/skills/prompt-engineering-patterns/references/prompt-optimization.md +0 -414
  234. package/templates/skills/prompt-engineering-patterns/references/prompt-templates.md +0 -470
  235. package/templates/skills/prompt-engineering-patterns/references/system-prompts.md +0 -189
  236. package/templates/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +0 -279
  237. package/templates/skills/python-packaging/SKILL.md +0 -870
  238. package/templates/skills/python-performance-optimization/SKILL.md +0 -869
  239. package/templates/skills/python-testing-patterns/SKILL.md +0 -907
  240. package/templates/skills/rag-implementation/SKILL.md +0 -403
  241. package/templates/skills/react-modernization/SKILL.md +0 -513
  242. package/templates/skills/react-native-architecture/SKILL.md +0 -671
  243. package/templates/skills/react-state-management/SKILL.md +0 -429
  244. package/templates/skills/risk-metrics-calculation/SKILL.md +0 -555
  245. package/templates/skills/rust-async-patterns/SKILL.md +0 -517
  246. package/templates/skills/secrets-management/SKILL.md +0 -346
  247. package/templates/skills/security-requirement-extraction/SKILL.md +0 -677
  248. package/templates/skills/security-review/SKILL.md +0 -78
  249. package/templates/skills/shellcheck-configuration/SKILL.md +0 -454
  250. package/templates/skills/similarity-search-patterns/SKILL.md +0 -558
  251. package/templates/skills/slo-implementation/SKILL.md +0 -329
  252. package/templates/skills/sql-optimization-patterns/SKILL.md +0 -493
  253. package/templates/skills/stripe-integration/SKILL.md +0 -442
  254. package/templates/skills/systematic-debugging/SKILL.md +0 -57
  255. package/templates/skills/tailwind-design-system/SKILL.md +0 -666
  256. package/templates/skills/temporal-python-testing/SKILL.md +0 -158
  257. package/templates/skills/temporal-python-testing/resources/integration-testing.md +0 -455
  258. package/templates/skills/temporal-python-testing/resources/local-setup.md +0 -553
  259. package/templates/skills/temporal-python-testing/resources/replay-testing.md +0 -462
  260. package/templates/skills/temporal-python-testing/resources/unit-testing.md +0 -328
  261. package/templates/skills/terraform-module-library/SKILL.md +0 -249
  262. package/templates/skills/terraform-module-library/references/aws-modules.md +0 -63
  263. package/templates/skills/test-driven-development/SKILL.md +0 -46
  264. package/templates/skills/threat-mitigation-mapping/SKILL.md +0 -745
  265. package/templates/skills/track-management/SKILL.md +0 -593
  266. package/templates/skills/typescript-advanced-types/SKILL.md +0 -717
  267. package/templates/skills/ui-ux-pro-max/SKILL.md +0 -352
  268. package/templates/skills/ui-ux-pro-max/data/charts.csv +0 -26
  269. package/templates/skills/ui-ux-pro-max/data/colors.csv +0 -97
  270. package/templates/skills/ui-ux-pro-max/data/icons.csv +0 -101
  271. package/templates/skills/ui-ux-pro-max/data/landing.csv +0 -31
  272. package/templates/skills/ui-ux-pro-max/data/products.csv +0 -97
  273. package/templates/skills/ui-ux-pro-max/data/prompts.csv +0 -24
  274. package/templates/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  275. package/templates/skills/ui-ux-pro-max/data/styles.csv +0 -59
  276. package/templates/skills/ui-ux-pro-max/data/typography.csv +0 -58
  277. package/templates/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  278. package/templates/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  279. package/templates/skills/ui-ux-pro-max/data/web-interface.csv +0 -31
  280. package/templates/skills/ui-ux-pro-max/scripts/core.py +0 -258
  281. package/templates/skills/ui-ux-pro-max/scripts/design_system.py +0 -547
  282. package/templates/skills/ui-ux-pro-max/scripts/search.py +0 -76
  283. package/templates/skills/uv-package-manager/SKILL.md +0 -831
  284. package/templates/skills/vector-index-tuning/SKILL.md +0 -521
  285. package/templates/skills/wcag-audit-patterns/SKILL.md +0 -555
  286. package/templates/skills/workflow-orchestration-patterns/SKILL.md +0 -316
  287. package/templates/skills/workflow-patterns/SKILL.md +0 -623
  288. package/templates/skills/writing-plans/SKILL.md +0 -64
@@ -1,424 +0,0 @@
1
- ---
2
- name: database-migration
3
- description: Execute database migrations across ORMs and platforms with zero-downtime strategies, data transformation, and rollback procedures. Use when migrating databases, changing schemas, performing data transformations, or implementing zero-downtime deployment strategies.
4
- ---
5
-
6
- # Database Migration
7
-
8
- Master database schema and data migrations across ORMs (Sequelize, TypeORM, Prisma), including rollback strategies and zero-downtime deployments.
9
-
10
- ## When to Use This Skill
11
-
12
- - Migrating between different ORMs
13
- - Performing schema transformations
14
- - Moving data between databases
15
- - Implementing rollback procedures
16
- - Zero-downtime deployments
17
- - Database version upgrades
18
- - Data model refactoring
19
-
20
- ## ORM Migrations
21
-
22
- ### Sequelize Migrations
23
- ```javascript
24
- // migrations/20231201-create-users.js
25
- module.exports = {
26
- up: async (queryInterface, Sequelize) => {
27
- await queryInterface.createTable('users', {
28
- id: {
29
- type: Sequelize.INTEGER,
30
- primaryKey: true,
31
- autoIncrement: true
32
- },
33
- email: {
34
- type: Sequelize.STRING,
35
- unique: true,
36
- allowNull: false
37
- },
38
- createdAt: Sequelize.DATE,
39
- updatedAt: Sequelize.DATE
40
- });
41
- },
42
-
43
- down: async (queryInterface, Sequelize) => {
44
- await queryInterface.dropTable('users');
45
- }
46
- };
47
-
48
- // Run: npx sequelize-cli db:migrate
49
- // Rollback: npx sequelize-cli db:migrate:undo
50
- ```
51
-
52
- ### TypeORM Migrations
53
- ```typescript
54
- // migrations/1701234567-CreateUsers.ts
55
- import { MigrationInterface, QueryRunner, Table } from 'typeorm';
56
-
57
- export class CreateUsers1701234567 implements MigrationInterface {
58
- public async up(queryRunner: QueryRunner): Promise<void> {
59
- await queryRunner.createTable(
60
- new Table({
61
- name: 'users',
62
- columns: [
63
- {
64
- name: 'id',
65
- type: 'int',
66
- isPrimary: true,
67
- isGenerated: true,
68
- generationStrategy: 'increment'
69
- },
70
- {
71
- name: 'email',
72
- type: 'varchar',
73
- isUnique: true
74
- },
75
- {
76
- name: 'created_at',
77
- type: 'timestamp',
78
- default: 'CURRENT_TIMESTAMP'
79
- }
80
- ]
81
- })
82
- );
83
- }
84
-
85
- public async down(queryRunner: QueryRunner): Promise<void> {
86
- await queryRunner.dropTable('users');
87
- }
88
- }
89
-
90
- // Run: npm run typeorm migration:run
91
- // Rollback: npm run typeorm migration:revert
92
- ```
93
-
94
- ### Prisma Migrations
95
- ```prisma
96
- // schema.prisma
97
- model User {
98
- id Int @id @default(autoincrement())
99
- email String @unique
100
- createdAt DateTime @default(now())
101
- }
102
-
103
- // Generate migration: npx prisma migrate dev --name create_users
104
- // Apply: npx prisma migrate deploy
105
- ```
106
-
107
- ## Schema Transformations
108
-
109
- ### Adding Columns with Defaults
110
- ```javascript
111
- // Safe migration: add column with default
112
- module.exports = {
113
- up: async (queryInterface, Sequelize) => {
114
- await queryInterface.addColumn('users', 'status', {
115
- type: Sequelize.STRING,
116
- defaultValue: 'active',
117
- allowNull: false
118
- });
119
- },
120
-
121
- down: async (queryInterface) => {
122
- await queryInterface.removeColumn('users', 'status');
123
- }
124
- };
125
- ```
126
-
127
- ### Renaming Columns (Zero Downtime)
128
- ```javascript
129
- // Step 1: Add new column
130
- module.exports = {
131
- up: async (queryInterface, Sequelize) => {
132
- await queryInterface.addColumn('users', 'full_name', {
133
- type: Sequelize.STRING
134
- });
135
-
136
- // Copy data from old column
137
- await queryInterface.sequelize.query(
138
- 'UPDATE users SET full_name = name'
139
- );
140
- },
141
-
142
- down: async (queryInterface) => {
143
- await queryInterface.removeColumn('users', 'full_name');
144
- }
145
- };
146
-
147
- // Step 2: Update application to use new column
148
-
149
- // Step 3: Remove old column
150
- module.exports = {
151
- up: async (queryInterface) => {
152
- await queryInterface.removeColumn('users', 'name');
153
- },
154
-
155
- down: async (queryInterface, Sequelize) => {
156
- await queryInterface.addColumn('users', 'name', {
157
- type: Sequelize.STRING
158
- });
159
- }
160
- };
161
- ```
162
-
163
- ### Changing Column Types
164
- ```javascript
165
- module.exports = {
166
- up: async (queryInterface, Sequelize) => {
167
- // For large tables, use multi-step approach
168
-
169
- // 1. Add new column
170
- await queryInterface.addColumn('users', 'age_new', {
171
- type: Sequelize.INTEGER
172
- });
173
-
174
- // 2. Copy and transform data
175
- await queryInterface.sequelize.query(`
176
- UPDATE users
177
- SET age_new = CAST(age AS INTEGER)
178
- WHERE age IS NOT NULL
179
- `);
180
-
181
- // 3. Drop old column
182
- await queryInterface.removeColumn('users', 'age');
183
-
184
- // 4. Rename new column
185
- await queryInterface.renameColumn('users', 'age_new', 'age');
186
- },
187
-
188
- down: async (queryInterface, Sequelize) => {
189
- await queryInterface.changeColumn('users', 'age', {
190
- type: Sequelize.STRING
191
- });
192
- }
193
- };
194
- ```
195
-
196
- ## Data Transformations
197
-
198
- ### Complex Data Migration
199
- ```javascript
200
- module.exports = {
201
- up: async (queryInterface, Sequelize) => {
202
- // Get all records
203
- const [users] = await queryInterface.sequelize.query(
204
- 'SELECT id, address_string FROM users'
205
- );
206
-
207
- // Transform each record
208
- for (const user of users) {
209
- const addressParts = user.address_string.split(',');
210
-
211
- await queryInterface.sequelize.query(
212
- `UPDATE users
213
- SET street = :street,
214
- city = :city,
215
- state = :state
216
- WHERE id = :id`,
217
- {
218
- replacements: {
219
- id: user.id,
220
- street: addressParts[0]?.trim(),
221
- city: addressParts[1]?.trim(),
222
- state: addressParts[2]?.trim()
223
- }
224
- }
225
- );
226
- }
227
-
228
- // Drop old column
229
- await queryInterface.removeColumn('users', 'address_string');
230
- },
231
-
232
- down: async (queryInterface, Sequelize) => {
233
- // Reconstruct original column
234
- await queryInterface.addColumn('users', 'address_string', {
235
- type: Sequelize.STRING
236
- });
237
-
238
- await queryInterface.sequelize.query(`
239
- UPDATE users
240
- SET address_string = CONCAT(street, ', ', city, ', ', state)
241
- `);
242
-
243
- await queryInterface.removeColumn('users', 'street');
244
- await queryInterface.removeColumn('users', 'city');
245
- await queryInterface.removeColumn('users', 'state');
246
- }
247
- };
248
- ```
249
-
250
- ## Rollback Strategies
251
-
252
- ### Transaction-Based Migrations
253
- ```javascript
254
- module.exports = {
255
- up: async (queryInterface, Sequelize) => {
256
- const transaction = await queryInterface.sequelize.transaction();
257
-
258
- try {
259
- await queryInterface.addColumn(
260
- 'users',
261
- 'verified',
262
- { type: Sequelize.BOOLEAN, defaultValue: false },
263
- { transaction }
264
- );
265
-
266
- await queryInterface.sequelize.query(
267
- 'UPDATE users SET verified = true WHERE email_verified_at IS NOT NULL',
268
- { transaction }
269
- );
270
-
271
- await transaction.commit();
272
- } catch (error) {
273
- await transaction.rollback();
274
- throw error;
275
- }
276
- },
277
-
278
- down: async (queryInterface) => {
279
- await queryInterface.removeColumn('users', 'verified');
280
- }
281
- };
282
- ```
283
-
284
- ### Checkpoint-Based Rollback
285
- ```javascript
286
- module.exports = {
287
- up: async (queryInterface, Sequelize) => {
288
- // Create backup table
289
- await queryInterface.sequelize.query(
290
- 'CREATE TABLE users_backup AS SELECT * FROM users'
291
- );
292
-
293
- try {
294
- // Perform migration
295
- await queryInterface.addColumn('users', 'new_field', {
296
- type: Sequelize.STRING
297
- });
298
-
299
- // Verify migration
300
- const [result] = await queryInterface.sequelize.query(
301
- "SELECT COUNT(*) as count FROM users WHERE new_field IS NULL"
302
- );
303
-
304
- if (result[0].count > 0) {
305
- throw new Error('Migration verification failed');
306
- }
307
-
308
- // Drop backup
309
- await queryInterface.dropTable('users_backup');
310
- } catch (error) {
311
- // Restore from backup
312
- await queryInterface.sequelize.query('DROP TABLE users');
313
- await queryInterface.sequelize.query(
314
- 'CREATE TABLE users AS SELECT * FROM users_backup'
315
- );
316
- await queryInterface.dropTable('users_backup');
317
- throw error;
318
- }
319
- }
320
- };
321
- ```
322
-
323
- ## Zero-Downtime Migrations
324
-
325
- ### Blue-Green Deployment Strategy
326
- ```javascript
327
- // Phase 1: Make changes backward compatible
328
- module.exports = {
329
- up: async (queryInterface, Sequelize) => {
330
- // Add new column (both old and new code can work)
331
- await queryInterface.addColumn('users', 'email_new', {
332
- type: Sequelize.STRING
333
- });
334
- }
335
- };
336
-
337
- // Phase 2: Deploy code that writes to both columns
338
-
339
- // Phase 3: Backfill data
340
- module.exports = {
341
- up: async (queryInterface) => {
342
- await queryInterface.sequelize.query(`
343
- UPDATE users
344
- SET email_new = email
345
- WHERE email_new IS NULL
346
- `);
347
- }
348
- };
349
-
350
- // Phase 4: Deploy code that reads from new column
351
-
352
- // Phase 5: Remove old column
353
- module.exports = {
354
- up: async (queryInterface) => {
355
- await queryInterface.removeColumn('users', 'email');
356
- }
357
- };
358
- ```
359
-
360
- ## Cross-Database Migrations
361
-
362
- ### PostgreSQL to MySQL
363
- ```javascript
364
- // Handle differences
365
- module.exports = {
366
- up: async (queryInterface, Sequelize) => {
367
- const dialectName = queryInterface.sequelize.getDialect();
368
-
369
- if (dialectName === 'mysql') {
370
- await queryInterface.createTable('users', {
371
- id: {
372
- type: Sequelize.INTEGER,
373
- primaryKey: true,
374
- autoIncrement: true
375
- },
376
- data: {
377
- type: Sequelize.JSON // MySQL JSON type
378
- }
379
- });
380
- } else if (dialectName === 'postgres') {
381
- await queryInterface.createTable('users', {
382
- id: {
383
- type: Sequelize.INTEGER,
384
- primaryKey: true,
385
- autoIncrement: true
386
- },
387
- data: {
388
- type: Sequelize.JSONB // PostgreSQL JSONB type
389
- }
390
- });
391
- }
392
- }
393
- };
394
- ```
395
-
396
- ## Resources
397
-
398
- - **references/orm-switching.md**: ORM migration guides
399
- - **references/schema-migration.md**: Schema transformation patterns
400
- - **references/data-transformation.md**: Data migration scripts
401
- - **references/rollback-strategies.md**: Rollback procedures
402
- - **assets/schema-migration-template.sql**: SQL migration templates
403
- - **assets/data-migration-script.py**: Data migration utilities
404
- - **scripts/test-migration.sh**: Migration testing script
405
-
406
- ## Best Practices
407
-
408
- 1. **Always Provide Rollback**: Every up() needs a down()
409
- 2. **Test Migrations**: Test on staging first
410
- 3. **Use Transactions**: Atomic migrations when possible
411
- 4. **Backup First**: Always backup before migration
412
- 5. **Small Changes**: Break into small, incremental steps
413
- 6. **Monitor**: Watch for errors during deployment
414
- 7. **Document**: Explain why and how
415
- 8. **Idempotent**: Migrations should be rerunnable
416
-
417
- ## Common Pitfalls
418
-
419
- - Not testing rollback procedures
420
- - Making breaking changes without downtime strategy
421
- - Forgetting to handle NULL values
422
- - Not considering index performance
423
- - Ignoring foreign key constraints
424
- - Migrating too much data at once