@cheetah.js/cli 0.1.58 → 0.1.60

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.
package/README.md CHANGED
@@ -15,10 +15,12 @@ Para gerar uma nova migração, use o comando
15
15
  ```bash
16
16
  bunx cli migration:generate
17
17
  ```
18
- Isso irá gerar um novo arquivo de migração com apenas as diferenças desde a última migration.
19
-
20
- #### Sistema de Snapshot
21
- O CLI mantém um arquivo `schema-snapshot.json` no diretório de migrations que armazena o estado atual do schema. Isso garante que:
18
+ Isso irá gerar um novo arquivo de migração com apenas as diferenças desde a última migration.
19
+
20
+ Partial indexes (Postgres) definidos nas entidades também são gerados automaticamente no SQL de migration. Em MySQL, predicates em índices não são suportados.
21
+
22
+ #### Sistema de Snapshot
23
+ O CLI mantém um arquivo `schema-snapshot.json` no diretório de migrations que armazena o estado atual do schema. Isso garante que:
22
24
  - Apenas as mudanças desde a última migration sejam geradas
23
25
  - Não há regeneração de queries já executadas
24
26
  - O histórico de mudanças é mantido de forma incremental
@@ -104,4 +106,4 @@ O CLI agora gera snapshots corretamente:
104
106
  - ✅ Migrations são geradas apenas quando há mudanças reais
105
107
 
106
108
  ### Contribuição
107
- Contribuições são bem-vindas. Por favor, abra um problema ou faça um pull request com suas mudanças.
109
+ Contribuições são bem-vindas. Por favor, abra um problema ou faça um pull request com suas mudanças.
package/dist/cli.ts ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+
3
+ import 'reflect-metadata';
4
+ import { Command } from 'commander';
5
+ import { Migrator } from './migrator/migrator';
6
+
7
+ const program = new Command();
8
+
9
+ program.name('[npx|bunx] cli').description('CLI to Cheetah.js ORM ');
10
+
11
+ program
12
+ .command('migration:generate')
13
+ .description('generate a new migration file with a diff')
14
+ .action(async (str, options) => {
15
+ const migrator = new Migrator();
16
+ await migrator.generateMigration();
17
+ process.exit(0);
18
+ });
19
+
20
+ program
21
+ .command('migration:run')
22
+ .description('run all pending migrations')
23
+ .action(async (str, options) => {
24
+ const migrator = new Migrator();
25
+ await migrator.migrate();
26
+ process.exit(0);
27
+ });
28
+
29
+ program.parse();
package/dist/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ import 'reflect-metadata';
2
+
3
+ export * from './migrator/migrator';
4
+ export * from './migrator/snapshot-manager';
5
+ export * from './migrator/snapshot-cleaner';
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ node --experimental-modules ./node_modules/@cheetah.js/cli/dist/cli.js "$@"
@@ -6,6 +6,17 @@ export declare class DiffCalculator {
6
6
  constructor(entities: EntityStorage, driver: DriverInterface);
7
7
  diff(snapshotBd: SnapshotTable[], snapshotEntities: SnapshotTable[]): TableDiff[];
8
8
  private checkIndexes;
9
+ private checkUniques;
10
+ private buildUniqueTable;
11
+ private uniqueChanged;
12
+ private normalizeUniqueColumns;
13
+ private formatUniqueName;
14
+ private buildIndexTable;
15
+ private buildIndexChangeDiff;
16
+ private indexChanged;
17
+ private normalizeIndexColumns;
18
+ private normalizeIndexWhere;
19
+ private cleanIndexToken;
9
20
  private formatIndexName;
10
21
  private createNewColumn;
11
22
  private diffColumnType;
@@ -35,6 +35,7 @@ class DiffCalculator {
35
35
  colDiffs,
36
36
  });
37
37
  this.checkIndexes(bdTable, entityTable, colDiffs);
38
+ this.checkUniques(bdTable, entityTable, colDiffs);
38
39
  }
39
40
  else {
40
41
  const colDiffs = [];
@@ -69,6 +70,7 @@ class DiffCalculator {
69
70
  }
70
71
  });
71
72
  this.checkIndexes(bdTable, entityTable, colDiffs);
73
+ this.checkUniques(bdTable, entityTable, colDiffs);
72
74
  if (colDiffs.length > 0) {
73
75
  diffs.push({
74
76
  tableName: tableName,
@@ -86,10 +88,7 @@ class DiffCalculator {
86
88
  colDiffs.push({
87
89
  actionType: 'INDEX',
88
90
  colName: '*',
89
- indexTables: entityTable.indexes.map((index) => ({
90
- name: this.formatIndexName(entityTable.tableName, index.indexName),
91
- properties: index.columnName.split(','),
92
- })),
91
+ indexTables: entityTable.indexes.map((index) => this.buildIndexTable(entityTable.tableName, index)),
93
92
  });
94
93
  }
95
94
  if (!entityTable || !entityTable.indexes) {
@@ -127,17 +126,124 @@ class DiffCalculator {
127
126
  colDiffs.push({
128
127
  actionType: 'INDEX',
129
128
  colName: entityIndex.columnName,
130
- indexTables: [
131
- {
132
- name: this.formatIndexName(entityTable.tableName, indexName),
133
- properties: entityIndex.columnName.split(','),
134
- },
135
- ],
129
+ indexTables: [this.buildIndexTable(entityTable.tableName, entityIndex)],
136
130
  });
137
131
  }
132
+ else if (this.indexChanged(bdIndex, entityIndex)) {
133
+ colDiffs.push(this.buildIndexChangeDiff(entityTable.tableName, indexName, entityIndex));
134
+ }
138
135
  });
139
136
  }
140
137
  }
138
+ checkUniques(bdTable, entityTable, colDiffs) {
139
+ const bdUniques = bdTable?.uniques || [];
140
+ const entityUniques = entityTable?.uniques || [];
141
+ if (bdUniques.length === 0 && entityUniques.length === 0) {
142
+ return;
143
+ }
144
+ const bdUniquesMap = new Map(bdUniques.map((unique) => [
145
+ this.formatUniqueName(bdTable.tableName, unique.uniqueName),
146
+ unique,
147
+ ]));
148
+ const entityUniquesMap = new Map(entityUniques.map((unique) => [
149
+ this.formatUniqueName(entityTable.tableName, unique.uniqueName),
150
+ unique,
151
+ ]));
152
+ const allUniques = new Set([...bdUniquesMap.keys(), ...entityUniquesMap.keys()]);
153
+ allUniques.forEach((uniqueName) => {
154
+ const bdUnique = bdUniquesMap.get(uniqueName);
155
+ const entityUnique = entityUniquesMap.get(uniqueName);
156
+ if (!entityUnique && bdUnique) {
157
+ colDiffs.push({
158
+ actionType: 'ALTER',
159
+ colName: bdUnique.columnName,
160
+ uniqueTables: [{ name: uniqueName }],
161
+ });
162
+ }
163
+ else if (!bdUnique && entityUnique) {
164
+ colDiffs.push({
165
+ actionType: 'ALTER',
166
+ colName: entityUnique.columnName,
167
+ uniqueTables: [
168
+ this.buildUniqueTable(entityTable.tableName, entityUnique),
169
+ ],
170
+ });
171
+ }
172
+ else if (bdUnique &&
173
+ entityUnique &&
174
+ this.uniqueChanged(bdUnique, entityUnique)) {
175
+ colDiffs.push({
176
+ actionType: 'ALTER',
177
+ colName: entityUnique.columnName,
178
+ uniqueTables: [
179
+ { name: uniqueName },
180
+ this.buildUniqueTable(entityTable.tableName, entityUnique),
181
+ ],
182
+ });
183
+ }
184
+ });
185
+ }
186
+ buildUniqueTable(tableName, unique) {
187
+ return {
188
+ name: this.formatUniqueName(tableName, unique.uniqueName),
189
+ properties: this.normalizeUniqueColumns(unique.columnName),
190
+ };
191
+ }
192
+ uniqueChanged(bdUnique, entityUnique) {
193
+ const bdColumns = this.normalizeUniqueColumns(bdUnique.columnName).join(',');
194
+ const entityColumns = this.normalizeUniqueColumns(entityUnique.columnName).join(',');
195
+ return bdColumns !== entityColumns;
196
+ }
197
+ normalizeUniqueColumns(columnName) {
198
+ const tokens = columnName.split(',');
199
+ return tokens.map((token) => this.cleanIndexToken(token));
200
+ }
201
+ formatUniqueName(tableName, uniqueName) {
202
+ const lower = uniqueName.toLowerCase();
203
+ if (lower.includes(tableName.toLowerCase())) {
204
+ return uniqueName;
205
+ }
206
+ return `${tableName}_${uniqueName}`;
207
+ }
208
+ buildIndexTable(tableName, index) {
209
+ return {
210
+ name: this.formatIndexName(tableName, index.indexName),
211
+ properties: this.normalizeIndexColumns(index.columnName),
212
+ where: this.normalizeIndexWhere(index.where),
213
+ };
214
+ }
215
+ buildIndexChangeDiff(tableName, indexName, index) {
216
+ return {
217
+ actionType: 'INDEX',
218
+ colName: index.columnName,
219
+ indexTables: [{ name: indexName }, this.buildIndexTable(tableName, index)],
220
+ };
221
+ }
222
+ indexChanged(bdIndex, entityIndex) {
223
+ const bdColumns = this.normalizeIndexColumns(bdIndex.columnName).join(',');
224
+ const entityColumns = this.normalizeIndexColumns(entityIndex.columnName).join(',');
225
+ if (bdColumns !== entityColumns) {
226
+ return true;
227
+ }
228
+ const bdWhere = this.normalizeIndexWhere(bdIndex.where);
229
+ const entityWhere = this.normalizeIndexWhere(entityIndex.where);
230
+ return bdWhere !== entityWhere;
231
+ }
232
+ normalizeIndexColumns(columnName) {
233
+ const tokens = columnName.split(',');
234
+ return tokens.map((token) => this.cleanIndexToken(token));
235
+ }
236
+ normalizeIndexWhere(where) {
237
+ if (!where) {
238
+ return undefined;
239
+ }
240
+ const trimmed = where.trim();
241
+ return trimmed.replace(/\s+/g, ' ');
242
+ }
243
+ cleanIndexToken(token) {
244
+ const trimmed = token.trim();
245
+ return trimmed.replace(/"/g, '');
246
+ }
141
247
  formatIndexName(tableName, indexName) {
142
248
  const lower = indexName.toLowerCase();
143
249
  if (lower.includes(tableName.toLowerCase()) || lower.includes('pkey')) {
@@ -187,8 +293,9 @@ class DiffCalculator {
187
293
  }
188
294
  const normalizedBdType = this.normalizeType(bdCol.type);
189
295
  const normalizedEntityType = this.normalizeType(colType);
190
- const typesDiffer = !normalizedBdType.includes(normalizedEntityType) && !normalizedEntityType.includes(normalizedBdType);
191
- const lengthsDiffer = (bdCol.length != null && length != null && bdCol.length !== length);
296
+ const typesDiffer = !normalizedBdType.includes(normalizedEntityType) &&
297
+ !normalizedEntityType.includes(normalizedBdType);
298
+ const lengthsDiffer = bdCol.length != null && length != null && bdCol.length !== length;
192
299
  if (typesDiffer || lengthsDiffer) {
193
300
  colDiffs.push({
194
301
  actionType: 'ALTER',
@@ -1 +1 @@
1
- {"version":3,"file":"diff-calculator.js","sourceRoot":"","sources":["../../../src/migrator/diff-calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff-calculator.js","sourceRoot":"","sources":["../../../src/migrator/diff-calculator.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,19 @@ export type SnapshotTable = {
6
6
  schema?: string;
7
7
  columns: ColumnsInfo[];
8
8
  indexes: SnapshotIndexInfo[];
9
+ uniques?: SnapshotUniqueInfo[];
9
10
  foreignKeys?: ForeignKeyInfo[];
10
11
  };
11
12
  export type SnapshotIndexInfo = {
12
13
  table: string;
13
14
  indexName: string;
14
15
  columnName: string;
16
+ where?: string;
17
+ };
18
+ export type SnapshotUniqueInfo = {
19
+ table: string;
20
+ uniqueName: string;
21
+ columnName: string;
15
22
  };
16
23
  export type ForeignKeyInfo = {
17
24
  referencedTableName: string;
@@ -34,15 +41,22 @@ export type ColumnsInfo = {
34
41
  foreignKeys?: ForeignKeyInfo[];
35
42
  };
36
43
  export type SqlActionType = 'CREATE' | 'DELETE' | 'ALTER' | 'INDEX';
44
+ export type IndexTable = {
45
+ name: string;
46
+ properties?: string[];
47
+ where?: string;
48
+ };
49
+ export type UniqueTable = {
50
+ name: string;
51
+ properties?: string[];
52
+ };
37
53
  export type ColDiff = {
38
54
  actionType: SqlActionType;
39
55
  colName: string;
40
56
  colType?: string;
41
57
  colLength?: number;
42
- indexTables?: {
43
- name: string;
44
- properties?: string[];
45
- }[];
58
+ indexTables?: IndexTable[];
59
+ uniqueTables?: UniqueTable[];
46
60
  colChanges?: {
47
61
  default?: string | null;
48
62
  primary?: boolean;
@@ -74,6 +88,12 @@ export declare class Migrator {
74
88
  private initKnex;
75
89
  private run;
76
90
  private createTable;
91
+ private buildPartialIndexStatements;
92
+ private collectPartialIndexTables;
93
+ private buildPartialIndexStatement;
94
+ private ensureStatement;
95
+ private isPartialIndexTable;
96
+ private formatIndexColumns;
77
97
  private sortTablesByDependencies;
78
98
  private dropEnumConstraints;
79
99
  assignType(builder: knex.Knex.AlterTableBuilder, diff: ColDiff, tableDiff: TableDiff): knex.Knex.ColumnBuilder;
@@ -81,6 +101,15 @@ export declare class Migrator {
81
101
  generateMigration(configFile?: string, onlySql?: boolean): Promise<any[]>;
82
102
  private lastTreatment;
83
103
  private normalizeSnapshotTypes;
104
+ private normalizeIndexes;
105
+ private normalizeIndex;
106
+ private isIndexDefinition;
107
+ private parseIndexDefinition;
108
+ private extractIndexColumns;
109
+ private extractFirstParenContent;
110
+ private normalizeIndexColumns;
111
+ private cleanIndexToken;
112
+ private extractIndexWhere;
84
113
  private snapshotBd;
85
114
  private snapshotEntities;
86
115
  destroy(): Promise<void>;
@@ -120,6 +120,7 @@ class Migrator {
120
120
  const sortedDiff = this.sortTablesByDependencies(diff);
121
121
  for (const tableDiff of sortedDiff) {
122
122
  let query;
123
+ const partialIndexSql = this.buildPartialIndexStatements(tableDiff);
123
124
  if (tableDiff.newTable) {
124
125
  query = await this.createTable(tableDiff);
125
126
  }
@@ -139,10 +140,21 @@ class Migrator {
139
140
  colDiff.indexTables.forEach((indexTable) => {
140
141
  if (typeof indexTable.properties === 'undefined') {
141
142
  builder.dropIndex([], indexTable.name);
143
+ return;
142
144
  }
143
- else {
144
- builder.index(indexTable.properties, indexTable.name);
145
+ if (this.isPartialIndexTable(indexTable)) {
146
+ return;
145
147
  }
148
+ builder.index(indexTable.properties, indexTable.name);
149
+ });
150
+ }
151
+ if (colDiff.uniqueTables) {
152
+ colDiff.uniqueTables.forEach((uniqueTable) => {
153
+ if (typeof uniqueTable.properties === 'undefined') {
154
+ builder.dropUnique([], uniqueTable.name);
155
+ return;
156
+ }
157
+ builder.unique(uniqueTable.properties, uniqueTable.name);
146
158
  });
147
159
  }
148
160
  if (colDiff.actionType === 'DELETE') {
@@ -185,6 +197,7 @@ class Migrator {
185
197
  .toSQL();
186
198
  }
187
199
  sql.push(...query.flatMap((q) => q.sql.concat(';')));
200
+ sql.push(...partialIndexSql);
188
201
  }
189
202
  return sql;
190
203
  }
@@ -197,13 +210,24 @@ class Migrator {
197
210
  diff.indexTables.forEach((indexTable) => {
198
211
  if (typeof indexTable.properties === 'undefined') {
199
212
  builder.dropIndex([], indexTable.name);
213
+ return;
200
214
  }
201
- else {
202
- if (indexTable.name.includes('pkey')) {
203
- return;
204
- }
205
- builder.index(indexTable.properties, indexTable.name);
215
+ if (this.isPartialIndexTable(indexTable)) {
216
+ return;
217
+ }
218
+ if (indexTable.name.includes('pkey')) {
219
+ return;
206
220
  }
221
+ builder.index(indexTable.properties, indexTable.name);
222
+ });
223
+ }
224
+ if (diff.uniqueTables) {
225
+ diff.uniqueTables.forEach((uniqueTable) => {
226
+ if (typeof uniqueTable.properties === 'undefined') {
227
+ builder.dropUnique([], uniqueTable.name);
228
+ return;
229
+ }
230
+ builder.unique(uniqueTable.properties, uniqueTable.name);
207
231
  });
208
232
  }
209
233
  if (typeof diff.colChanges?.foreignKeys !== 'undefined') {
@@ -231,6 +255,56 @@ class Migrator {
231
255
  })
232
256
  .toSQL();
233
257
  }
258
+ buildPartialIndexStatements(tableDiff) {
259
+ const tables = this.collectPartialIndexTables(tableDiff.colDiffs);
260
+ const statements = tables.map((indexTable) => this.buildPartialIndexStatement(tableDiff, indexTable));
261
+ return statements;
262
+ }
263
+ collectPartialIndexTables(colDiffs) {
264
+ const tables = [];
265
+ for (const diff of colDiffs) {
266
+ if (diff.actionType !== 'INDEX' || !diff.indexTables) {
267
+ continue;
268
+ }
269
+ for (const indexTable of diff.indexTables) {
270
+ if (this.isPartialIndexTable(indexTable)) {
271
+ tables.push(indexTable);
272
+ }
273
+ }
274
+ }
275
+ return tables;
276
+ }
277
+ buildPartialIndexStatement(tableDiff, indexTable) {
278
+ if (this.orm.driverInstance.dbType !== 'postgres') {
279
+ throw new Error('Partial indexes are only supported on postgres.');
280
+ }
281
+ const schema = tableDiff.schema ?? 'public';
282
+ const columns = this.formatIndexColumns(indexTable.properties);
283
+ const statement = `CREATE INDEX "${indexTable.name}" ON "${schema}"."${tableDiff.tableName}" (${columns}) WHERE ${indexTable.where};`;
284
+ return this.ensureStatement(statement);
285
+ }
286
+ ensureStatement(statement) {
287
+ const trimmed = statement.trim();
288
+ if (trimmed.endsWith(';')) {
289
+ return trimmed;
290
+ }
291
+ return `${trimmed};`;
292
+ }
293
+ isPartialIndexTable(indexTable) {
294
+ if (!indexTable.where) {
295
+ return false;
296
+ }
297
+ if (!indexTable.properties) {
298
+ return false;
299
+ }
300
+ return indexTable.properties.length > 0;
301
+ }
302
+ formatIndexColumns(properties) {
303
+ if (!properties) {
304
+ return '';
305
+ }
306
+ return properties.map((prop) => `"${prop}"`).join(', ');
307
+ }
234
308
  sortTablesByDependencies(diff) {
235
309
  const newTables = diff.filter((d) => d.newTable);
236
310
  const alterTables = diff.filter((d) => !d.newTable);
@@ -520,8 +594,7 @@ class Migrator {
520
594
  if (!type)
521
595
  return type;
522
596
  const lower = type.toLowerCase();
523
- if (lower.startsWith('decimal') ||
524
- lower.startsWith('numeric')) {
597
+ if (lower.startsWith('decimal') || lower.startsWith('numeric')) {
525
598
  return 'decimal';
526
599
  }
527
600
  if (lower === 'double precision' ||
@@ -539,8 +612,62 @@ class Migrator {
539
612
  type: normalizeType(col.type),
540
613
  nullable: col.nullable ?? false,
541
614
  })),
615
+ indexes: this.normalizeIndexes(table.indexes),
542
616
  }));
543
617
  }
618
+ normalizeIndexes(indexes) {
619
+ if (!indexes) {
620
+ return [];
621
+ }
622
+ return indexes.map((index) => this.normalizeIndex(index));
623
+ }
624
+ normalizeIndex(index) {
625
+ if (!this.isIndexDefinition(index.columnName)) {
626
+ return index;
627
+ }
628
+ const parsed = this.parseIndexDefinition(index.columnName);
629
+ return {
630
+ ...index,
631
+ columnName: parsed.columns,
632
+ where: parsed.where ?? index.where,
633
+ };
634
+ }
635
+ isIndexDefinition(value) {
636
+ const upper = value.toUpperCase();
637
+ return upper.includes('CREATE INDEX') || upper.includes('CREATE UNIQUE INDEX');
638
+ }
639
+ parseIndexDefinition(definition) {
640
+ const columns = this.extractIndexColumns(definition);
641
+ const where = this.extractIndexWhere(definition);
642
+ return { columns, where };
643
+ }
644
+ extractIndexColumns(definition) {
645
+ const content = this.extractFirstParenContent(definition);
646
+ return this.normalizeIndexColumns(content);
647
+ }
648
+ extractFirstParenContent(definition) {
649
+ const match = definition.match(/\(([^)]+)\)/);
650
+ if (!match) {
651
+ return '';
652
+ }
653
+ return match[1];
654
+ }
655
+ normalizeIndexColumns(value) {
656
+ const tokens = value.split(',');
657
+ const cleaned = tokens.map((token) => this.cleanIndexToken(token));
658
+ return cleaned.join(',');
659
+ }
660
+ cleanIndexToken(token) {
661
+ const trimmed = token.trim();
662
+ return trimmed.replace(/"/g, '');
663
+ }
664
+ extractIndexWhere(definition) {
665
+ const match = definition.match(/WHERE (.+)$/i);
666
+ if (!match) {
667
+ return undefined;
668
+ }
669
+ return match[1].trim();
670
+ }
544
671
  async snapshotBd() {
545
672
  const snapshot = [];
546
673
  for (const [_, values] of this.entities.entries()) {