drizzle-kit 0.14.7 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +80 -31
  2. package/package.json +5 -5
package/index.js CHANGED
@@ -10901,10 +10901,11 @@ var init_pgSerializer = __esm({
10901
10901
  const result = {};
10902
10902
  for (const table4 of tables) {
10903
10903
  const tableName = (0, import_table.getTableName)(table4);
10904
+ const { columns, indexes, foreignKeys, checks } = (0, import_utils.getTableConfig)(table4);
10904
10905
  const columnsObject = {};
10905
10906
  const indexesObject = {};
10906
10907
  const foreignKeysObject = {};
10907
- (0, import_utils.getTableColumns)(table4).forEach((column5) => {
10908
+ columns.forEach((column5) => {
10908
10909
  const notNull = column5.notNull;
10909
10910
  const primaryKey = column5.primary;
10910
10911
  const sqlTypeLowered = column5.getSQLType().toLowerCase();
@@ -10940,7 +10941,7 @@ var init_pgSerializer = __esm({
10940
10941
  }
10941
10942
  columnsObject[column5.name] = columnToSet;
10942
10943
  });
10943
- const foreignKeys = (0, import_utils.getTableForeignKeys)(table4).map((fk4) => {
10944
+ const fks = foreignKeys.map((fk4) => {
10944
10945
  const name = fk4.getName();
10945
10946
  const tableFrom = tableName;
10946
10947
  const onDelete = fk4.onDelete;
@@ -10959,18 +10960,18 @@ var init_pgSerializer = __esm({
10959
10960
  onUpdate
10960
10961
  };
10961
10962
  });
10962
- foreignKeys.forEach((it) => {
10963
+ fks.forEach((it) => {
10963
10964
  foreignKeysObject[it.name] = it;
10964
10965
  });
10965
- (0, import_utils.getTableIndexes)(table4).forEach((value) => {
10966
+ indexes.forEach((value) => {
10966
10967
  var _a;
10967
- const columns = value.config.columns;
10968
+ const columns2 = value.config.columns;
10968
10969
  let name = value.config.name;
10969
10970
  name = name ? name : indexName(
10970
10971
  tableName,
10971
- columns.map((it) => it.name)
10972
+ columns2.map((it) => it.name)
10972
10973
  );
10973
- let indexColumns = columns.map((it) => {
10974
+ let indexColumns = columns2.map((it) => {
10974
10975
  if (it instanceof import_sql.SQL) {
10975
10976
  return dialect4.sqlToQuery(it).sql;
10976
10977
  } else {
@@ -11516,10 +11517,11 @@ var init_serializer = __esm({
11516
11517
  });
11517
11518
 
11518
11519
  // src/sqlgenerator.ts
11519
- var pgNativeTypes, Convertor, PgCreateTableConvertor, MySqlCreateTableConvertor, SQLiteCreateTableConvertor, CreateTypeEnumConvertor, AlterTypeAddValueConvertor, DropTableConvertor, PgRenameTableConvertor, SqliteRenameTableConvertor, MySqlRenameTableConvertor, PgAlterTableRenameColumnConvertor, MySqlAlterTableRenameColumnConvertor, SQLiteAlterTableRenameColumnConvertor, PgAlterTableDropColumnConvertor, MySqlAlterTableDropColumnConvertor, SQLiteAlterTableDropColumnConvertor, PgAlterTableAddColumnConvertor, MySqlAlterTableAddColumnConvertor, SQLiteAlterTableAddColumnConvertor, PgAlterTableAlterColumnSetTypeConvertor, SQLiteAlterTableAlterColumnSetTypeConvertor, PgAlterTableAlterColumnSetDefaultConvertor, SqliteAlterTableAlterColumnSetDefaultConvertor, PgAlterTableAlterColumnDropDefaultConvertor, SqliteAlterTableAlterColumnDropDefaultConvertor, PgAlterTableAlterColumnSetNotNullConvertor, SqliteAlterTableAlterColumnSetNotNullConvertor, PgAlterTableAlterColumnDropNotNullConvertor, SqliteAlterTableAlterColumnDropNotNullConvertor, PgCreateForeignKeyConvertor, SqliteCreateForeignKeyConvertor, MySqlCreateForeignKeyConvertor, AlterForeignKeyConvertor, SqliteAlterForeignKeyConvertor, PgDeleteForeignKeyConvertor, SqliteDeleteForeignKeyConvertor, MySqlDeleteForeignKeyConvertor, CreatePgIndexConvertor, CreateMySqlIndexConvertor, CreateSqliteIndexConvertor, PgDropIndexConvertor, SqliteDropIndexConvertor, convertors, fromJson;
11520
+ var pgNativeTypes, Convertor, PgCreateTableConvertor, MySqlCreateTableConvertor, SQLiteCreateTableConvertor, CreateTypeEnumConvertor, AlterTypeAddValueConvertor, DropTableConvertor, PgRenameTableConvertor, SqliteRenameTableConvertor, MySqlRenameTableConvertor, PgAlterTableRenameColumnConvertor, MySqlAlterTableRenameColumnConvertor, SQLiteAlterTableRenameColumnConvertor, PgAlterTableDropColumnConvertor, MySqlAlterTableDropColumnConvertor, SQLiteAlterTableDropColumnConvertor, PgAlterTableAddColumnConvertor, MySqlAlterTableAddColumnConvertor, SQLiteAlterTableAddColumnConvertor, PgAlterTableAlterColumnSetTypeConvertor, SQLiteAlterTableAlterColumnSetTypeConvertor, PgAlterTableAlterColumnSetDefaultConvertor, SqliteAlterTableAlterColumnSetDefaultConvertor, PgAlterTableAlterColumnDropDefaultConvertor, SqliteAlterTableAlterColumnDropDefaultConvertor, PgAlterTableAlterColumnSetNotNullConvertor, SqliteAlterTableAlterColumnSetNotNullConvertor, PgAlterTableAlterColumnDropNotNullConvertor, SqliteAlterTableAlterColumnDropNotNullConvertor, PgCreateForeignKeyConvertor, SqliteCreateForeignKeyConvertor, MySqlCreateForeignKeyConvertor, PgAlterForeignKeyConvertor, SqliteAlterForeignKeyConvertor, PgDeleteForeignKeyConvertor, SqliteDeleteForeignKeyConvertor, MySqlDeleteForeignKeyConvertor, CreatePgIndexConvertor, CreateMySqlIndexConvertor, CreateSqliteIndexConvertor, PgDropIndexConvertor, SqliteDropIndexConvertor, convertors, fromJson;
11520
11521
  var init_sqlgenerator = __esm({
11521
11522
  "src/sqlgenerator.ts"() {
11522
11523
  init_schemaValidator();
11524
+ init_mysqlSchema();
11523
11525
  init_sqliteSchema();
11524
11526
  pgNativeTypes = /* @__PURE__ */ new Set([
11525
11527
  "uuid",
@@ -11982,7 +11984,7 @@ var init_sqlgenerator = __esm({
11982
11984
  columnsTo,
11983
11985
  onDelete,
11984
11986
  onUpdate
11985
- } = PgSquasher.unsquashFK(statement.data);
11987
+ } = MySqlSquasher.unsquashFK(statement.data);
11986
11988
  const onDeleteStatement = onDelete ? `ON DELETE ${onDelete}` : "";
11987
11989
  const onUpdateStatement = onUpdate ? `ON UPDATE ${onUpdate}` : "";
11988
11990
  const fromColumnsString = columnsFrom.map((it) => `\`${it}\``).join(",");
@@ -11990,11 +11992,26 @@ var init_sqlgenerator = __esm({
11990
11992
  return `ALTER TABLE ${tableFrom} ADD CONSTRAINT ${name} FOREIGN KEY (${fromColumnsString}) REFERENCES ${tableTo}(${toColumnsString}) ${onDeleteStatement} ${onUpdateStatement};`.replace(/ +/g, " ").trim();
11991
11993
  }
11992
11994
  };
11993
- AlterForeignKeyConvertor = class extends Convertor {
11994
- can(statement) {
11995
- return statement.type === "alter_reference";
11995
+ PgAlterForeignKeyConvertor = class extends Convertor {
11996
+ can(statement, dialect8) {
11997
+ return statement.type === "alter_reference" && dialect8 === "pg";
11996
11998
  }
11997
11999
  convert(statement) {
12000
+ const newFk = PgSquasher.unsquashFK(statement.data);
12001
+ const oldFk = PgSquasher.unsquashFK(statement.oldFkey);
12002
+ let sql = `ALTER TABLE ${oldFk.tableFrom} DROP FOREIGN KEY ${oldFk.name};
12003
+ `;
12004
+ const onDeleteStatement = newFk.onDelete || "";
12005
+ const onUpdateStatement = newFk.onUpdate || "";
12006
+ const fromColumnsString = newFk.columnsFrom.map((it) => `"${it}"`).join(",");
12007
+ const toColumnsString = newFk.columnsTo.map((it) => `"${it}"`).join(",");
12008
+ const alterStatement = `ALTER TABLE ${newFk.tableFrom} ADD CONSTRAINT ${newFk.name} FOREIGN KEY (${fromColumnsString}) REFERENCES ${newFk.tableTo}(${toColumnsString}) ${onDeleteStatement} ${onUpdateStatement}`.replace(/ +/g, " ").trim();
12009
+ sql += "DO $$ BEGIN\n";
12010
+ sql += " " + alterStatement + ";\n";
12011
+ sql += "EXCEPTION\n";
12012
+ sql += " WHEN duplicate_object THEN null;\n";
12013
+ sql += "END $$;\n";
12014
+ return sql;
11998
12015
  throw new Error("TODO");
11999
12016
  }
12000
12017
  };
@@ -12133,7 +12150,7 @@ var init_sqlgenerator = __esm({
12133
12150
  convertors.push(new PgAlterTableAlterColumnDropDefaultConvertor());
12134
12151
  convertors.push(new PgCreateForeignKeyConvertor());
12135
12152
  convertors.push(new MySqlCreateForeignKeyConvertor());
12136
- convertors.push(new AlterForeignKeyConvertor());
12153
+ convertors.push(new PgAlterForeignKeyConvertor());
12137
12154
  convertors.push(new PgDeleteForeignKeyConvertor());
12138
12155
  convertors.push(new MySqlDeleteForeignKeyConvertor());
12139
12156
  convertors.push(new SQLiteAlterTableAlterColumnSetTypeConvertor());
@@ -18384,6 +18401,7 @@ var init_jsonDiffer = __esm({
18384
18401
  const addedForeignKeys = Object.fromEntries(
18385
18402
  Object.entries(table4.foreignKeys__added || {}).concat(Object.entries(table4.foreignKeys || {}).filter((it) => it[0].includes("__added"))).map((entry) => [entry[0].replace("__added", ""), entry[1]])
18386
18403
  );
18404
+ const alteredForeignKeys = Object.fromEntries(Object.entries(table4.foreignKeys || {}).filter((it) => !it[0].endsWith("__added") && !it[0].endsWith("__deleted")).map((entry) => [entry[0], entry[1]]));
18387
18405
  const mappedAltered = altered.map((it) => alternationsInColumn(it));
18388
18406
  return {
18389
18407
  name: table4.name,
@@ -18393,7 +18411,8 @@ var init_jsonDiffer = __esm({
18393
18411
  addedIndexes,
18394
18412
  deletedIndexes,
18395
18413
  addedForeignKeys,
18396
- deletedForeignKeys
18414
+ deletedForeignKeys,
18415
+ alteredForeignKeys
18397
18416
  };
18398
18417
  };
18399
18418
  alternationsInColumn = (column5) => {
@@ -18441,7 +18460,7 @@ var init_jsonDiffer = __esm({
18441
18460
  });
18442
18461
 
18443
18462
  // src/jsonStatements.ts
18444
- var prepareCreateTableJson, prepareSQLiteCreateTable, prepareDropTableJson, prepareRenameTableJson, prepareCreateEnumJson, prepareAddValuesToEnumJson, prepareRenameColumns, prepareAlterTableColumnsJson, _prepareDropColumns, _prepareAddColumns, _prepareSQLiteAddColumns, _prepareAlterColumns, prepareCreateIndexesJson, prepareCreateReferencesJson, prepareDropReferencesJson, prepareDropIndexesJson;
18463
+ var prepareCreateTableJson, prepareSQLiteCreateTable, prepareDropTableJson, prepareRenameTableJson, prepareCreateEnumJson, prepareAddValuesToEnumJson, prepareRenameColumns, prepareAlterTableColumnsJson, _prepareDropColumns, _prepareAddColumns, _prepareSQLiteAddColumns, _prepareAlterColumns, prepareCreateIndexesJson, prepareCreateReferencesJson, prepareDropReferencesJson, prepareAlterReferencesJson, prepareDropIndexesJson;
18445
18464
  var init_jsonStatements = __esm({
18446
18465
  "src/jsonStatements.ts"() {
18447
18466
  init_sqliteSchema();
@@ -18652,6 +18671,16 @@ var init_jsonStatements = __esm({
18652
18671
  };
18653
18672
  });
18654
18673
  };
18674
+ prepareAlterReferencesJson = (tableName, foreignKeys) => {
18675
+ return Object.values(foreignKeys).map((fkData) => {
18676
+ return {
18677
+ type: "alter_reference",
18678
+ tableName,
18679
+ data: fkData.__new,
18680
+ oldFkey: fkData.__old
18681
+ };
18682
+ });
18683
+ };
18655
18684
  prepareDropIndexesJson = (tableName, indexes) => {
18656
18685
  return Object.values(indexes).map((indexData) => {
18657
18686
  return {
@@ -18820,7 +18849,14 @@ var init_snapshotsDiffer = __esm({
18820
18849
  addedIndexes: recordType(stringType(), stringType()),
18821
18850
  deletedIndexes: recordType(stringType(), stringType()),
18822
18851
  addedForeignKeys: recordType(stringType(), stringType()),
18823
- deletedForeignKeys: recordType(stringType(), stringType())
18852
+ deletedForeignKeys: recordType(stringType(), stringType()),
18853
+ alteredForeignKeys: recordType(
18854
+ stringType(),
18855
+ objectType({
18856
+ __new: stringType(),
18857
+ __old: stringType()
18858
+ }).strict()
18859
+ )
18824
18860
  }).strict();
18825
18861
  diffResultScheme = objectType({
18826
18862
  addedTables: tableScheme.array(),
@@ -18889,7 +18925,8 @@ var init_snapshotsDiffer = __esm({
18889
18925
  addedIndexes: table4.addedIndexes,
18890
18926
  deletedIndexes: table4.deletedIndexes,
18891
18927
  addedForeignKeys: table4.addedForeignKeys,
18892
- deletedForeignKeys: table4.deletedForeignKeys
18928
+ deletedForeignKeys: table4.deletedForeignKeys,
18929
+ alteredForeignKeys: table4.alteredForeignKeys
18893
18930
  };
18894
18931
  allAlteredResolved.push(resolved);
18895
18932
  }
@@ -18909,7 +18946,7 @@ var init_snapshotsDiffer = __esm({
18909
18946
  const jsonDropIndexesForAllAlteredTables = allAltered.map((it) => {
18910
18947
  return prepareDropIndexesJson(it.name, it.deletedIndexes || {});
18911
18948
  }).flat();
18912
- const jsonReferencesForCreatedTables = created.map((it) => {
18949
+ const jsonCreateReferencesForCreatedTables = created.map((it) => {
18913
18950
  return prepareCreateReferencesJson(it.name, it.foreignKeys);
18914
18951
  }).flat();
18915
18952
  const jsonReferencesForAllAlteredTables = allAltered.map((it) => {
@@ -18918,9 +18955,13 @@ var init_snapshotsDiffer = __esm({
18918
18955
  it.name,
18919
18956
  it.deletedForeignKeys
18920
18957
  );
18921
- return [...forAdded, ...forAltered];
18958
+ const alteredFKs = prepareAlterReferencesJson(
18959
+ it.name,
18960
+ it.alteredForeignKeys
18961
+ );
18962
+ return [...forAdded, ...forAltered, ...alteredFKs];
18922
18963
  }).flat();
18923
- const jsonCreateReferences = jsonReferencesForCreatedTables;
18964
+ const jsonCreateReferences = jsonCreateReferencesForCreatedTables;
18924
18965
  const jsonAlterReferencesForAlteredTables = jsonReferencesForAllAlteredTables;
18925
18966
  const createEnums = (_b = (_a = typedResult.addedEnums) == null ? void 0 : _a.map((it) => {
18926
18967
  return prepareCreateEnumJson(it.name, it.values);
@@ -25094,7 +25135,7 @@ var init_introspect = __esm({
25094
25135
  );
25095
25136
  statement += "}";
25096
25137
  const filteredFKs = Object.values(table4.foreignKeys).filter((it) => {
25097
- return it.columnsFrom.length > 1 || isSelf(it) || isCyclic(it);
25138
+ return it.columnsFrom.length > 1 || isSelf(it);
25098
25139
  });
25099
25140
  if (Object.keys(table4.indexes).length > 0 || filteredFKs.length > 0) {
25100
25141
  statement += ",\n";
@@ -25108,7 +25149,12 @@ var init_introspect = __esm({
25108
25149
  statement += ");";
25109
25150
  return statement;
25110
25151
  });
25111
- const uniquePgImports = ["pgTable", "pgEnum", ...new Set(imports.pg)];
25152
+ const uniquePgImports = [
25153
+ "pgTable",
25154
+ "pgEnum",
25155
+ "AnyPgColumn",
25156
+ ...new Set(imports.pg)
25157
+ ];
25112
25158
  let result = `import { ${uniquePgImports.join(
25113
25159
  ", "
25114
25160
  )} } from "drizzle-orm-pg"
@@ -25253,7 +25299,7 @@ var init_introspect = __esm({
25253
25299
  createTableColumns = (columns, fks, enumTypes) => {
25254
25300
  let statement = "";
25255
25301
  const oneColumnsFKs = Object.values(fks).filter((it) => {
25256
- return !isSelf(it) && !isCyclic(it);
25302
+ return !isSelf(it);
25257
25303
  }).filter((it) => it.columnsFrom.length === 1);
25258
25304
  const fkByColumnName = oneColumnsFKs.reduce((res, it) => {
25259
25305
  const arr = res[it.columnsFrom[0]] || [];
@@ -25272,11 +25318,12 @@ var init_introspect = __esm({
25272
25318
  const onDelete = it2.onDelete && it2.onDelete !== "no action" ? it2.onDelete : null;
25273
25319
  const onUpdate = it2.onUpdate && it2.onUpdate !== "no action" ? it2.onUpdate : null;
25274
25320
  const params = { onDelete, onUpdate };
25321
+ const typeSuffix = isCyclic(it2) ? ": AnyPgColumn" : "";
25275
25322
  const paramsStr = objToStatement2(params);
25276
25323
  if (paramsStr) {
25277
- return `.references(() => ${it2.tableTo.camelCase()}.${it2.columnsTo[0].camelCase()}, ${paramsStr} )`;
25324
+ return `.references(()${typeSuffix} => ${it2.tableTo.camelCase()}.${it2.columnsTo[0].camelCase()}, ${paramsStr} )`;
25278
25325
  }
25279
- return `.references(() => ${it2.tableTo.camelCase()}.${it2.columnsTo[0].camelCase()})`;
25326
+ return `.references(()${typeSuffix} => ${it2.tableTo.camelCase()}.${it2.columnsTo[0].camelCase()})`;
25280
25327
  }).join("");
25281
25328
  statement += fksStatement;
25282
25329
  }
@@ -25304,11 +25351,13 @@ var init_introspect = __esm({
25304
25351
  createTableFKs = (fks) => {
25305
25352
  let statement = "";
25306
25353
  fks.forEach((it) => {
25354
+ const isSelf2 = it.tableTo === it.tableFrom;
25355
+ const tableTo = isSelf2 ? "table" : `${it.tableTo.camelCase()}`;
25307
25356
  statement += ` ${it.name.camelCase()}: foreignKey({
25308
25357
  `;
25309
25358
  statement += ` columns: [${it.columnsFrom.map((i) => `table.${i.camelCase()}`).join(", ")}],
25310
25359
  `;
25311
- statement += ` foreignColumns: [${it.columnsTo.map((i) => `${it.tableTo.camelCase()}.${i.camelCase()}`).join(", ")}]
25360
+ statement += ` foreignColumns: [${it.columnsTo.map((i) => `${tableTo}.${i.camelCase()}`).join(", ")}]
25312
25361
  `;
25313
25362
  statement += ` })`;
25314
25363
  statement += it.onUpdate && it.onUpdate !== "no action" ? `.onUpdate("${it.onUpdate}")` : "";
@@ -25632,7 +25681,7 @@ init_source();
25632
25681
  // package.json
25633
25682
  var package_default = {
25634
25683
  name: "drizzle-kit",
25635
- version: "0.14.7",
25684
+ version: "0.15.0",
25636
25685
  repository: "https://github.com/drizzle-team/drizzle-kit-mirror",
25637
25686
  author: "Alex Blokh <aleksandrblokh@gmail.com>",
25638
25687
  license: "MIT",
@@ -25685,10 +25734,10 @@ var package_default = {
25685
25734
  "@typescript-eslint/parser": "^5.46.1",
25686
25735
  ava: "^5.1.0",
25687
25736
  dockerode: "^3.3.4",
25688
- "drizzle-orm": "0.15.0-a90d3bc",
25689
- "drizzle-orm-mysql": "0.15.0-a90d3bc",
25690
- "drizzle-orm-pg": "0.15.0-a90d3bc",
25691
- "drizzle-orm-sqlite": "0.15.0-a90d3bc",
25737
+ "drizzle-orm": "0.15.0-60954a3",
25738
+ "drizzle-orm-mysql": "0.15.0-60954a3",
25739
+ "drizzle-orm-pg": "0.15.0-60954a3",
25740
+ "drizzle-orm-sqlite": "0.15.0-60954a3",
25692
25741
  esbuild: "^0.15.7",
25693
25742
  "esbuild-register": "^3.3.3",
25694
25743
  eslint: "^8.29.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-kit",
3
- "version": "0.14.7",
3
+ "version": "0.15.0",
4
4
  "repository": "https://github.com/drizzle-team/drizzle-kit-mirror",
5
5
  "author": "Alex Blokh <aleksandrblokh@gmail.com>",
6
6
  "license": "MIT",
@@ -35,10 +35,10 @@
35
35
  "@typescript-eslint/parser": "^5.46.1",
36
36
  "ava": "^5.1.0",
37
37
  "dockerode": "^3.3.4",
38
- "drizzle-orm": "0.15.0-a90d3bc",
39
- "drizzle-orm-mysql": "0.15.0-a90d3bc",
40
- "drizzle-orm-pg": "0.15.0-a90d3bc",
41
- "drizzle-orm-sqlite": "0.15.0-a90d3bc",
38
+ "drizzle-orm": "0.15.0-60954a3",
39
+ "drizzle-orm-mysql": "0.15.0-60954a3",
40
+ "drizzle-orm-pg": "0.15.0-60954a3",
41
+ "drizzle-orm-sqlite": "0.15.0-60954a3",
42
42
  "esbuild": "^0.15.7",
43
43
  "esbuild-register": "^3.3.3",
44
44
  "eslint": "^8.29.0",