Compare commits

...
Author SHA1 Message Date
Félix MalfaitandGitHub c1f04901e2 Merge branch 'main' into chore/rename-database-migrate-to-upgrade 2026-06-07 14:55:02 +02:00
claude[bot]andFélix Malfait c91ee9819b chore(server): rename database:migrate:{prod,generate} to database:upgrade:{run,generate}
`database:migrate:*` reads like a classic TypeORM workflow but actually
drives the new instance-command upgrade system. Renaming aligns the
command names with what they do and stops misleading new contributors
(and AI agents) into reaching for TypeORM-style migrations.

- Add `database:upgrade:run` yarn script (new preferred name)
- Keep `database:migrate:prod` yarn script as a deprecation alias —
  same body, prints a deprecation notice. Self-hosters following the
  upgrade guide keep working unchanged.
- Update `database:init:prod` yarn script to call the new
  `database:upgrade:run` internally
- Rename nx target `database:migrate:generate` → `database:upgrade:generate`
  (no compat alias, per maintainer guidance)
- Update CLAUDE.md, UPGRADE_COMMANDS.md, twenty-docs (English), and
  .cursor/rules to point at the new names

Note: `.github/workflows/ci-server.yaml` line 225 / 228 still reference
`database:migrate:generate` — left untouched because this PR is opened
through a workflow-restricted token. A maintainer needs to update those
two lines before merging.

Co-authored-by: Félix Malfait <[email protected]>
2026-06-07 12:45:30 +00:00
8 changed files with 15 additions and 14 deletions
+2 -2
View File
@@ -70,7 +70,7 @@ npx nx run twenty-front:graphql:generate # Generate GraphQL types
# Database
npx nx database:reset twenty-server # Reset database
npx nx run twenty-server:database:init:prod # Initialize database
npx nx run twenty-server:database:migrate:prod # Run migrations
npx nx run twenty-server:database:upgrade:run # Run instance commands (migrate:prod is deprecated)
# Development
npx nx run twenty-server:start # Start the server
@@ -82,7 +82,7 @@ npx nx run twenty-server:test # Run unit tests
npx nx run twenty-server:test:integration:with-db-reset # Run integration tests
# Upgrade commands (instance + workspace)
npx nx run twenty-server:database:migrate:generate --name <name> --type <fast|slow>
npx nx run twenty-server:database:upgrade:generate --name <name> --type <fast|slow>
```
## Usage Guidelines
+1 -1
View File
@@ -20,7 +20,7 @@ See `packages/twenty-server/docs/UPGRADE_COMMANDS.md` for full documentation.
- **When changing a `*.entity.ts` file**, generate an instance command:
```bash
npx nx run twenty-server:database:migrate:generate --name <name> --type <fast|slow>
npx nx run twenty-server:database:upgrade:generate --name <name> --type <fast|slow>
```
- **Fast commands** (`--type fast`, default) are for schema-only changes that must run immediately. They implement `FastInstanceCommand` with `up`/`down` methods and use the `@RegisteredInstanceCommand` decorator.
+4 -4
View File
@@ -71,10 +71,10 @@ npx nx build twenty-server
# Database management
npx nx database:reset twenty-server # Reset database
npx nx run twenty-server:database:init:prod # Initialize database
npx nx run twenty-server:database:migrate:prod # Run instance commands (fast only)
npx nx run twenty-server:database:upgrade:run # Run instance commands (fast only)
# Generate an instance command (fast or slow)
npx nx run twenty-server:database:migrate:generate --name <name> --type <fast|slow>
npx nx run twenty-server:database:upgrade:generate --name <name> --type <fast|slow>
```
### Database Inspection (Postgres MCP)
@@ -163,7 +163,7 @@ packages/
- **PostgreSQL** as primary database
- **Redis** for caching and sessions
- **ClickHouse** for analytics (when enabled)
- When changing entity files, generate an **instance command** (`database:migrate:generate --name <name> --type <fast|slow>`)
- When changing entity files, generate an **instance command** (`database:upgrade:generate --name <name> --type <fast|slow>`)
- **Fast** instance commands handle schema changes; **slow** ones add a `runDataMigration` step for data backfills
- **Workspace commands** iterate over all active/suspended workspaces for per-workspace upgrades
- Commands use `@RegisteredInstanceCommand` and `@RegisteredWorkspaceCommand` decorators for automatic discovery
@@ -182,7 +182,7 @@ IMPORTANT: Use Context7 for code generation, setup or configuration steps, or li
### Before Making Changes
1. Always run linting (`lint:diff-with-main`) and type checking after code changes
2. Test changes with relevant test suites (prefer single-file test runs)
3. Ensure instance commands are generated for entity changes (`database:migrate:generate`)
3. Ensure instance commands are generated for entity changes (`database:upgrade:generate`)
4. Check that GraphQL schema changes are backward compatible
5. Run `graphql:generate` after any GraphQL schema changes
@@ -48,7 +48,7 @@ npx nx run twenty-server:database:reset
#### For objects in Core/Metadata schemas (TypeORM)
```bash
npx nx run twenty-server:database:migrate:generate
npx nx run twenty-server:database:upgrade:generate
```
## Tech Stack
@@ -18,8 +18,8 @@ npx nx run twenty-server:worker # Background worker
```bash
npx nx database:reset twenty-server # Reset and seed database
npx nx run twenty-server:database:migrate:prod # Run migrations
npx nx run twenty-server:database:migrate:generate --name <name> --type <fast|slow> # Generate a migration
npx nx run twenty-server:database:upgrade:run # Run instance commands (migrate:prod is deprecated)
npx nx run twenty-server:database:upgrade:generate --name <name> --type <fast|slow> # Generate an instance command
```
## Linting
@@ -12,7 +12,7 @@ Both are registered via decorators and automatically discovered by the upgrade p
### Generating an instance command
```bash
npx nx run twenty-server:database:migrate:generate --name <name> --type <fast|slow>
npx nx run twenty-server:database:upgrade:generate --name <name> --type <fast|slow>
```
This generates a timestamped file and auto-registers it in `instance-commands.constant.ts` — do not edit that file manually.
+3 -2
View File
@@ -9,8 +9,9 @@
"start:prod": "node dist/main",
"command:prod": "node dist/command/command",
"worker:prod": "node dist/queue-worker/queue-worker",
"database:init:prod": "node dist/database/scripts/setup-db.js && yarn database:migrate:prod --force --include-slow",
"database:migrate:prod": "node dist/command/command run-instance-commands",
"database:init:prod": "node dist/database/scripts/setup-db.js && yarn database:upgrade:run --force --include-slow",
"database:upgrade:run": "node dist/command/command run-instance-commands",
"database:migrate:prod": "echo '[deprecated] yarn database:migrate:prod is deprecated; use yarn database:upgrade:run instead.' && node dist/command/command run-instance-commands",
"clickhouse:migrate:prod": "node dist/database/clickHouse/migrations/run-migrations.js",
"typeorm": "../../node_modules/typeorm/.bin/typeorm"
},
+1 -1
View File
@@ -215,7 +215,7 @@
"parallel": false
}
},
"database:migrate:generate": {
"database:upgrade:generate": {
"executor": "nx:run-commands",
"dependsOn": ["build"],
"options": {