gummy-cli 0.0.76 → 0.0.77
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 +2 -2
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +3 -3
- package/dist/bin.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{sql as
|
|
1
|
+
import{sql as $}from"kysely";function N(s,t){if(s.length!==t.length)return!1;let e=[...s].sort(),n=[...t].sort();return e.every((a,r)=>a===n[r])}var i=class{};function p(s){switch(s.dataType){case"BigInteger":return"bigint";case"BigSerial":return"bigserial";case"Boolean":return"boolean";case"Date":return"date";case"Decimal":return"decimal";case"Email":case"Varchar":return s.length?`varchar(${s.length})`:"varchar";case"Integer":return"integer";case"Serial":return"serial";case"Text":return"text";case"Timestamp":return"timestamp";case"UUID":return"uuid";case"Json":return"json";default:throw new Error(`Unsupported ColumnType: ${s.dataType}`)}}function C(s,t){return t.isPrimaryKey&&(s=s.primaryKey()),t.notNull&&(s=s.notNull()),t.isUnique&&(s=s.unique()),t.hasDbDefault&&t.dbDefault!==void 0&&(s=s.defaultTo(t.dbDefault)),s}function D(s){return[...s].sort()}function S(s,t){return`${s}_${t}_fk`}function o(s,t){let e=D(t);return`${s}_${e.join("_")}_unique`}function T(s,t){let e=D(t);return`${s}_${e.join("_")}_idx`}async function q(s,t){for(let e of s)await e.execute(t)}var u=class extends i{constructor(t,e,n){super(),this.table=t,this.columns=e,this.ifNotExists=n?.ifNotExists??!1,this.indexes=n?.indexes,this.uniqueConstraints=n?.uniqueConstraints}applyToState(t){t.tables[this.table]||(t.tables[this.table]={columns:{}});for(let e of this.columns)t.tables[this.table].columns[e.name]={...e};this.indexes&&(t.tables[this.table].indexes=this.indexes),this.uniqueConstraints&&(t.tables[this.table].uniqueConstraints=this.uniqueConstraints)}async execute(t){let e=t.schema.createTable(this.table);this.ifNotExists&&(e=e.ifNotExists());for(let n of this.columns){let a=p(n);e=e.addColumn(n.name,a,r=>C(r,n))}if(this.uniqueConstraints)for(let n of this.uniqueConstraints){let a=o(this.table,n);e=e.addUniqueConstraint(a,n)}if(await e.execute(),this.indexes)for(let n of this.indexes)await new l(n.table,n.columns).execute(t)}toCode(){return`new CreateTableAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)}, ${JSON.stringify({ifNotExists:this.ifNotExists,indexes:this.indexes,uniqueConstraints:this.uniqueConstraints})})`}},c=class extends i{constructor(t,e=!1){super(),this.table=t,this.ifExists=e}applyToState(t){delete t.tables[this.table]}async execute(t){let e=t.schema.dropTable(this.table);this.ifExists&&(e=e.ifExists()),await e.execute()}toCode(){return`new DropTableAction(${JSON.stringify(this.table)}, ${this.ifExists})`}},h=class extends i{constructor(t,e){super(),this.table=t,this.column=e}applyToState(t){t.tables[this.table]||(t.tables[this.table]={columns:{}}),t.tables[this.table].columns[this.column.name]={...this.column}}async execute(t){let e=p(this.column);await t.schema.alterTable(this.table).addColumn(this.column.name,e,n=>C(n,this.column)).execute()}toCode(){return`new AddColumnAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.column)})`}},d=class extends i{constructor(t,e){super(),this.table=t,this.columnName=e}applyToState(t){t.tables[this.table]&&delete t.tables[this.table].columns[this.columnName]}async execute(t){await t.schema.alterTable(this.table).dropColumn(this.columnName).execute()}toCode(){return`new DropColumnAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)})`}},f=class extends i{constructor(t,e,n){super(),this.table=t,this.columnName=e,this.changes=n}applyToState(t){if(t.tables[this.table]&&t.tables[this.table].columns[this.columnName]){let e=t.tables[this.table].columns[this.columnName];this.changes.dataType!==void 0&&(e.dataType=this.changes.dataType),this.changes.length!==void 0&&(e.length=this.changes.length),this.changes.isPrimaryKey!==void 0&&(e.isPrimaryKey=this.changes.isPrimaryKey),this.changes.notNull!==void 0&&(e.notNull=this.changes.notNull),this.changes.hasDbDefault!==void 0&&(e.hasDbDefault=this.changes.hasDbDefault,e.dbDefault=this.changes.dbDefault),this.changes.isUnique!==void 0&&(e.isUnique=this.changes.isUnique)}}async execute(t){if((this.changes.dataType!==void 0||this.changes.length!==void 0)&&await t.schema.alterTable(this.table).alterColumn(this.columnName,e=>e.setDataType(p({dataType:this.changes.dataType,length:this.changes.length}))).execute(),this.changes.notNull!==void 0&&await t.schema.alterTable(this.table).alterColumn(this.columnName,e=>this.changes.notNull?e.setNotNull():e.dropNotNull()).execute(),this.changes.hasDbDefault!==void 0&&await t.schema.alterTable(this.table).alterColumn(this.columnName,e=>this.changes.hasDbDefault&&this.changes.dbDefault!==void 0?typeof this.changes.dbDefault=="string"&&this.changes.dbDefault.startsWith("sql`")?e.setDefault($`${this.changes.dbDefault}`):e.setDefault(this.changes.dbDefault):e.dropDefault()).execute(),this.changes.isUnique!==void 0){let e=o(this.table,[this.columnName]);this.changes.isUnique?await t.schema.alterTable(this.table).addUniqueConstraint(e,[this.columnName]).execute():await t.schema.alterTable(this.table).dropConstraint(e).execute()}}toCode(){return`new AlterColumnAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)}, ${JSON.stringify(this.changes)})`}},m=class extends i{constructor(t,e,n,a,r){super(),this.table=t,this.columnName=e,this.referencedTable=n,this.referencedColumn=a,this.constraintName=S(t,e),this.onDelete=r?.onDelete,this.onUpdate=r?.onUpdate}applyToState(t){t.tables[this.table]&&t.tables[this.table].columns[this.columnName]&&(t.tables[this.table].columns[this.columnName].references=`${this.referencedTable}.${this.referencedColumn}`,t.tables[this.table].columns[this.columnName].onDelete=this.onDelete,t.tables[this.table].columns[this.columnName].onUpdate=this.onUpdate)}async execute(t){let e=t.schema.alterTable(this.table).addForeignKeyConstraint(this.constraintName,[this.columnName],this.referencedTable,[this.referencedColumn]);this.onDelete&&(e=e.onDelete(this.onDelete)),this.onUpdate&&(e=e.onUpdate(this.onUpdate)),await e.execute()}toCode(){return`new AddForeignKeyConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)}, ${JSON.stringify(this.referencedTable)}, ${JSON.stringify(this.referencedColumn)}, ${JSON.stringify({onDelete:this.onDelete,onUpdate:this.onUpdate})})`}},g=class extends i{constructor(t,e){super(),this.table=t,this.columnName=e,this.constraintName=S(t,e)}applyToState(t){if(t.tables[this.table]){let e=t.tables[this.table].columns[this.columnName];e&&e.references&&(e.references=void 0,e.onDelete=void 0,e.onUpdate=void 0)}}async execute(t){await t.schema.alterTable(this.table).dropConstraint(this.constraintName).execute()}toCode(){return`new DropForeignKeyConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columnName)})`}},l=class extends i{constructor(t,e){super(),this.table=t,this.columns=e,this.indexName=T(t,e)}applyToState(t){t.tables[this.table].indexes||(t.tables[this.table].indexes=[]),t.tables[this.table].indexes.push({table:this.table,columns:this.columns})}async execute(t){await t.schema.createIndex(this.indexName).on(this.table).columns(this.columns).execute()}toCode(){return`new CreateIndexAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`}},b=class extends i{constructor(t,e){super(),this.table=t,this.columns=e,this.indexName=T(t,e)}applyToState(t){t.tables[this.table].indexes&&(t.tables[this.table].indexes=t.tables[this.table].indexes.filter(e=>!N(e.columns,this.columns)))}async execute(t){await t.schema.dropIndex(this.indexName).execute()}toCode(){return`new DropIndexAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`}},y=class extends i{constructor(t,e){super(),this.table=t,this.columns=e,this.constraintName=o(t,e)}applyToState(t){t.tables[this.table].uniqueConstraints||(t.tables[this.table].uniqueConstraints=[]),t.tables[this.table].uniqueConstraints.push(this.columns)}async execute(t){await t.schema.alterTable(this.table).addUniqueConstraint(this.constraintName,this.columns).execute()}toCode(){return`new AddUniqueConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`}},x=class extends i{constructor(t,e){super(),this.table=t,this.columns=e,this.constraintName=o(t,e)}applyToState(t){t.tables[this.table].uniqueConstraints&&(t.tables[this.table].uniqueConstraints=t.tables[this.table].uniqueConstraints.filter(e=>o(this.table,e)!==this.constraintName))}async execute(t){await t.schema.alterTable(this.table).dropConstraint(this.constraintName).execute()}toCode(){return`new DropUniqueConstraintAction(${JSON.stringify(this.table)}, ${JSON.stringify(this.columns)})`}};import{loadConfig as E}from"c12";var w=s=>s;export{h as AddColumnAction,m as AddForeignKeyConstraintAction,y as AddUniqueConstraintAction,f as AlterColumnAction,l as CreateIndexAction,u as CreateTableAction,d as DropColumnAction,g as DropForeignKeyConstraintAction,b as DropIndexAction,c as DropTableAction,x as DropUniqueConstraintAction,i as MigrationAction,w as defineConfig,q as executeActions};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/migrate/actions.mts","../src/utils.mts","../src/config.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","import { loadConfig } from 'c12'\n\nexport type Config = {\n modelsDir?: string\n migrationsDir?: string\n}\n\nexport const getConfig = async () => {\n const loadedConfig = await loadConfig<Config>({\n name: 'gummy',\n rcFile: false,\n globalRc: false,\n dotenv: false,\n packageJson: false,\n })\n\n return loadedConfig.config\n}\n\nexport const defineConfig = (input: Config): Config => input\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","loadConfig","defineConfig","input"]}
|
|
1
|
+
{"version":3,"sources":["../src/migrate/actions.mts","../src/utils.mts","../src/config.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.hasDbDefault && columnDef.dbDefault !== undefined) {\n col = col.defaultTo(columnDef.dbDefault)\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.hasDbDefault !== undefined) {\n column.hasDbDefault = this.changes.hasDbDefault\n column.dbDefault = this.changes.dbDefault\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.hasDbDefault !== undefined) {\n await db.schema\n .alterTable(this.table)\n .alterColumn(this.columnName, (col) => {\n if (this.changes.hasDbDefault && this.changes.dbDefault !== undefined) {\n if (typeof this.changes.dbDefault === 'string' && this.changes.dbDefault.startsWith('sql`')) {\n return col.setDefault(sql`${this.changes.dbDefault}`)\n } else {\n return col.setDefault(this.changes.dbDefault)\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","import { loadConfig } from 'c12'\n\nexport type Config = {\n modelsDir?: string\n migrationsDir?: string\n}\n\nexport const getConfig = async () => {\n const loadedConfig = await loadConfig<Config>({\n name: 'gummy',\n rcFile: false,\n globalRc: false,\n dotenv: false,\n packageJson: false,\n })\n\n return loadedConfig.config\n}\n\nexport const defineConfig = (input: Config): Config => input\n"],"mappings":"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","names":["sql","areArrayEqual","a","b","sortedA","sortedB","value","index","MigrationAction","mapColumnTypeToDataType","columnDef","buildCol","col","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","sql","AddForeignKeyConstraintAction","referencedTable","referencedColumn","DropForeignKeyConstraintAction","table","DropIndexAction","idx","areArrayEqual","AddUniqueConstraintAction","DropUniqueConstraintAction","cols","loadConfig","defineConfig","input"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gummy-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "v0.0.77",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"cli": "^1.0.1",
|
|
24
24
|
"commander": "^14.0.0",
|
|
25
25
|
"glob": "^11.0.0",
|
|
26
|
-
"gummy": "
|
|
26
|
+
"gummy": "v0.0.77",
|
|
27
27
|
"kysely": "^0.27.5",
|
|
28
28
|
"pkg-types": "^2.0.0",
|
|
29
29
|
"tsx": "^4.9.3",
|