gummy-cli 0.0.48 → 0.0.49
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/dist/bin.cjs +1 -1
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/bin.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/migrate/actions.mts","../src/utils.mts"],"sourcesContent":["import { Kysely, sql } from 'kysely'\nimport { ColumnDefinition, ColumnDefinitionDiff, DatabaseState, IndexDefinition } from './types.mjs'\nimport { ColumnDefinitionBuilder } from 'kysely'\nimport { areArrayEqual } from '../utils.mjs'\n\nexport abstract class MigrationAction {\n abstract applyToState(state: DatabaseState): void\n abstract execute(db: Kysely<any>): Promise<void>\n abstract toCode(): string\n}\n\n// Helper functions\nfunction mapColumnTypeToDataType(columnDef: ColumnDefinition): any {\n switch (columnDef.dataType) {\n case 'BigInteger':\n return 'bigint'\n case 'BigSerial':\n return 'bigserial'\n case 'Boolean':\n return 'boolean'\n case 'Date':\n return 'date'\n case 'Decimal':\n return 'decimal'\n case 'Email':\n case 'Varchar':\n return columnDef.length ? `varchar(${columnDef.length})` : 'varchar'\n case 'Integer':\n return 'integer'\n case 'Serial':\n return 'serial'\n case 'Text':\n return 'text'\n case 'Timestamp':\n return 'timestamp'\n case 'UUID':\n return 'uuid'\n default:\n throw new Error(`Unsupported ColumnType: ${columnDef.dataType}`)\n }\n}\n\nfunction buildCol(col: ColumnDefinitionBuilder, columnDef: ColumnDefinition): ColumnDefinitionBuilder {\n if (columnDef.isPrimaryKey) {\n col = col.primaryKey()\n }\n if (columnDef.notNull) {\n col = col.notNull()\n }\n if (columnDef.isUnique) {\n col = col.unique()\n }\n if (columnDef.hasDefault && columnDef.defaultValue !== undefined) {\n if (typeof columnDef.defaultValue === 'string' && columnDef.defaultValue.startsWith('sql`')) {\n col = col.defaultTo(sql`${columnDef.defaultValue}`)\n } else {\n col = col.defaultTo(columnDef.defaultValue)\n }\n }\n // Foreign key handling is done separately\n return col\n}\n\n// Helper functions for constraint names\n\nfunction sortColumns(columns: string[]): string[] {\n return [...columns].sort()\n}\n\nexport function generateForeignKeyConstraintName(tableName: string, columnName: string): string {\n return `${tableName}_${columnName}_fk`\n}\n\nexport function generateUniqueConstraintName(tableName: string, columns: string[]): string {\n const sortedColumns = sortColumns(columns)\n return `${tableName}_${sortedColumns.join('_')}_unique`\n}\n\nexport function generateIndexName(tableName: string, columns: string[]): string {\n const sortedColumns = sortColumns(columns)\n return `${tableName}_${sortedColumns.join('_')}_idx`\n}\n\n// executeActions function\nexport async function executeActions(actions: MigrationAction[], db: Kysely<any>): Promise<void> {\n for (const action of actions) {\n await action.execute(db)\n }\n}\n\n// MigrationAction subclasses\n\nexport class CreateTableAction extends MigrationAction {\n table: string\n columns: ColumnDefinition[]\n ifNotExists: boolean\n indexes?: IndexDefinition[]\n uniqueConstraints?: string[][] // Array of column name arrays\n\n constructor(\n tableName: string,\n columns: ColumnDefinition[],\n options?: {\n ifNotExists?: boolean\n indexes?: IndexDefinition[]\n uniqueConstraints?: string[][]\n },\n ) {\n super()\n this.table = tableName\n this.columns = columns\n this.ifNotExists = options?.ifNotExists ?? false\n this.indexes = options?.indexes\n this.uniqueConstraints = options?.uniqueConstraints\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table]) {\n state.tables[this.table] = { columns: {} }\n }\n for (const column of this.columns) {\n state.tables[this.table].columns[column.name] = { ...column }\n }\n if (this.indexes) {\n state.tables[this.table].indexes = this.indexes\n }\n if (this.uniqueConstraints) {\n state.tables[this.table].uniqueConstraints = this.uniqueConstraints\n }\n }\n\n async execute(db: Kysely<any>) {\n let builder = db.schema.createTable(this.table)\n if (this.ifNotExists) {\n builder = builder.ifNotExists()\n }\n for (const column of this.columns) {\n const dataType = mapColumnTypeToDataType(column)\n builder = builder.addColumn(column.name, dataType, (col) => buildCol(col, column))\n }\n // Add unique constraints\n if (this.uniqueConstraints) {\n for (const columns of this.uniqueConstraints) {\n const constraintName = generateUniqueConstraintName(this.table, columns)\n builder = builder.addUniqueConstraint(constraintName, columns as any)\n }\n }\n await builder.execute()\n\n // Create indexes\n if (this.indexes) {\n for (const index of this.indexes) {\n await new CreateIndexAction(index.table, index.columns).execute(db)\n }\n }\n }\n\n toCode(): string {\n return `new CreateTableAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)}, ${JSON.stringify({\n ifNotExists: this.ifNotExists,\n indexes: this.indexes,\n uniqueConstraints: this.uniqueConstraints,\n })})`\n }\n}\n\nexport class DropTableAction extends MigrationAction {\n table: string\n ifExists: boolean\n\n constructor(tableName: string, ifExists: boolean = false) {\n super()\n this.table = tableName\n this.ifExists = ifExists\n }\n\n applyToState(state: DatabaseState): void {\n delete state.tables[this.table]\n }\n\n async execute(db: Kysely<any>) {\n let builder = db.schema.dropTable(this.table)\n if (this.ifExists) {\n builder = builder.ifExists()\n }\n await builder.execute()\n }\n\n toCode(): string {\n return `new DropTableAction(${JSON.stringify(this.table)}, ${this.ifExists})`\n }\n}\n\nexport class AddColumnAction extends MigrationAction {\n table: string\n column: ColumnDefinition\n\n constructor(tableName: string, column: ColumnDefinition) {\n super()\n this.table = tableName\n this.column = column\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table]) {\n state.tables[this.table] = { columns: {} }\n }\n state.tables[this.table].columns[this.column.name] = { ...this.column }\n }\n\n async execute(db: Kysely<any>) {\n const dataType = mapColumnTypeToDataType(this.column)\n await db.schema\n .alterTable(this.table)\n .addColumn(this.column.name, dataType, (col) => buildCol(col, this.column))\n .execute()\n }\n\n toCode(): string {\n return `new AddColumnAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.column)})`\n }\n}\n\n// 4. DropColumnAction\nexport class DropColumnAction extends MigrationAction {\n table: string\n columnName: string\n\n constructor(tableName: string, columnName: string) {\n super()\n this.table = tableName\n this.columnName = columnName\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table]) {\n delete state.tables[this.table].columns[this.columnName]\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).dropColumn(this.columnName).execute()\n }\n\n toCode(): string {\n return `new DropColumnAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)})`\n }\n}\n\nexport class AlterColumnAction extends MigrationAction {\n table: string\n columnName: string\n changes: ColumnDefinitionDiff\n\n constructor(tableName: string, columnName: string, changes: ColumnDefinitionDiff) {\n super()\n this.table = tableName\n this.columnName = columnName\n this.changes = changes\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table] && state.tables[this.table].columns[this.columnName]) {\n const column = state.tables[this.table].columns[this.columnName]\n if (this.changes.dataType !== undefined) {\n column.dataType = this.changes.dataType\n }\n if (this.changes.length !== undefined) {\n column.length = this.changes.length\n }\n if (this.changes.isPrimaryKey !== undefined) {\n column.isPrimaryKey = this.changes.isPrimaryKey\n }\n if (this.changes.notNull !== undefined) {\n column.notNull = this.changes.notNull\n }\n if (this.changes.hasDefault !== undefined) {\n column.hasDefault = this.changes.hasDefault\n column.defaultValue = this.changes.defaultValue\n }\n if (this.changes.isUnique !== undefined) {\n column.isUnique = this.changes.isUnique\n }\n }\n }\n\n async execute(db: Kysely<any>) {\n if (this.changes.dataType !== undefined || this.changes.length !== undefined) {\n await db.schema\n .alterTable(this.table)\n .alterColumn(this.columnName, (col) =>\n col.setDataType(\n mapColumnTypeToDataType({\n dataType: this.changes.dataType,\n length: this.changes.length,\n } as ColumnDefinition),\n ),\n )\n .execute()\n }\n\n if (this.changes.notNull !== undefined) {\n await db.schema\n .alterTable(this.table)\n .alterColumn(this.columnName, (col) => (this.changes.notNull ? col.setNotNull() : col.dropNotNull()))\n .execute()\n }\n\n if (this.changes.hasDefault !== undefined) {\n await db.schema\n .alterTable(this.table)\n .alterColumn(this.columnName, (col) => {\n if (this.changes.hasDefault && this.changes.defaultValue !== undefined) {\n if (typeof this.changes.defaultValue === 'string' && this.changes.defaultValue.startsWith('sql`')) {\n return col.setDefault(sql`${this.changes.defaultValue}`)\n } else {\n return col.setDefault(this.changes.defaultValue)\n }\n } else {\n return col.dropDefault()\n }\n })\n .execute()\n }\n\n if (this.changes.isUnique !== undefined) {\n const constraintName = generateUniqueConstraintName(this.table, [this.columnName])\n if (this.changes.isUnique) {\n await db.schema.alterTable(this.table).addUniqueConstraint(constraintName, [this.columnName]).execute()\n } else {\n await db.schema.alterTable(this.table).dropConstraint(constraintName).execute()\n }\n }\n }\n\n toCode(): string {\n return `new AlterColumnAction(${JSON.stringify(\n this.table,\n )}, ${JSON.stringify(this.columnName)}, ${JSON.stringify(this.changes)})`\n }\n}\n\nexport class AddForeignKeyConstraintAction extends MigrationAction {\n table: string\n columnName: string\n referencedTable: string\n referencedColumn: string\n constraintName: string\n onDelete?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n onUpdate?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n\n constructor(\n tableName: string,\n columnName: string,\n referencedTable: string,\n referencedColumn: string,\n options?: {\n onDelete?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n onUpdate?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n },\n ) {\n super()\n this.table = tableName\n this.columnName = columnName\n this.referencedTable = referencedTable\n this.referencedColumn = referencedColumn\n this.constraintName = generateForeignKeyConstraintName(tableName, columnName)\n this.onDelete = options?.onDelete\n this.onUpdate = options?.onUpdate\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table] && state.tables[this.table].columns[this.columnName]) {\n state.tables[this.table].columns[this.columnName].references = `${this.referencedTable}.${this.referencedColumn}`\n state.tables[this.table].columns[this.columnName].onDelete = this.onDelete\n state.tables[this.table].columns[this.columnName].onUpdate = this.onUpdate\n }\n }\n\n async execute(db: Kysely<any>) {\n let builder = db.schema\n .alterTable(this.table)\n .addForeignKeyConstraint(this.constraintName, [this.columnName], this.referencedTable, [this.referencedColumn])\n\n if (this.onDelete) {\n builder = builder.onDelete(this.onDelete)\n }\n if (this.onUpdate) {\n builder = builder.onUpdate(this.onUpdate)\n }\n\n await builder.execute()\n }\n\n toCode(): string {\n return `new AddForeignKeyConstraintAction(${JSON.stringify(\n this.table,\n )}, ${JSON.stringify(this.columnName)}, ${JSON.stringify(\n this.referencedTable,\n )}, ${JSON.stringify(this.referencedColumn)}, ${JSON.stringify({\n onDelete: this.onDelete,\n onUpdate: this.onUpdate,\n })})`\n }\n}\n\nexport class DropForeignKeyConstraintAction extends MigrationAction {\n table: string\n columnName: string\n constraintName: string\n\n constructor(tableName: string, columnName: string) {\n super()\n this.table = tableName\n this.columnName = columnName\n this.constraintName = generateForeignKeyConstraintName(tableName, columnName)\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table]) {\n const column = state.tables[this.table].columns[this.columnName]\n if (column && column.references) {\n column.references = undefined\n column.onDelete = undefined\n column.onUpdate = undefined\n }\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).dropConstraint(this.constraintName).execute()\n }\n\n toCode(): string {\n return `new DropForeignKeyConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)})`\n }\n}\n\nexport class CreateIndexAction extends MigrationAction {\n table: string\n columns: string[]\n indexName: string\n\n constructor(table: string, columns: string[]) {\n super()\n this.table = table\n this.columns = columns\n this.indexName = generateIndexName(table, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table].indexes) {\n state.tables[this.table].indexes = []\n }\n state.tables[this.table].indexes!.push({\n table: this.table,\n columns: this.columns,\n })\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.createIndex(this.indexName).on(this.table).columns(this.columns).execute()\n }\n\n toCode(): string {\n return `new CreateIndexAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n\nexport class DropIndexAction extends MigrationAction {\n table: string\n columns: string[]\n indexName: string\n\n constructor(table: string, columns: string[]) {\n super()\n this.table = table\n this.columns = columns\n this.indexName = generateIndexName(table, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table].indexes) {\n state.tables[this.table].indexes = state.tables[this.table].indexes!.filter(\n (idx) => !areArrayEqual(idx.columns, this.columns),\n )\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.dropIndex(this.indexName).execute()\n }\n\n toCode(): string {\n return `new DropIndexAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n\nexport class AddUniqueConstraintAction extends MigrationAction {\n table: string\n columns: string[]\n constraintName: string\n\n constructor(tableName: string, columns: string[]) {\n super()\n this.table = tableName\n this.columns = columns\n this.constraintName = generateUniqueConstraintName(tableName, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table].uniqueConstraints) {\n state.tables[this.table].uniqueConstraints = []\n }\n state.tables[this.table].uniqueConstraints!.push(this.columns)\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).addUniqueConstraint(this.constraintName, this.columns).execute()\n }\n\n toCode(): string {\n return `new AddUniqueConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n\nexport class DropUniqueConstraintAction extends MigrationAction {\n table: string\n columns: string[]\n constraintName: string\n\n constructor(tableName: string, columns: string[]) {\n super()\n this.table = tableName\n this.columns = columns\n this.constraintName = generateUniqueConstraintName(tableName, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table].uniqueConstraints) {\n state.tables[this.table].uniqueConstraints = state.tables[this.table].uniqueConstraints!.filter(\n (cols) => generateUniqueConstraintName(this.table, cols) !== this.constraintName,\n )\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).dropConstraint(this.constraintName).execute()\n }\n\n toCode(): string {\n return `new DropUniqueConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n","export function areArrayEqual(a: string[], b: string[]): boolean {\n if (a.length !== b.length) return false\n const sortedA = [...a].sort()\n const sortedB = [...b].sort()\n return sortedA.every((value, index) => value === sortedB[index])\n}\n"],"mappings":"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","names":["sql","areArrayEqual","a","b","sortedA","sortedB","value","index","MigrationAction","mapColumnTypeToDataType","columnDef","buildCol","col","sql","sortColumns","columns","generateForeignKeyConstraintName","tableName","columnName","generateUniqueConstraintName","sortedColumns","generateIndexName","executeActions","actions","db","action","CreateTableAction","options","state","column","builder","dataType","constraintName","index","CreateIndexAction","DropTableAction","ifExists","AddColumnAction","DropColumnAction","AlterColumnAction","changes","AddForeignKeyConstraintAction","referencedTable","referencedColumn","DropForeignKeyConstraintAction","table","DropIndexAction","idx","areArrayEqual","AddUniqueConstraintAction","DropUniqueConstraintAction","cols"]}
|
|
1
|
+
{"version":3,"sources":["../src/migrate/actions.mts","../src/utils.mts"],"sourcesContent":["import { Kysely, sql } from 'kysely'\nimport { ColumnDefinition, ColumnDefinitionDiff, DatabaseState, IndexDefinition } from './types.mjs'\nimport { ColumnDefinitionBuilder } from 'kysely'\nimport { areArrayEqual } from '../utils.mjs'\n\nexport abstract class MigrationAction {\n abstract applyToState(state: DatabaseState): void\n abstract execute(db: Kysely<any>): Promise<void>\n abstract toCode(): string\n}\n\n// Helper functions\nfunction mapColumnTypeToDataType(columnDef: ColumnDefinition): any {\n switch (columnDef.dataType) {\n case 'BigInteger':\n return 'bigint'\n case 'BigSerial':\n return 'bigserial'\n case 'Boolean':\n return 'boolean'\n case 'Date':\n return 'date'\n case 'Decimal':\n return 'decimal'\n case 'Email':\n case 'Varchar':\n return columnDef.length ? `varchar(${columnDef.length})` : 'varchar'\n case 'Integer':\n return 'integer'\n case 'Serial':\n return 'serial'\n case 'Text':\n return 'text'\n case 'Timestamp':\n return 'timestamp'\n case 'UUID':\n return 'uuid'\n case 'Json':\n return 'json'\n default:\n throw new Error(`Unsupported ColumnType: ${columnDef.dataType}`)\n }\n}\n\nfunction buildCol(col: ColumnDefinitionBuilder, columnDef: ColumnDefinition): ColumnDefinitionBuilder {\n if (columnDef.isPrimaryKey) {\n col = col.primaryKey()\n }\n if (columnDef.notNull) {\n col = col.notNull()\n }\n if (columnDef.isUnique) {\n col = col.unique()\n }\n if (columnDef.hasDefault && columnDef.defaultValue !== undefined) {\n if (typeof columnDef.defaultValue === 'string' && columnDef.defaultValue.startsWith('sql`')) {\n col = col.defaultTo(sql`${columnDef.defaultValue}`)\n } else {\n col = col.defaultTo(columnDef.defaultValue)\n }\n }\n // Foreign key handling is done separately\n return col\n}\n\n// Helper functions for constraint names\n\nfunction sortColumns(columns: string[]): string[] {\n return [...columns].sort()\n}\n\nexport function generateForeignKeyConstraintName(tableName: string, columnName: string): string {\n return `${tableName}_${columnName}_fk`\n}\n\nexport function generateUniqueConstraintName(tableName: string, columns: string[]): string {\n const sortedColumns = sortColumns(columns)\n return `${tableName}_${sortedColumns.join('_')}_unique`\n}\n\nexport function generateIndexName(tableName: string, columns: string[]): string {\n const sortedColumns = sortColumns(columns)\n return `${tableName}_${sortedColumns.join('_')}_idx`\n}\n\n// executeActions function\nexport async function executeActions(actions: MigrationAction[], db: Kysely<any>): Promise<void> {\n for (const action of actions) {\n await action.execute(db)\n }\n}\n\n// MigrationAction subclasses\n\nexport class CreateTableAction extends MigrationAction {\n table: string\n columns: ColumnDefinition[]\n ifNotExists: boolean\n indexes?: IndexDefinition[]\n uniqueConstraints?: string[][] // Array of column name arrays\n\n constructor(\n tableName: string,\n columns: ColumnDefinition[],\n options?: {\n ifNotExists?: boolean\n indexes?: IndexDefinition[]\n uniqueConstraints?: string[][]\n },\n ) {\n super()\n this.table = tableName\n this.columns = columns\n this.ifNotExists = options?.ifNotExists ?? false\n this.indexes = options?.indexes\n this.uniqueConstraints = options?.uniqueConstraints\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table]) {\n state.tables[this.table] = { columns: {} }\n }\n for (const column of this.columns) {\n state.tables[this.table].columns[column.name] = { ...column }\n }\n if (this.indexes) {\n state.tables[this.table].indexes = this.indexes\n }\n if (this.uniqueConstraints) {\n state.tables[this.table].uniqueConstraints = this.uniqueConstraints\n }\n }\n\n async execute(db: Kysely<any>) {\n let builder = db.schema.createTable(this.table)\n if (this.ifNotExists) {\n builder = builder.ifNotExists()\n }\n for (const column of this.columns) {\n const dataType = mapColumnTypeToDataType(column)\n builder = builder.addColumn(column.name, dataType, (col) => buildCol(col, column))\n }\n // Add unique constraints\n if (this.uniqueConstraints) {\n for (const columns of this.uniqueConstraints) {\n const constraintName = generateUniqueConstraintName(this.table, columns)\n builder = builder.addUniqueConstraint(constraintName, columns as any)\n }\n }\n await builder.execute()\n\n // Create indexes\n if (this.indexes) {\n for (const index of this.indexes) {\n await new CreateIndexAction(index.table, index.columns).execute(db)\n }\n }\n }\n\n toCode(): string {\n return `new CreateTableAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)}, ${JSON.stringify({\n ifNotExists: this.ifNotExists,\n indexes: this.indexes,\n uniqueConstraints: this.uniqueConstraints,\n })})`\n }\n}\n\nexport class DropTableAction extends MigrationAction {\n table: string\n ifExists: boolean\n\n constructor(tableName: string, ifExists: boolean = false) {\n super()\n this.table = tableName\n this.ifExists = ifExists\n }\n\n applyToState(state: DatabaseState): void {\n delete state.tables[this.table]\n }\n\n async execute(db: Kysely<any>) {\n let builder = db.schema.dropTable(this.table)\n if (this.ifExists) {\n builder = builder.ifExists()\n }\n await builder.execute()\n }\n\n toCode(): string {\n return `new DropTableAction(${JSON.stringify(this.table)}, ${this.ifExists})`\n }\n}\n\nexport class AddColumnAction extends MigrationAction {\n table: string\n column: ColumnDefinition\n\n constructor(tableName: string, column: ColumnDefinition) {\n super()\n this.table = tableName\n this.column = column\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table]) {\n state.tables[this.table] = { columns: {} }\n }\n state.tables[this.table].columns[this.column.name] = { ...this.column }\n }\n\n async execute(db: Kysely<any>) {\n const dataType = mapColumnTypeToDataType(this.column)\n await db.schema\n .alterTable(this.table)\n .addColumn(this.column.name, dataType, (col) => buildCol(col, this.column))\n .execute()\n }\n\n toCode(): string {\n return `new AddColumnAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.column)})`\n }\n}\n\n// 4. DropColumnAction\nexport class DropColumnAction extends MigrationAction {\n table: string\n columnName: string\n\n constructor(tableName: string, columnName: string) {\n super()\n this.table = tableName\n this.columnName = columnName\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table]) {\n delete state.tables[this.table].columns[this.columnName]\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).dropColumn(this.columnName).execute()\n }\n\n toCode(): string {\n return `new DropColumnAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)})`\n }\n}\n\nexport class AlterColumnAction extends MigrationAction {\n table: string\n columnName: string\n changes: ColumnDefinitionDiff\n\n constructor(tableName: string, columnName: string, changes: ColumnDefinitionDiff) {\n super()\n this.table = tableName\n this.columnName = columnName\n this.changes = changes\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table] && state.tables[this.table].columns[this.columnName]) {\n const column = state.tables[this.table].columns[this.columnName]\n if (this.changes.dataType !== undefined) {\n column.dataType = this.changes.dataType\n }\n if (this.changes.length !== undefined) {\n column.length = this.changes.length\n }\n if (this.changes.isPrimaryKey !== undefined) {\n column.isPrimaryKey = this.changes.isPrimaryKey\n }\n if (this.changes.notNull !== undefined) {\n column.notNull = this.changes.notNull\n }\n if (this.changes.hasDefault !== undefined) {\n column.hasDefault = this.changes.hasDefault\n column.defaultValue = this.changes.defaultValue\n }\n if (this.changes.isUnique !== undefined) {\n column.isUnique = this.changes.isUnique\n }\n }\n }\n\n async execute(db: Kysely<any>) {\n if (this.changes.dataType !== undefined || this.changes.length !== undefined) {\n await db.schema\n .alterTable(this.table)\n .alterColumn(this.columnName, (col) =>\n col.setDataType(\n mapColumnTypeToDataType({\n dataType: this.changes.dataType,\n length: this.changes.length,\n } as ColumnDefinition),\n ),\n )\n .execute()\n }\n\n if (this.changes.notNull !== undefined) {\n await db.schema\n .alterTable(this.table)\n .alterColumn(this.columnName, (col) => (this.changes.notNull ? col.setNotNull() : col.dropNotNull()))\n .execute()\n }\n\n if (this.changes.hasDefault !== undefined) {\n await db.schema\n .alterTable(this.table)\n .alterColumn(this.columnName, (col) => {\n if (this.changes.hasDefault && this.changes.defaultValue !== undefined) {\n if (typeof this.changes.defaultValue === 'string' && this.changes.defaultValue.startsWith('sql`')) {\n return col.setDefault(sql`${this.changes.defaultValue}`)\n } else {\n return col.setDefault(this.changes.defaultValue)\n }\n } else {\n return col.dropDefault()\n }\n })\n .execute()\n }\n\n if (this.changes.isUnique !== undefined) {\n const constraintName = generateUniqueConstraintName(this.table, [this.columnName])\n if (this.changes.isUnique) {\n await db.schema.alterTable(this.table).addUniqueConstraint(constraintName, [this.columnName]).execute()\n } else {\n await db.schema.alterTable(this.table).dropConstraint(constraintName).execute()\n }\n }\n }\n\n toCode(): string {\n return `new AlterColumnAction(${JSON.stringify(\n this.table,\n )}, ${JSON.stringify(this.columnName)}, ${JSON.stringify(this.changes)})`\n }\n}\n\nexport class AddForeignKeyConstraintAction extends MigrationAction {\n table: string\n columnName: string\n referencedTable: string\n referencedColumn: string\n constraintName: string\n onDelete?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n onUpdate?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n\n constructor(\n tableName: string,\n columnName: string,\n referencedTable: string,\n referencedColumn: string,\n options?: {\n onDelete?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n onUpdate?: 'no action' | 'restrict' | 'cascade' | 'set null' | 'set default'\n },\n ) {\n super()\n this.table = tableName\n this.columnName = columnName\n this.referencedTable = referencedTable\n this.referencedColumn = referencedColumn\n this.constraintName = generateForeignKeyConstraintName(tableName, columnName)\n this.onDelete = options?.onDelete\n this.onUpdate = options?.onUpdate\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table] && state.tables[this.table].columns[this.columnName]) {\n state.tables[this.table].columns[this.columnName].references = `${this.referencedTable}.${this.referencedColumn}`\n state.tables[this.table].columns[this.columnName].onDelete = this.onDelete\n state.tables[this.table].columns[this.columnName].onUpdate = this.onUpdate\n }\n }\n\n async execute(db: Kysely<any>) {\n let builder = db.schema\n .alterTable(this.table)\n .addForeignKeyConstraint(this.constraintName, [this.columnName], this.referencedTable, [this.referencedColumn])\n\n if (this.onDelete) {\n builder = builder.onDelete(this.onDelete)\n }\n if (this.onUpdate) {\n builder = builder.onUpdate(this.onUpdate)\n }\n\n await builder.execute()\n }\n\n toCode(): string {\n return `new AddForeignKeyConstraintAction(${JSON.stringify(\n this.table,\n )}, ${JSON.stringify(this.columnName)}, ${JSON.stringify(\n this.referencedTable,\n )}, ${JSON.stringify(this.referencedColumn)}, ${JSON.stringify({\n onDelete: this.onDelete,\n onUpdate: this.onUpdate,\n })})`\n }\n}\n\nexport class DropForeignKeyConstraintAction extends MigrationAction {\n table: string\n columnName: string\n constraintName: string\n\n constructor(tableName: string, columnName: string) {\n super()\n this.table = tableName\n this.columnName = columnName\n this.constraintName = generateForeignKeyConstraintName(tableName, columnName)\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table]) {\n const column = state.tables[this.table].columns[this.columnName]\n if (column && column.references) {\n column.references = undefined\n column.onDelete = undefined\n column.onUpdate = undefined\n }\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).dropConstraint(this.constraintName).execute()\n }\n\n toCode(): string {\n return `new DropForeignKeyConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)})`\n }\n}\n\nexport class CreateIndexAction extends MigrationAction {\n table: string\n columns: string[]\n indexName: string\n\n constructor(table: string, columns: string[]) {\n super()\n this.table = table\n this.columns = columns\n this.indexName = generateIndexName(table, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table].indexes) {\n state.tables[this.table].indexes = []\n }\n state.tables[this.table].indexes!.push({\n table: this.table,\n columns: this.columns,\n })\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.createIndex(this.indexName).on(this.table).columns(this.columns).execute()\n }\n\n toCode(): string {\n return `new CreateIndexAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n\nexport class DropIndexAction extends MigrationAction {\n table: string\n columns: string[]\n indexName: string\n\n constructor(table: string, columns: string[]) {\n super()\n this.table = table\n this.columns = columns\n this.indexName = generateIndexName(table, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table].indexes) {\n state.tables[this.table].indexes = state.tables[this.table].indexes!.filter(\n (idx) => !areArrayEqual(idx.columns, this.columns),\n )\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.dropIndex(this.indexName).execute()\n }\n\n toCode(): string {\n return `new DropIndexAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n\nexport class AddUniqueConstraintAction extends MigrationAction {\n table: string\n columns: string[]\n constraintName: string\n\n constructor(tableName: string, columns: string[]) {\n super()\n this.table = tableName\n this.columns = columns\n this.constraintName = generateUniqueConstraintName(tableName, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (!state.tables[this.table].uniqueConstraints) {\n state.tables[this.table].uniqueConstraints = []\n }\n state.tables[this.table].uniqueConstraints!.push(this.columns)\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).addUniqueConstraint(this.constraintName, this.columns).execute()\n }\n\n toCode(): string {\n return `new AddUniqueConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n\nexport class DropUniqueConstraintAction extends MigrationAction {\n table: string\n columns: string[]\n constraintName: string\n\n constructor(tableName: string, columns: string[]) {\n super()\n this.table = tableName\n this.columns = columns\n this.constraintName = generateUniqueConstraintName(tableName, columns)\n }\n\n applyToState(state: DatabaseState): void {\n if (state.tables[this.table].uniqueConstraints) {\n state.tables[this.table].uniqueConstraints = state.tables[this.table].uniqueConstraints!.filter(\n (cols) => generateUniqueConstraintName(this.table, cols) !== this.constraintName,\n )\n }\n }\n\n async execute(db: Kysely<any>) {\n await db.schema.alterTable(this.table).dropConstraint(this.constraintName).execute()\n }\n\n toCode(): string {\n return `new DropUniqueConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`\n }\n}\n","export function areArrayEqual(a: string[], b: string[]): boolean {\n if (a.length !== b.length) return false\n const sortedA = [...a].sort()\n const sortedB = [...b].sort()\n return sortedA.every((value, index) => value === sortedB[index])\n}\n"],"mappings":"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","names":["sql","areArrayEqual","a","b","sortedA","sortedB","value","index","MigrationAction","mapColumnTypeToDataType","columnDef","buildCol","col","sql","sortColumns","columns","generateForeignKeyConstraintName","tableName","columnName","generateUniqueConstraintName","sortedColumns","generateIndexName","executeActions","actions","db","action","CreateTableAction","options","state","column","builder","dataType","constraintName","index","CreateIndexAction","DropTableAction","ifExists","AddColumnAction","DropColumnAction","AlterColumnAction","changes","AddForeignKeyConstraintAction","referencedTable","referencedColumn","DropForeignKeyConstraintAction","table","DropIndexAction","idx","areArrayEqual","AddUniqueConstraintAction","DropUniqueConstraintAction","cols"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gummy-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.49",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"cli": "^1.0.1",
|
|
23
23
|
"commander": "^12.1.0",
|
|
24
24
|
"glob": "^11.0.0",
|
|
25
|
-
"gummy": "^0.0.
|
|
25
|
+
"gummy": "^0.0.49",
|
|
26
26
|
"kysely": "^0.27.4",
|
|
27
27
|
"pkg-types": "^1.2.1",
|
|
28
28
|
"tsx": "^4.9.3",
|