drizzle-kit 0.20.0-50d6b73 → 0.20.0-572b8ee

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/utils.js CHANGED
@@ -1075,7 +1075,7 @@ var require_hanji = __commonJS({
1075
1075
  });
1076
1076
 
1077
1077
  // src/cli/views.ts
1078
- var import_hanji, info, schema, isRenamePromptItem, ResolveColumnSelect, ResolveTableSelect, ResolveSchemasSelect;
1078
+ var import_hanji, info, schema, isRenamePromptItem, ResolveColumnSelect, ResolveTableSelect, ResolveSchemasSelect, Spinner, IntrospectProgress;
1079
1079
  var init_views = __esm({
1080
1080
  "src/cli/views.ts"() {
1081
1081
  init_source();
@@ -1247,6 +1247,91 @@ Is ${source_default.bold.blue(
1247
1247
  return this.state.items[this.state.selectedIdx];
1248
1248
  }
1249
1249
  };
1250
+ Spinner = class {
1251
+ constructor(frames) {
1252
+ this.frames = frames;
1253
+ this.offset = 0;
1254
+ this.tick = () => {
1255
+ this.iterator();
1256
+ };
1257
+ this.value = () => {
1258
+ return this.frames[this.offset];
1259
+ };
1260
+ this.iterator = () => {
1261
+ this.offset += 1;
1262
+ this.offset %= frames.length - 1;
1263
+ };
1264
+ }
1265
+ };
1266
+ IntrospectProgress = class extends import_hanji.TaskView {
1267
+ constructor() {
1268
+ super();
1269
+ this.spinner = new Spinner("\u28F7\u28EF\u28DF\u287F\u28BF\u28FB\u28FD\u28FE".split(""));
1270
+ this.state = {
1271
+ tables: {
1272
+ count: 0,
1273
+ name: "tables",
1274
+ status: "fetching"
1275
+ },
1276
+ columns: {
1277
+ count: 0,
1278
+ name: "columns",
1279
+ status: "fetching"
1280
+ },
1281
+ enums: {
1282
+ count: 0,
1283
+ name: "enums",
1284
+ status: "fetching"
1285
+ },
1286
+ indexes: {
1287
+ count: 0,
1288
+ name: "indexes",
1289
+ status: "fetching"
1290
+ },
1291
+ fks: {
1292
+ count: 0,
1293
+ name: "foreign keys",
1294
+ status: "fetching"
1295
+ }
1296
+ };
1297
+ this.formatCount = (count) => {
1298
+ const width = Math.max.apply(
1299
+ null,
1300
+ Object.values(this.state).map((it) => it.count.toFixed(0).length)
1301
+ );
1302
+ return count.toFixed(0).padEnd(width, " ");
1303
+ };
1304
+ this.statusText = (spinner, stage) => {
1305
+ const { name, count } = stage;
1306
+ const isDone = stage.status === "done";
1307
+ const prefix = isDone ? `[${source_default.green("\u2713")}]` : `[${spinner}]`;
1308
+ const formattedCount = this.formatCount(count);
1309
+ const suffix = isDone ? `${formattedCount} ${name} fetched` : `${formattedCount} ${name} fetching`;
1310
+ return `${prefix} ${suffix}
1311
+ `;
1312
+ };
1313
+ this.timeout = setInterval(() => {
1314
+ this.spinner.tick();
1315
+ this.requestLayout();
1316
+ }, 128);
1317
+ this.on("detach", () => clearInterval(this.timeout));
1318
+ }
1319
+ update(stage, count, status) {
1320
+ this.state[stage].count = count;
1321
+ this.state[stage].status = status;
1322
+ this.requestLayout();
1323
+ }
1324
+ render() {
1325
+ let info2 = "";
1326
+ const spin = this.spinner.value();
1327
+ info2 += this.statusText(spin, this.state.tables);
1328
+ info2 += this.statusText(spin, this.state.columns);
1329
+ info2 += this.statusText(spin, this.state.enums);
1330
+ info2 += this.statusText(spin, this.state.indexes);
1331
+ info2 += this.statusText(spin, this.state.fks);
1332
+ return info2;
1333
+ }
1334
+ };
1250
1335
  }
1251
1336
  });
1252
1337
 
@@ -5349,8 +5434,8 @@ var init_jsonDiffer = __esm({
5349
5434
  alteredUniqueConstraints
5350
5435
  };
5351
5436
  };
5352
- alternationsInColumn = (column4) => {
5353
- const altered = [column4];
5437
+ alternationsInColumn = (column5) => {
5438
+ const altered = [column5];
5354
5439
  const result = altered.map((it) => {
5355
5440
  if (typeof it.name !== "string" && "__old" in it.name) {
5356
5441
  return { ...it, name: { type: "changed", old: it.name.__old, new: it.name.__new } };
@@ -8173,16 +8258,16 @@ var require_node2 = __commonJS({
8173
8258
  var source = frame.getFileName() || frame.getScriptNameOrSourceURL();
8174
8259
  if (source) {
8175
8260
  var line = frame.getLineNumber();
8176
- var column4 = frame.getColumnNumber() - 1;
8261
+ var column5 = frame.getColumnNumber() - 1;
8177
8262
  var noHeader = /^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/;
8178
8263
  var headerLength = noHeader.test(process.version) ? 0 : 62;
8179
- if (line === 1 && column4 > headerLength && !isInBrowser() && !frame.isEval()) {
8180
- column4 -= headerLength;
8264
+ if (line === 1 && column5 > headerLength && !isInBrowser() && !frame.isEval()) {
8265
+ column5 -= headerLength;
8181
8266
  }
8182
8267
  var position = mapSourcePosition({
8183
8268
  source,
8184
8269
  line,
8185
- column: column4
8270
+ column: column5
8186
8271
  });
8187
8272
  state.curPosition = position;
8188
8273
  frame = cloneCallSite(frame);
@@ -8240,7 +8325,7 @@ var require_node2 = __commonJS({
8240
8325
  if (match2) {
8241
8326
  var source = match2[1];
8242
8327
  var line = +match2[2];
8243
- var column4 = +match2[3];
8328
+ var column5 = +match2[3];
8244
8329
  var contents = fileContentsCache[source];
8245
8330
  if (!contents && fs32 && fs32.existsSync(source)) {
8246
8331
  try {
@@ -8252,7 +8337,7 @@ var require_node2 = __commonJS({
8252
8337
  if (contents) {
8253
8338
  var code = contents.split(/(?:\r\n|\r|\n)/)[line - 1];
8254
8339
  if (code) {
8255
- return source + ":" + line + "\n" + code + "\n" + new Array(column4).join(" ") + "^";
8340
+ return source + ":" + line + "\n" + code + "\n" + new Array(column5).join(" ") + "^";
8256
8341
  }
8257
8342
  }
8258
8343
  }
@@ -9202,7 +9287,7 @@ var require_node2 = __commonJS({
9202
9287
  var stack = void 0;
9203
9288
  var pos = void 0;
9204
9289
  var line = void 0;
9205
- var column4 = void 0;
9290
+ var column5 = void 0;
9206
9291
  var token = void 0;
9207
9292
  var key = void 0;
9208
9293
  var root = void 0;
@@ -9212,7 +9297,7 @@ var require_node2 = __commonJS({
9212
9297
  stack = [];
9213
9298
  pos = 0;
9214
9299
  line = 1;
9215
- column4 = 0;
9300
+ column5 = 0;
9216
9301
  token = void 0;
9217
9302
  key = void 0;
9218
9303
  root = void 0;
@@ -9266,11 +9351,11 @@ var require_node2 = __commonJS({
9266
9351
  var c2 = peek();
9267
9352
  if (c2 === "\n") {
9268
9353
  line++;
9269
- column4 = 0;
9354
+ column5 = 0;
9270
9355
  } else if (c2) {
9271
- column4 += c2.length;
9356
+ column5 += c2.length;
9272
9357
  } else {
9273
- column4++;
9358
+ column5++;
9274
9359
  }
9275
9360
  if (c2) {
9276
9361
  pos += c2.length;
@@ -9704,7 +9789,7 @@ var require_node2 = __commonJS({
9704
9789
  throw invalidChar(read());
9705
9790
  } };
9706
9791
  function newToken(type, value) {
9707
- return { type, value, line, column: column4 };
9792
+ return { type, value, line, column: column5 };
9708
9793
  }
9709
9794
  function literal(s) {
9710
9795
  var _iteratorNormalCompletion = true;
@@ -9941,16 +10026,16 @@ var require_node2 = __commonJS({
9941
10026
  }
9942
10027
  function invalidChar(c2) {
9943
10028
  if (c2 === void 0) {
9944
- return syntaxError("JSON5: invalid end of input at " + line + ":" + column4);
10029
+ return syntaxError("JSON5: invalid end of input at " + line + ":" + column5);
9945
10030
  }
9946
- return syntaxError("JSON5: invalid character '" + formatChar(c2) + "' at " + line + ":" + column4);
10031
+ return syntaxError("JSON5: invalid character '" + formatChar(c2) + "' at " + line + ":" + column5);
9947
10032
  }
9948
10033
  function invalidEOF() {
9949
- return syntaxError("JSON5: invalid end of input at " + line + ":" + column4);
10034
+ return syntaxError("JSON5: invalid end of input at " + line + ":" + column5);
9950
10035
  }
9951
10036
  function invalidIdentifier() {
9952
- column4 -= 5;
9953
- return syntaxError("JSON5: invalid identifier character at " + line + ":" + column4);
10037
+ column5 -= 5;
10038
+ return syntaxError("JSON5: invalid identifier character at " + line + ":" + column5);
9954
10039
  }
9955
10040
  function separatorChar(c2) {
9956
10041
  console.warn("JSON5: '" + c2 + "' is not valid ECMAScript; consider escaping");
@@ -9969,7 +10054,7 @@ var require_node2 = __commonJS({
9969
10054
  function syntaxError(message) {
9970
10055
  var err = new SyntaxError(message);
9971
10056
  err.lineNumber = line;
9972
- err.columnNumber = column4;
10057
+ err.columnNumber = column5;
9973
10058
  return err;
9974
10059
  }
9975
10060
  module22.exports = exports2["default"];
@@ -11197,28 +11282,28 @@ var init_mysqlSerializer = __esm({
11197
11282
  const foreignKeysObject = {};
11198
11283
  const primaryKeysObject = {};
11199
11284
  const uniqueConstraintObject = {};
11200
- columns.forEach((column4) => {
11201
- const notNull = column4.notNull;
11202
- const sqlTypeLowered = column4.getSQLType().toLowerCase();
11203
- const autoIncrement = typeof column4.autoIncrement === "undefined" ? false : column4.autoIncrement;
11285
+ columns.forEach((column5) => {
11286
+ const notNull = column5.notNull;
11287
+ const sqlTypeLowered = column5.getSQLType().toLowerCase();
11288
+ const autoIncrement = typeof column5.autoIncrement === "undefined" ? false : column5.autoIncrement;
11204
11289
  const columnToSet = {
11205
- name: column4.name,
11206
- type: column4.getSQLType(),
11290
+ name: column5.name,
11291
+ type: column5.getSQLType(),
11207
11292
  primaryKey: false,
11208
11293
  // If field is autoincrement it's notNull by default
11209
11294
  // notNull: autoIncrement ? true : notNull,
11210
11295
  notNull,
11211
11296
  autoincrement: autoIncrement,
11212
- onUpdate: column4.hasOnUpdateNow
11297
+ onUpdate: column5.hasOnUpdateNow
11213
11298
  };
11214
- if (column4.primary) {
11215
- primaryKeysObject[`${tableName}_${column4.name}`] = {
11216
- name: `${tableName}_${column4.name}`,
11217
- columns: [column4.name]
11299
+ if (column5.primary) {
11300
+ primaryKeysObject[`${tableName}_${column5.name}`] = {
11301
+ name: `${tableName}_${column5.name}`,
11302
+ columns: [column5.name]
11218
11303
  };
11219
11304
  }
11220
- if (column4.isUnique) {
11221
- const existingUnique = uniqueConstraintObject[column4.uniqueName];
11305
+ if (column5.isUnique) {
11306
+ const existingUnique = uniqueConstraintObject[column5.uniqueName];
11222
11307
  if (typeof existingUnique !== "undefined") {
11223
11308
  console.log(
11224
11309
  `
@@ -11226,9 +11311,9 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
11226
11311
  tableName
11227
11312
  )} table.
11228
11313
  The unique constraint ${source_default.underline.blue(
11229
- column4.uniqueName
11314
+ column5.uniqueName
11230
11315
  )} on the ${source_default.underline.blue(
11231
- column4.name
11316
+ column5.name
11232
11317
  )} column is confilcting with a unique constraint name already defined for ${source_default.underline.blue(
11233
11318
  existingUnique.columns.join(",")
11234
11319
  )} columns
@@ -11236,36 +11321,36 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
11236
11321
  );
11237
11322
  process.exit(1);
11238
11323
  }
11239
- uniqueConstraintObject[column4.uniqueName] = {
11240
- name: column4.uniqueName,
11324
+ uniqueConstraintObject[column5.uniqueName] = {
11325
+ name: column5.uniqueName,
11241
11326
  columns: [columnToSet.name]
11242
11327
  };
11243
11328
  }
11244
- if (column4.default !== void 0) {
11245
- if ((0, import_drizzle_orm2.is)(column4.default, import_drizzle_orm3.SQL)) {
11246
- columnToSet.default = sqlToStr(column4.default);
11329
+ if (column5.default !== void 0) {
11330
+ if ((0, import_drizzle_orm2.is)(column5.default, import_drizzle_orm3.SQL)) {
11331
+ columnToSet.default = sqlToStr(column5.default);
11247
11332
  } else {
11248
- if (typeof column4.default === "string") {
11249
- columnToSet.default = `'${column4.default}'`;
11333
+ if (typeof column5.default === "string") {
11334
+ columnToSet.default = `'${column5.default}'`;
11250
11335
  } else {
11251
11336
  if (sqlTypeLowered === "json") {
11252
- columnToSet.default = `'${JSON.stringify(column4.default)}'`;
11253
- } else if (column4.default instanceof Date) {
11337
+ columnToSet.default = `'${JSON.stringify(column5.default)}'`;
11338
+ } else if (column5.default instanceof Date) {
11254
11339
  if (sqlTypeLowered === "date") {
11255
- columnToSet.default = `'${column4.default.toISOString().split("T")[0]}'`;
11340
+ columnToSet.default = `'${column5.default.toISOString().split("T")[0]}'`;
11256
11341
  } else if (sqlTypeLowered.startsWith("datetime") || sqlTypeLowered.startsWith("timestamp")) {
11257
- columnToSet.default = `'${column4.default.toISOString().replace("T", " ").slice(0, 23)}'`;
11342
+ columnToSet.default = `'${column5.default.toISOString().replace("T", " ").slice(0, 23)}'`;
11258
11343
  }
11259
11344
  } else {
11260
- columnToSet.default = column4.default;
11345
+ columnToSet.default = column5.default;
11261
11346
  }
11262
11347
  }
11263
- if (["blob", "text", "json"].includes(column4.getSQLType())) {
11348
+ if (["blob", "text", "json"].includes(column5.getSQLType())) {
11264
11349
  columnToSet.default = `(${columnToSet.default})`;
11265
11350
  }
11266
11351
  }
11267
11352
  }
11268
- columnsObject[column4.name] = columnToSet;
11353
+ columnsObject[column5.name] = columnToSet;
11269
11354
  });
11270
11355
  primaryKeys.map((pk) => {
11271
11356
  const columnNames = pk.columns.map((c) => c.name);
@@ -11273,8 +11358,8 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
11273
11358
  name: pk.getName(),
11274
11359
  columns: columnNames
11275
11360
  };
11276
- for (const column4 of pk.columns) {
11277
- columnsObject[column4.name].notNull = true;
11361
+ for (const column5 of pk.columns) {
11362
+ columnsObject[column5.name].notNull = true;
11278
11363
  }
11279
11364
  });
11280
11365
  uniqueConstraints == null ? void 0 : uniqueConstraints.map((unq) => {
@@ -11427,33 +11512,33 @@ We have encountered a collision between the index name on columns ${source_defau
11427
11512
  [inputSchema]
11428
11513
  );
11429
11514
  const idxRows = idxs[0];
11430
- for (const column4 of response) {
11431
- if (!tablesFilter(column4["TABLE_NAME"]))
11515
+ for (const column5 of response) {
11516
+ if (!tablesFilter(column5["TABLE_NAME"]))
11432
11517
  continue;
11433
11518
  columnsCount += 1;
11434
11519
  if (progressCallback) {
11435
11520
  progressCallback("columns", columnsCount, "fetching");
11436
11521
  }
11437
- const schema4 = column4["TABLE_SCHEMA"];
11438
- const tableName = column4["TABLE_NAME"];
11522
+ const schema4 = column5["TABLE_SCHEMA"];
11523
+ const tableName = column5["TABLE_NAME"];
11439
11524
  tablesCount.add(`${schema4}.${tableName}`);
11440
11525
  if (progressCallback) {
11441
11526
  progressCallback("columns", tablesCount.size, "fetching");
11442
11527
  }
11443
- const columnName = column4["COLUMN_NAME"];
11444
- const isNullable = column4["IS_NULLABLE"] === "YES";
11445
- const dataType = column4["DATA_TYPE"];
11446
- const columnType = column4["COLUMN_TYPE"];
11447
- const isPrimary = column4["COLUMN_KEY"] === "PRI";
11448
- const columnDefault = column4["COLUMN_DEFAULT"];
11449
- const collation = column4["CHARACTER_SET_NAME"];
11450
- let columnExtra = column4["EXTRA"];
11528
+ const columnName = column5["COLUMN_NAME"];
11529
+ const isNullable = column5["IS_NULLABLE"] === "YES";
11530
+ const dataType = column5["DATA_TYPE"];
11531
+ const columnType = column5["COLUMN_TYPE"];
11532
+ const isPrimary = column5["COLUMN_KEY"] === "PRI";
11533
+ const columnDefault = column5["COLUMN_DEFAULT"];
11534
+ const collation = column5["CHARACTER_SET_NAME"];
11535
+ let columnExtra = column5["EXTRA"];
11451
11536
  let isAutoincrement = false;
11452
11537
  let isDefaultAnExpression = false;
11453
- if (typeof column4["EXTRA"] !== "undefined") {
11454
- columnExtra = column4["EXTRA"];
11455
- isAutoincrement = column4["EXTRA"] === "auto_increment";
11456
- isDefaultAnExpression = column4["EXTRA"].includes("DEFAULT_GENERATED");
11538
+ if (typeof column5["EXTRA"] !== "undefined") {
11539
+ columnExtra = column5["EXTRA"];
11540
+ isAutoincrement = column5["EXTRA"] === "auto_increment";
11541
+ isDefaultAnExpression = column5["EXTRA"].includes("DEFAULT_GENERATED");
11457
11542
  }
11458
11543
  if (schema4 !== inputSchema) {
11459
11544
  schemas.push(schema4);
@@ -11763,18 +11848,18 @@ var init_pgSerializer = __esm({
11763
11848
  const foreignKeysObject = {};
11764
11849
  const primaryKeysObject = {};
11765
11850
  const uniqueConstraintObject = {};
11766
- columns.forEach((column4) => {
11767
- const notNull = column4.notNull;
11768
- const primaryKey = column4.primary;
11769
- const sqlTypeLowered = column4.getSQLType().toLowerCase();
11851
+ columns.forEach((column5) => {
11852
+ const notNull = column5.notNull;
11853
+ const primaryKey = column5.primary;
11854
+ const sqlTypeLowered = column5.getSQLType().toLowerCase();
11770
11855
  const columnToSet = {
11771
- name: column4.name,
11772
- type: column4.getSQLType(),
11856
+ name: column5.name,
11857
+ type: column5.getSQLType(),
11773
11858
  primaryKey,
11774
11859
  notNull
11775
11860
  };
11776
- if (column4.isUnique) {
11777
- const existingUnique = uniqueConstraintObject[column4.uniqueName];
11861
+ if (column5.isUnique) {
11862
+ const existingUnique = uniqueConstraintObject[column5.uniqueName];
11778
11863
  if (typeof existingUnique !== "undefined") {
11779
11864
  console.log(
11780
11865
  `
@@ -11782,9 +11867,9 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
11782
11867
  tableName
11783
11868
  )} table.
11784
11869
  The unique constraint ${source_default.underline.blue(
11785
- column4.uniqueName
11870
+ column5.uniqueName
11786
11871
  )} on the ${source_default.underline.blue(
11787
- column4.name
11872
+ column5.name
11788
11873
  )} column is confilcting with a unique constraint name already defined for ${source_default.underline.blue(
11789
11874
  existingUnique.columns.join(",")
11790
11875
  )} columns
@@ -11792,38 +11877,38 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
11792
11877
  );
11793
11878
  process.exit(1);
11794
11879
  }
11795
- uniqueConstraintObject[column4.uniqueName] = {
11796
- name: column4.uniqueName,
11797
- nullsNotDistinct: column4.uniqueType === "not distinct",
11880
+ uniqueConstraintObject[column5.uniqueName] = {
11881
+ name: column5.uniqueName,
11882
+ nullsNotDistinct: column5.uniqueType === "not distinct",
11798
11883
  columns: [columnToSet.name]
11799
11884
  };
11800
11885
  }
11801
- if (column4.default !== void 0) {
11802
- if ((0, import_drizzle_orm5.is)(column4.default, import_drizzle_orm5.SQL)) {
11803
- columnToSet.default = sqlToStr(column4.default);
11886
+ if (column5.default !== void 0) {
11887
+ if ((0, import_drizzle_orm5.is)(column5.default, import_drizzle_orm5.SQL)) {
11888
+ columnToSet.default = sqlToStr(column5.default);
11804
11889
  } else {
11805
- if (typeof column4.default === "string") {
11806
- columnToSet.default = `'${column4.default}'`;
11890
+ if (typeof column5.default === "string") {
11891
+ columnToSet.default = `'${column5.default}'`;
11807
11892
  } else {
11808
11893
  if (sqlTypeLowered === "jsonb" || sqlTypeLowered === "json") {
11809
11894
  columnToSet.default = `'${JSON.stringify(
11810
- column4.default
11895
+ column5.default
11811
11896
  )}'::${sqlTypeLowered}`;
11812
- } else if (column4.default instanceof Date) {
11897
+ } else if (column5.default instanceof Date) {
11813
11898
  if (sqlTypeLowered === "date") {
11814
- columnToSet.default = `'${column4.default.toISOString().split("T")[0]}'`;
11899
+ columnToSet.default = `'${column5.default.toISOString().split("T")[0]}'`;
11815
11900
  } else if (sqlTypeLowered === "timestamp") {
11816
- columnToSet.default = `'${column4.default.toISOString().replace("T", " ").slice(0, 23)}'`;
11901
+ columnToSet.default = `'${column5.default.toISOString().replace("T", " ").slice(0, 23)}'`;
11817
11902
  } else {
11818
- columnToSet.default = `'${column4.default.toISOString()}'`;
11903
+ columnToSet.default = `'${column5.default.toISOString()}'`;
11819
11904
  }
11820
11905
  } else {
11821
- columnToSet.default = column4.default;
11906
+ columnToSet.default = column5.default;
11822
11907
  }
11823
11908
  }
11824
11909
  }
11825
11910
  }
11826
- columnsObject[column4.name] = columnToSet;
11911
+ columnsObject[column5.name] = columnToSet;
11827
11912
  });
11828
11913
  primaryKeys.map((pk) => {
11829
11914
  const columnNames = pk.columns.map((c) => c.name);
@@ -12303,43 +12388,43 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
12303
12388
  // json: "::json",
12304
12389
  "character(": "::bpchar"
12305
12390
  };
12306
- defaultForColumn = (column4) => {
12307
- if (column4.data_type === "serial" || column4.data_type === "smallserial" || column4.data_type === "bigserial") {
12391
+ defaultForColumn = (column5) => {
12392
+ if (column5.data_type === "serial" || column5.data_type === "smallserial" || column5.data_type === "bigserial") {
12308
12393
  return void 0;
12309
12394
  }
12310
12395
  const hasDifferentDefaultCast = Object.keys(columnToDefault).find(
12311
- (it) => column4.data_type.startsWith(it)
12396
+ (it) => column5.data_type.startsWith(it)
12312
12397
  );
12313
- if (column4.column_default === null) {
12398
+ if (column5.column_default === null) {
12314
12399
  return void 0;
12315
12400
  }
12316
- const columnDefaultAsString = column4.column_default.toString();
12401
+ const columnDefaultAsString = column5.column_default.toString();
12317
12402
  if (columnDefaultAsString.endsWith(
12318
- hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : column4.data_type
12403
+ hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : column5.data_type
12319
12404
  )) {
12320
- const nonPrefixPart = column4.column_default.length - (hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : `::${column4.data_type}`).length - 1;
12321
- const rt = column4.column_default.toString().substring(1, nonPrefixPart);
12322
- if (/^-?[\d.]+(?:e-?\d+)?$/.test(rt) && !column4.data_type.startsWith("numeric")) {
12405
+ const nonPrefixPart = column5.column_default.length - (hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : `::${column5.data_type}`).length - 1;
12406
+ const rt = column5.column_default.toString().substring(1, nonPrefixPart);
12407
+ if (/^-?[\d.]+(?:e-?\d+)?$/.test(rt) && !column5.data_type.startsWith("numeric")) {
12323
12408
  return Number(rt);
12324
- } else if (column4.data_type === "json" || column4.data_type === "jsonb") {
12409
+ } else if (column5.data_type === "json" || column5.data_type === "jsonb") {
12325
12410
  const jsonWithoutSpaces = JSON.stringify(JSON.parse(rt));
12326
- return `'${jsonWithoutSpaces}'${hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : `::${column4.data_type}`}`;
12327
- } else if (column4.data_type === "boolean") {
12328
- return column4.column_default === "true";
12411
+ return `'${jsonWithoutSpaces}'${hasDifferentDefaultCast ? columnToDefault[hasDifferentDefaultCast] : `::${column5.data_type}`}`;
12412
+ } else if (column5.data_type === "boolean") {
12413
+ return column5.column_default === "true";
12329
12414
  } else {
12330
12415
  return `'${rt}'`;
12331
12416
  }
12332
12417
  } else {
12333
- if (/^-?[\d.]+(?:e-?\d+)?$/.test(columnDefaultAsString) && !column4.data_type.startsWith("numeric")) {
12418
+ if (/^-?[\d.]+(?:e-?\d+)?$/.test(columnDefaultAsString) && !column5.data_type.startsWith("numeric")) {
12334
12419
  return Number(columnDefaultAsString);
12335
- } else if (column4.data_type === "boolean") {
12336
- return column4.column_default === "true";
12420
+ } else if (column5.data_type === "boolean") {
12421
+ return column5.column_default === "true";
12337
12422
  } else {
12338
12423
  return `${columnDefaultAsString}`;
12339
12424
  }
12340
12425
  }
12341
12426
  };
12342
- toDrizzle = (schema4) => {
12427
+ toDrizzle = (schema4, schemaName) => {
12343
12428
  const tables = {};
12344
12429
  Object.values(schema4.tables).forEach((t) => {
12345
12430
  const columns = {};
@@ -12413,17 +12498,31 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
12413
12498
  }
12414
12499
  columns[columnName] = columnBuilder;
12415
12500
  });
12416
- tables[t.name] = (0, import_pg_core2.pgTable)(t.name, columns, (cb) => {
12417
- const res = {};
12418
- Object.values(t.compositePrimaryKeys).forEach((cpk) => {
12419
- const gh = cpk.columns.map((c) => cb[c]);
12420
- res[cpk.name] = new import_pg_core2.PrimaryKeyBuilder(
12421
- gh,
12422
- cpk.name
12423
- );
12501
+ if (schemaName === "public") {
12502
+ tables[t.name] = (0, import_pg_core2.pgTable)(t.name, columns, (cb) => {
12503
+ const res = {};
12504
+ Object.values(t.compositePrimaryKeys).forEach((cpk) => {
12505
+ const gh = cpk.columns.map((c) => cb[c]);
12506
+ res[cpk.name] = new import_pg_core2.PrimaryKeyBuilder(
12507
+ gh,
12508
+ cpk.name
12509
+ );
12510
+ });
12511
+ return res;
12424
12512
  });
12425
- return res;
12426
- });
12513
+ } else {
12514
+ tables[t.name] = (0, import_pg_core2.pgSchema)(schemaName).table(t.name, columns, (cb) => {
12515
+ const res = {};
12516
+ Object.values(t.compositePrimaryKeys).forEach((cpk) => {
12517
+ const gh = cpk.columns.map((c) => cb[c]);
12518
+ res[cpk.name] = new import_pg_core2.PrimaryKeyBuilder(
12519
+ gh,
12520
+ cpk.name
12521
+ );
12522
+ });
12523
+ return res;
12524
+ });
12525
+ }
12427
12526
  });
12428
12527
  return tables;
12429
12528
  };
@@ -12528,26 +12627,26 @@ var init_sqliteSerializer = __esm({
12528
12627
  primaryKeys,
12529
12628
  uniqueConstraints
12530
12629
  } = (0, import_sqlite_core2.getTableConfig)(table4);
12531
- columns.forEach((column4) => {
12532
- const notNull = column4.notNull;
12533
- const primaryKey = column4.primary;
12630
+ columns.forEach((column5) => {
12631
+ const notNull = column5.notNull;
12632
+ const primaryKey = column5.primary;
12534
12633
  const columnToSet = {
12535
- name: column4.name,
12536
- type: column4.getSQLType(),
12634
+ name: column5.name,
12635
+ type: column5.getSQLType(),
12537
12636
  primaryKey,
12538
12637
  notNull,
12539
- autoincrement: (0, import_drizzle_orm7.is)(column4, import_sqlite_core2.SQLiteBaseInteger) ? column4.autoIncrement : false
12638
+ autoincrement: (0, import_drizzle_orm7.is)(column5, import_sqlite_core2.SQLiteBaseInteger) ? column5.autoIncrement : false
12540
12639
  };
12541
- if (column4.default !== void 0) {
12542
- if ((0, import_drizzle_orm7.is)(column4.default, import_drizzle_orm7.SQL)) {
12543
- columnToSet.default = sqlToStr(column4.default);
12640
+ if (column5.default !== void 0) {
12641
+ if ((0, import_drizzle_orm7.is)(column5.default, import_drizzle_orm7.SQL)) {
12642
+ columnToSet.default = sqlToStr(column5.default);
12544
12643
  } else {
12545
- columnToSet.default = typeof column4.default === "string" ? `'${column4.default}'` : column4.default;
12644
+ columnToSet.default = typeof column5.default === "string" ? `'${column5.default}'` : column5.default;
12546
12645
  }
12547
12646
  }
12548
- columnsObject[column4.name] = columnToSet;
12549
- if (column4.isUnique) {
12550
- const existingUnique = indexesObject[column4.uniqueName];
12647
+ columnsObject[column5.name] = columnToSet;
12648
+ if (column5.isUnique) {
12649
+ const existingUnique = indexesObject[column5.uniqueName];
12551
12650
  if (typeof existingUnique !== "undefined") {
12552
12651
  console.log(
12553
12652
  `
@@ -12555,9 +12654,9 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
12555
12654
  tableName
12556
12655
  )} table.
12557
12656
  The unique constraint ${source_default.underline.blue(
12558
- column4.uniqueName
12657
+ column5.uniqueName
12559
12658
  )} on the ${source_default.underline.blue(
12560
- column4.name
12659
+ column5.name
12561
12660
  )} column is confilcting with a unique constraint name already defined for ${source_default.underline.blue(
12562
12661
  existingUnique.columns.join(",")
12563
12662
  )} columns
@@ -12565,8 +12664,8 @@ ${withStyle.errorWarning(`We've found duplicated unique constraint names in ${so
12565
12664
  );
12566
12665
  process.exit(1);
12567
12666
  }
12568
- indexesObject[column4.uniqueName] = {
12569
- name: column4.uniqueName,
12667
+ indexesObject[column5.uniqueName] = {
12668
+ name: column5.uniqueName,
12570
12669
  columns: [columnToSet.name],
12571
12670
  isUnique: true
12572
12671
  };
@@ -12698,23 +12797,23 @@ The unique constraint ${source_default.underline.blue(
12698
12797
  let indexesCount = 0;
12699
12798
  let foreignKeysCount = 0;
12700
12799
  const tableToPk = {};
12701
- for (const column4 of columns) {
12702
- if (!tablesFilter(column4.tableName))
12800
+ for (const column5 of columns) {
12801
+ if (!tablesFilter(column5.tableName))
12703
12802
  continue;
12704
12803
  columnsCount += 1;
12705
12804
  if (progressCallback) {
12706
12805
  progressCallback("columns", columnsCount, "fetching");
12707
12806
  }
12708
- const tableName = column4.tableName;
12807
+ const tableName = column5.tableName;
12709
12808
  tablesCount.add(tableName);
12710
12809
  if (progressCallback) {
12711
12810
  progressCallback("tables", tablesCount.size, "fetching");
12712
12811
  }
12713
- const columnName = column4.columnName;
12714
- const isNotNull = column4.notNull === 1;
12715
- const columnType = column4.columnType;
12716
- const isPrimary = column4.pk !== 0;
12717
- const columnDefault = column4.defaultValue;
12812
+ const columnName = column5.columnName;
12813
+ const isNotNull = column5.notNull === 1;
12814
+ const columnType = column5.columnType;
12815
+ const isPrimary = column5.pk !== 0;
12816
+ const columnDefault = column5.defaultValue;
12718
12817
  const isAutoincrement = isPrimary && tablesWithSeq.includes(tableName);
12719
12818
  if (isPrimary) {
12720
12819
  if (typeof tableToPk[tableName] === "undefined") {
@@ -14977,13 +15076,13 @@ var init_sqlgenerator = __esm({
14977
15076
  statement += `CREATE TABLE IF NOT EXISTS ${name} (
14978
15077
  `;
14979
15078
  for (let i = 0; i < columns.length; i++) {
14980
- const column4 = columns[i];
14981
- const primaryKeyStatement = column4.primaryKey ? " PRIMARY KEY" : "";
14982
- const notNullStatement = column4.notNull ? " NOT NULL" : "";
14983
- const defaultStatement = column4.default !== void 0 ? ` DEFAULT ${column4.default}` : "";
14984
- const uniqueConstraint4 = column4.isUnique ? ` CONSTRAINT "${column4.uniqueName}" UNIQUE${column4.nullsNotDistinct ? " NULLS NOT DISTINCT" : ""}` : "";
14985
- const type = isPgNativeType(column4.type) ? column4.type : `"${column4.type}"`;
14986
- statement += ` "${column4.name}" ${type}${primaryKeyStatement}${defaultStatement}${notNullStatement}${uniqueConstraint4}`;
15079
+ const column5 = columns[i];
15080
+ const primaryKeyStatement = column5.primaryKey ? " PRIMARY KEY" : "";
15081
+ const notNullStatement = column5.notNull ? " NOT NULL" : "";
15082
+ const defaultStatement = column5.default !== void 0 ? ` DEFAULT ${column5.default}` : "";
15083
+ const uniqueConstraint4 = column5.isUnique ? ` CONSTRAINT "${column5.uniqueName}" UNIQUE${column5.nullsNotDistinct ? " NULLS NOT DISTINCT" : ""}` : "";
15084
+ const type = isPgNativeType(column5.type) ? column5.type : `"${column5.type}"`;
15085
+ statement += ` "${column5.name}" ${type}${primaryKeyStatement}${defaultStatement}${notNullStatement}${uniqueConstraint4}`;
14987
15086
  statement += i === columns.length - 1 ? "" : ",\n";
14988
15087
  }
14989
15088
  if (typeof compositePKs !== "undefined" && compositePKs.length > 0) {
@@ -15016,13 +15115,13 @@ var init_sqlgenerator = __esm({
15016
15115
  statement += `CREATE TABLE ${tName} (
15017
15116
  `;
15018
15117
  for (let i = 0; i < columns.length; i++) {
15019
- const column4 = columns[i];
15020
- const primaryKeyStatement = column4.primaryKey ? " PRIMARY KEY" : "";
15021
- const notNullStatement = column4.notNull ? " NOT NULL" : "";
15022
- const defaultStatement = column4.default !== void 0 ? ` DEFAULT ${column4.default}` : "";
15023
- const onUpdateStatement = column4.onUpdate ? ` ON UPDATE CURRENT_TIMESTAMP` : "";
15024
- const autoincrementStatement = column4.autoincrement ? " AUTO_INCREMENT" : "";
15025
- statement += ` \`${column4.name}\` ${column4.type}${autoincrementStatement}${primaryKeyStatement}${notNullStatement}${defaultStatement}${onUpdateStatement}`;
15118
+ const column5 = columns[i];
15119
+ const primaryKeyStatement = column5.primaryKey ? " PRIMARY KEY" : "";
15120
+ const notNullStatement = column5.notNull ? " NOT NULL" : "";
15121
+ const defaultStatement = column5.default !== void 0 ? ` DEFAULT ${column5.default}` : "";
15122
+ const onUpdateStatement = column5.onUpdate ? ` ON UPDATE CURRENT_TIMESTAMP` : "";
15123
+ const autoincrementStatement = column5.autoincrement ? " AUTO_INCREMENT" : "";
15124
+ statement += ` \`${column5.name}\` ${column5.type}${autoincrementStatement}${primaryKeyStatement}${notNullStatement}${defaultStatement}${onUpdateStatement}`;
15026
15125
  statement += i === columns.length - 1 ? "" : ",\n";
15027
15126
  }
15028
15127
  if (typeof compositePKs !== "undefined" && compositePKs.length > 0) {
@@ -15060,13 +15159,13 @@ var init_sqlgenerator = __esm({
15060
15159
  statement += `CREATE TABLE \`${tableName}\` (
15061
15160
  `;
15062
15161
  for (let i = 0; i < columns.length; i++) {
15063
- const column4 = columns[i];
15064
- const primaryKeyStatement = column4.primaryKey ? " PRIMARY KEY" : "";
15065
- const notNullStatement = column4.notNull ? " NOT NULL" : "";
15066
- const defaultStatement = column4.default !== void 0 ? ` DEFAULT ${column4.default}` : "";
15067
- const autoincrementStatement = column4.autoincrement ? " AUTOINCREMENT" : "";
15162
+ const column5 = columns[i];
15163
+ const primaryKeyStatement = column5.primaryKey ? " PRIMARY KEY" : "";
15164
+ const notNullStatement = column5.notNull ? " NOT NULL" : "";
15165
+ const defaultStatement = column5.default !== void 0 ? ` DEFAULT ${column5.default}` : "";
15166
+ const autoincrementStatement = column5.autoincrement ? " AUTOINCREMENT" : "";
15068
15167
  statement += " ";
15069
- statement += `\`${column4.name}\` ${column4.type}${primaryKeyStatement}${autoincrementStatement}${defaultStatement}${notNullStatement}`;
15168
+ statement += `\`${column5.name}\` ${column5.type}${primaryKeyStatement}${autoincrementStatement}${defaultStatement}${notNullStatement}`;
15070
15169
  statement += i === columns.length - 1 ? "" : ",\n";
15071
15170
  }
15072
15171
  compositePKs.forEach((it) => {
@@ -15324,11 +15423,11 @@ var init_sqlgenerator = __esm({
15324
15423
  return statement.type === "alter_table_add_column" && dialect6 === "pg";
15325
15424
  }
15326
15425
  convert(statement) {
15327
- const { tableName, column: column4, schema: schema4 } = statement;
15328
- const { name, type, notNull } = column4;
15426
+ const { tableName, column: column5, schema: schema4 } = statement;
15427
+ const { name, type, notNull } = column5;
15329
15428
  const tableNameWithSchema = schema4 ? `"${schema4}"."${tableName}"` : `"${tableName}"`;
15330
- const defaultStatement = `${column4.default !== void 0 ? ` DEFAULT ${column4.default}` : ""}`;
15331
- const fixedType = isPgNativeType(column4.type) ? column4.type : `"${column4.type}"`;
15429
+ const defaultStatement = `${column5.default !== void 0 ? ` DEFAULT ${column5.default}` : ""}`;
15430
+ const fixedType = isPgNativeType(column5.type) ? column5.type : `"${column5.type}"`;
15332
15431
  const notNullStatement = `${notNull ? " NOT NULL" : ""}`;
15333
15432
  return `ALTER TABLE ${tableNameWithSchema} ADD COLUMN "${name}" ${fixedType}${defaultStatement}${notNullStatement};`;
15334
15433
  }
@@ -15338,9 +15437,9 @@ var init_sqlgenerator = __esm({
15338
15437
  return statement.type === "alter_table_add_column" && dialect6 === "mysql";
15339
15438
  }
15340
15439
  convert(statement) {
15341
- const { tableName, column: column4 } = statement;
15342
- const { name, type, notNull, primaryKey, autoincrement, onUpdate } = column4;
15343
- const defaultStatement = `${column4.default !== void 0 ? ` DEFAULT ${column4.default}` : ""}`;
15440
+ const { tableName, column: column5 } = statement;
15441
+ const { name, type, notNull, primaryKey, autoincrement, onUpdate } = column5;
15442
+ const defaultStatement = `${column5.default !== void 0 ? ` DEFAULT ${column5.default}` : ""}`;
15344
15443
  const notNullStatement = `${notNull ? " NOT NULL" : ""}`;
15345
15444
  const primaryKeyStatement = `${primaryKey ? " PRIMARY KEY" : ""}`;
15346
15445
  const autoincrementStatement = `${autoincrement ? " AUTO_INCREMENT" : ""}`;
@@ -15353,9 +15452,9 @@ var init_sqlgenerator = __esm({
15353
15452
  return statement.type === "sqlite_alter_table_add_column" && dialect6 === "sqlite";
15354
15453
  }
15355
15454
  convert(statement) {
15356
- const { tableName, column: column4, referenceData } = statement;
15357
- const { name, type, notNull, primaryKey } = column4;
15358
- const defaultStatement = `${column4.default !== void 0 ? ` DEFAULT ${column4.default}` : ""}`;
15455
+ const { tableName, column: column5, referenceData } = statement;
15456
+ const { name, type, notNull, primaryKey } = column5;
15457
+ const defaultStatement = `${column5.default !== void 0 ? ` DEFAULT ${column5.default}` : ""}`;
15359
15458
  const notNullStatement = `${notNull ? " NOT NULL" : ""}`;
15360
15459
  const primaryKeyStatement = `${primaryKey ? " PRIMARY KEY" : ""}`;
15361
15460
  const referenceAsObject = referenceData ? SQLiteSquasher.unsquashFK(referenceData) : void 0;
@@ -16398,15 +16497,15 @@ var init_jsonStatements = __esm({
16398
16497
  let statements = [];
16399
16498
  let dropPkStatements = [];
16400
16499
  let setPkStatements = [];
16401
- for (const column4 of columns) {
16402
- const columnName = typeof column4.name !== "string" ? column4.name.new : column4.name;
16500
+ for (const column5 of columns) {
16501
+ const columnName = typeof column5.name !== "string" ? column5.name.new : column5.name;
16403
16502
  const columnType = json2.tables[tableName].columns[columnName].type;
16404
16503
  const columnDefault = json2.tables[tableName].columns[columnName].default;
16405
16504
  const columnOnUpdate = json2.tables[tableName].columns[columnName].onUpdate;
16406
16505
  const columnNotNull = json2.tables[tableName].columns[columnName].notNull;
16407
16506
  const columnAutoIncrement = json2.tables[tableName].columns[columnName].autoincrement;
16408
16507
  const columnPk = json2.tables[tableName].columns[columnName].primaryKey;
16409
- if (((_a3 = column4.autoincrement) == null ? void 0 : _a3.type) === "added") {
16508
+ if (((_a3 = column5.autoincrement) == null ? void 0 : _a3.type) === "added") {
16410
16509
  statements.push({
16411
16510
  type: "alter_table_alter_column_set_autoincrement",
16412
16511
  tableName,
@@ -16420,8 +16519,8 @@ var init_jsonStatements = __esm({
16420
16519
  columnPk
16421
16520
  });
16422
16521
  }
16423
- if (((_b = column4.autoincrement) == null ? void 0 : _b.type) === "changed") {
16424
- const type = column4.autoincrement.new ? "alter_table_alter_column_set_autoincrement" : "alter_table_alter_column_drop_autoincrement";
16522
+ if (((_b = column5.autoincrement) == null ? void 0 : _b.type) === "changed") {
16523
+ const type = column5.autoincrement.new ? "alter_table_alter_column_set_autoincrement" : "alter_table_alter_column_drop_autoincrement";
16425
16524
  statements.push({
16426
16525
  type,
16427
16526
  tableName,
@@ -16435,7 +16534,7 @@ var init_jsonStatements = __esm({
16435
16534
  columnPk
16436
16535
  });
16437
16536
  }
16438
- if (((_c = column4.autoincrement) == null ? void 0 : _c.type) === "deleted") {
16537
+ if (((_c = column5.autoincrement) == null ? void 0 : _c.type) === "deleted") {
16439
16538
  statements.push({
16440
16539
  type: "alter_table_alter_column_drop_autoincrement",
16441
16540
  tableName,
@@ -16450,8 +16549,8 @@ var init_jsonStatements = __esm({
16450
16549
  });
16451
16550
  }
16452
16551
  }
16453
- for (const column4 of columns) {
16454
- const columnName = typeof column4.name !== "string" ? column4.name.new : column4.name;
16552
+ for (const column5 of columns) {
16553
+ const columnName = typeof column5.name !== "string" ? column5.name.new : column5.name;
16455
16554
  const columnType = json2.tables[tableName].columns[columnName].type;
16456
16555
  const columnDefault = json2.tables[tableName].columns[columnName].default;
16457
16556
  const columnOnUpdate = json2.tables[tableName].columns[columnName].onUpdate;
@@ -16459,22 +16558,22 @@ var init_jsonStatements = __esm({
16459
16558
  const columnAutoIncrement = json2.tables[tableName].columns[columnName].autoincrement;
16460
16559
  const columnPk = json2.tables[tableName].columns[columnName].primaryKey;
16461
16560
  const compositePk = json2.tables[tableName].compositePrimaryKeys[`${tableName}_${columnName}`];
16462
- if (typeof column4.name !== "string") {
16561
+ if (typeof column5.name !== "string") {
16463
16562
  statements.push({
16464
16563
  type: "alter_table_rename_column",
16465
16564
  tableName,
16466
- oldColumnName: column4.name.old,
16467
- newColumnName: column4.name.new,
16565
+ oldColumnName: column5.name.old,
16566
+ newColumnName: column5.name.new,
16468
16567
  schema: schema4
16469
16568
  });
16470
16569
  }
16471
- if (((_d = column4.type) == null ? void 0 : _d.type) === "changed") {
16570
+ if (((_d = column5.type) == null ? void 0 : _d.type) === "changed") {
16472
16571
  statements.push({
16473
16572
  type: "alter_table_alter_column_set_type",
16474
16573
  tableName,
16475
16574
  columnName,
16476
- newDataType: column4.type.new,
16477
- oldDataType: column4.type.old,
16575
+ newDataType: column5.type.new,
16576
+ oldDataType: column5.type.old,
16478
16577
  schema: schema4,
16479
16578
  columnDefault,
16480
16579
  columnOnUpdate,
@@ -16483,7 +16582,7 @@ var init_jsonStatements = __esm({
16483
16582
  columnPk
16484
16583
  });
16485
16584
  }
16486
- if (((_e = column4.primaryKey) == null ? void 0 : _e.type) === "deleted" || ((_f = column4.primaryKey) == null ? void 0 : _f.type) === "changed" && !column4.primaryKey.new && typeof compositePk === "undefined") {
16585
+ if (((_e = column5.primaryKey) == null ? void 0 : _e.type) === "deleted" || ((_f = column5.primaryKey) == null ? void 0 : _f.type) === "changed" && !column5.primaryKey.new && typeof compositePk === "undefined") {
16487
16586
  dropPkStatements.push({
16488
16587
  ////
16489
16588
  type: "alter_table_alter_column_drop_pk",
@@ -16492,12 +16591,12 @@ var init_jsonStatements = __esm({
16492
16591
  schema: schema4
16493
16592
  });
16494
16593
  }
16495
- if (((_g = column4.default) == null ? void 0 : _g.type) === "added") {
16594
+ if (((_g = column5.default) == null ? void 0 : _g.type) === "added") {
16496
16595
  statements.push({
16497
16596
  type: "alter_table_alter_column_set_default",
16498
16597
  tableName,
16499
16598
  columnName,
16500
- newDefaultValue: column4.default.value,
16599
+ newDefaultValue: column5.default.value,
16501
16600
  schema: schema4,
16502
16601
  columnOnUpdate,
16503
16602
  columnNotNull,
@@ -16506,13 +16605,13 @@ var init_jsonStatements = __esm({
16506
16605
  columnPk
16507
16606
  });
16508
16607
  }
16509
- if (((_h = column4.default) == null ? void 0 : _h.type) === "changed") {
16608
+ if (((_h = column5.default) == null ? void 0 : _h.type) === "changed") {
16510
16609
  statements.push({
16511
16610
  type: "alter_table_alter_column_set_default",
16512
16611
  tableName,
16513
16612
  columnName,
16514
- newDefaultValue: column4.default.new,
16515
- oldDefaultValue: column4.default.old,
16613
+ newDefaultValue: column5.default.new,
16614
+ oldDefaultValue: column5.default.old,
16516
16615
  schema: schema4,
16517
16616
  columnOnUpdate,
16518
16617
  columnNotNull,
@@ -16521,7 +16620,7 @@ var init_jsonStatements = __esm({
16521
16620
  columnPk
16522
16621
  });
16523
16622
  }
16524
- if (((_i = column4.default) == null ? void 0 : _i.type) === "deleted") {
16623
+ if (((_i = column5.default) == null ? void 0 : _i.type) === "deleted") {
16525
16624
  statements.push({
16526
16625
  type: "alter_table_alter_column_drop_default",
16527
16626
  tableName,
@@ -16535,7 +16634,7 @@ var init_jsonStatements = __esm({
16535
16634
  columnPk
16536
16635
  });
16537
16636
  }
16538
- if (((_j = column4.notNull) == null ? void 0 : _j.type) === "added") {
16637
+ if (((_j = column5.notNull) == null ? void 0 : _j.type) === "added") {
16539
16638
  statements.push({
16540
16639
  type: "alter_table_alter_column_set_notnull",
16541
16640
  tableName,
@@ -16549,8 +16648,8 @@ var init_jsonStatements = __esm({
16549
16648
  columnPk
16550
16649
  });
16551
16650
  }
16552
- if (((_k = column4.notNull) == null ? void 0 : _k.type) === "changed") {
16553
- const type = column4.notNull.new ? "alter_table_alter_column_set_notnull" : "alter_table_alter_column_drop_notnull";
16651
+ if (((_k = column5.notNull) == null ? void 0 : _k.type) === "changed") {
16652
+ const type = column5.notNull.new ? "alter_table_alter_column_set_notnull" : "alter_table_alter_column_drop_notnull";
16554
16653
  statements.push({
16555
16654
  type,
16556
16655
  tableName,
@@ -16564,7 +16663,7 @@ var init_jsonStatements = __esm({
16564
16663
  columnPk
16565
16664
  });
16566
16665
  }
16567
- if (((_l = column4.notNull) == null ? void 0 : _l.type) === "deleted") {
16666
+ if (((_l = column5.notNull) == null ? void 0 : _l.type) === "deleted") {
16568
16667
  statements.push({
16569
16668
  type: "alter_table_alter_column_drop_notnull",
16570
16669
  tableName,
@@ -16578,7 +16677,7 @@ var init_jsonStatements = __esm({
16578
16677
  columnPk
16579
16678
  });
16580
16679
  }
16581
- if (((_m = column4.primaryKey) == null ? void 0 : _m.type) === "added" || ((_n = column4.primaryKey) == null ? void 0 : _n.type) === "changed" && column4.primaryKey.new) {
16680
+ if (((_m = column5.primaryKey) == null ? void 0 : _m.type) === "added" || ((_n = column5.primaryKey) == null ? void 0 : _n.type) === "changed" && column5.primaryKey.new) {
16582
16681
  const wasAutoincrement = statements.filter(
16583
16682
  (it) => it.type === "alter_table_alter_column_set_autoincrement"
16584
16683
  );
@@ -16591,7 +16690,7 @@ var init_jsonStatements = __esm({
16591
16690
  });
16592
16691
  }
16593
16692
  }
16594
- if (((_o = column4.onUpdate) == null ? void 0 : _o.type) === "added") {
16693
+ if (((_o = column5.onUpdate) == null ? void 0 : _o.type) === "added") {
16595
16694
  statements.push({
16596
16695
  type: "alter_table_alter_column_set_on_update",
16597
16696
  tableName,
@@ -16605,7 +16704,7 @@ var init_jsonStatements = __esm({
16605
16704
  columnPk
16606
16705
  });
16607
16706
  }
16608
- if (((_p = column4.onUpdate) == null ? void 0 : _p.type) === "deleted") {
16707
+ if (((_p = column5.onUpdate) == null ? void 0 : _p.type) === "deleted") {
16609
16708
  statements.push({
16610
16709
  type: "alter_table_alter_column_drop_on_update",
16611
16710
  tableName,
@@ -17673,10 +17772,587 @@ var init_utils2 = __esm({
17673
17772
  });
17674
17773
 
17675
17774
  // src/introspect.ts
17775
+ var pgImportsList, objToStatement2, timeConfig, possibleIntervals, intervalStrToObj, intervalConfig, importsPatch, relations, withCasing, schemaToTypeScript, isCyclic, isSelf, column4, dimensionsInArray, createTableColumns, createTableIndexes, createTablePKs, createTableUniques, createTableFKs;
17676
17776
  var init_introspect = __esm({
17677
17777
  "src/introspect.ts"() {
17678
17778
  init_utils2();
17679
17779
  init_pgSerializer();
17780
+ pgImportsList = /* @__PURE__ */ new Set([
17781
+ "pgTable",
17782
+ "pgEnum",
17783
+ "smallint",
17784
+ "integer",
17785
+ "bigint",
17786
+ "boolean",
17787
+ "text",
17788
+ "varchar",
17789
+ "char",
17790
+ "serial",
17791
+ "smallserial",
17792
+ "bigserial",
17793
+ "decimal",
17794
+ "numeric",
17795
+ "real",
17796
+ "json",
17797
+ "jsonb",
17798
+ "time",
17799
+ "timestamp",
17800
+ "date",
17801
+ "interval",
17802
+ "cidr",
17803
+ "inet",
17804
+ "macaddr",
17805
+ "macaddr8",
17806
+ "bigint",
17807
+ "doublePrecision",
17808
+ "uuid"
17809
+ ]);
17810
+ objToStatement2 = (json) => {
17811
+ json = Object.fromEntries(Object.entries(json).filter((it) => it[1]));
17812
+ const keys = Object.keys(json);
17813
+ if (keys.length === 0)
17814
+ return;
17815
+ let statement = "{ ";
17816
+ statement += keys.map((it) => `${it}: "${json[it]}"`).join(", ");
17817
+ statement += " }";
17818
+ return statement;
17819
+ };
17820
+ timeConfig = (json) => {
17821
+ json = Object.fromEntries(Object.entries(json).filter((it) => it[1]));
17822
+ const keys = Object.keys(json);
17823
+ if (keys.length === 0)
17824
+ return;
17825
+ let statement = "{ ";
17826
+ statement += keys.map((it) => `${it}: ${json[it]}`).join(", ");
17827
+ statement += " }";
17828
+ return statement;
17829
+ };
17830
+ possibleIntervals = [
17831
+ "year",
17832
+ "month",
17833
+ "day",
17834
+ "hour",
17835
+ "minute",
17836
+ "second",
17837
+ "year to month",
17838
+ "day to hour",
17839
+ "day to minute",
17840
+ "day to second",
17841
+ "hour to minute",
17842
+ "hour to second",
17843
+ "minute to second"
17844
+ ];
17845
+ intervalStrToObj = (str) => {
17846
+ if (str.startsWith("interval(")) {
17847
+ return {
17848
+ precision: Number(str.substring("interval(".length, str.length - 1))
17849
+ };
17850
+ }
17851
+ const splitted = str.split(" ");
17852
+ if (splitted.length === 1) {
17853
+ return {};
17854
+ }
17855
+ const rest = splitted.slice(1, splitted.length).join(" ");
17856
+ if (possibleIntervals.includes(rest)) {
17857
+ return { fields: `"${rest}"` };
17858
+ }
17859
+ for (const s of possibleIntervals) {
17860
+ if (rest.startsWith(`${s}(`)) {
17861
+ return {
17862
+ fields: `"${s}"`,
17863
+ precision: Number(rest.substring(s.length + 1, rest.length - 1))
17864
+ };
17865
+ }
17866
+ }
17867
+ return {};
17868
+ };
17869
+ intervalConfig = (str) => {
17870
+ let json = intervalStrToObj(str);
17871
+ const keys = Object.keys(json);
17872
+ if (keys.length === 0)
17873
+ return;
17874
+ let statement = "{ ";
17875
+ statement += keys.map((it) => `${it}: ${json[it]}`).join(", ");
17876
+ statement += " }";
17877
+ return statement;
17878
+ };
17879
+ importsPatch = {
17880
+ "double precision": "doublePrecision",
17881
+ "timestamp without time zone": "timestamp",
17882
+ "timestamp with time zone": "timestamp",
17883
+ "time without time zone": "time",
17884
+ "time with time zone": "time"
17885
+ };
17886
+ relations = /* @__PURE__ */ new Set();
17887
+ withCasing = (value, casing) => {
17888
+ if (typeof casing === "undefined") {
17889
+ return value;
17890
+ }
17891
+ if (casing.casing === "camel") {
17892
+ return value.camelCase();
17893
+ }
17894
+ return value;
17895
+ };
17896
+ schemaToTypeScript = (schema4, casing) => {
17897
+ Object.values(schema4.tables).forEach((table4) => {
17898
+ Object.values(table4.foreignKeys).forEach((fk4) => {
17899
+ const relation = `${fk4.tableFrom}-${fk4.tableTo}`;
17900
+ relations.add(relation);
17901
+ });
17902
+ });
17903
+ const schemas = Object.fromEntries(
17904
+ Object.entries(schema4.schemas).map((it) => {
17905
+ return [it[0], withCasing(it[1], casing)];
17906
+ })
17907
+ );
17908
+ const enumTypes = new Set(Object.values(schema4.enums).map((it) => it.name));
17909
+ const imports = Object.values(schema4.tables).reduce(
17910
+ (res, it) => {
17911
+ const idxImports = Object.values(it.indexes).map(
17912
+ (idx) => idx.isUnique ? "uniqueIndex" : "index"
17913
+ );
17914
+ const fkImpots = Object.values(it.foreignKeys).map((it2) => "foreignKey");
17915
+ if (Object.values(it.foreignKeys).some((it2) => isCyclic(it2) && !isSelf(it2))) {
17916
+ res.pg.push("type AnyPgColumn");
17917
+ }
17918
+ const pkImports = Object.values(it.compositePrimaryKeys).map(
17919
+ (it2) => "primaryKey"
17920
+ );
17921
+ const uniqueImports = Object.values(it.uniqueConstraints).map(
17922
+ (it2) => "unique"
17923
+ );
17924
+ if (it.schema && it.schema !== "public" && it.schema !== "") {
17925
+ res.pg.push("pgSchema");
17926
+ }
17927
+ res.pg.push(...idxImports);
17928
+ res.pg.push(...fkImpots);
17929
+ res.pg.push(...pkImports);
17930
+ res.pg.push(...uniqueImports);
17931
+ if (enumTypes.size > 0) {
17932
+ res.pg.push("pgEnum");
17933
+ }
17934
+ const columnImports = Object.values(it.columns).map((col) => {
17935
+ let patched = importsPatch[col.type] ?? col.type;
17936
+ patched = patched.startsWith("varchar(") ? "varchar" : patched;
17937
+ patched = patched.startsWith("char(") ? "char" : patched;
17938
+ patched = patched.startsWith("numeric(") ? "numeric" : patched;
17939
+ patched = patched.startsWith("time(") ? "time" : patched;
17940
+ patched = patched.startsWith("timestamp(") ? "timestamp" : patched;
17941
+ return patched;
17942
+ }).filter((type) => {
17943
+ return pgImportsList.has(type);
17944
+ });
17945
+ res.pg.push(...columnImports);
17946
+ return res;
17947
+ },
17948
+ { pg: [] }
17949
+ );
17950
+ const enumStatements = Object.values(schema4.enums).map((it) => {
17951
+ const values = Object.values(it.values).map((it2) => `'${it2}'`).join(", ");
17952
+ return `export const ${withCasing(it.name, casing)} = pgEnum("${it.name}", [${values}])
17953
+ `;
17954
+ }).join("").concat("\n");
17955
+ const schemaStatements = Object.entries(schemas).map((it) => {
17956
+ return `export const ${it[1]} = pgSchema("${it[0]}");
17957
+ `;
17958
+ }).join();
17959
+ const tableStatements = Object.values(schema4.tables).map((table4) => {
17960
+ const tableSchema = schemas[table4.schema];
17961
+ const func = tableSchema ? `${tableSchema}.table` : "pgTable";
17962
+ let statement = `export const ${withCasing(
17963
+ table4.name,
17964
+ casing
17965
+ )} = ${func}("${table4.name}", {
17966
+ `;
17967
+ statement += createTableColumns(
17968
+ table4.name,
17969
+ Object.values(table4.columns),
17970
+ Object.values(table4.foreignKeys),
17971
+ enumTypes,
17972
+ casing,
17973
+ schema4.internal
17974
+ );
17975
+ statement += "}";
17976
+ const filteredFKs = Object.values(table4.foreignKeys).filter((it) => {
17977
+ return it.columnsFrom.length > 1 || isSelf(it);
17978
+ });
17979
+ if (Object.keys(table4.indexes).length > 0 || filteredFKs.length > 0 || Object.keys(table4.compositePrimaryKeys).length > 0 || Object.keys(table4.uniqueConstraints).length > 0) {
17980
+ statement += ",\n";
17981
+ statement += "(table) => {\n";
17982
+ statement += " return {\n";
17983
+ statement += createTableIndexes(
17984
+ table4.name,
17985
+ Object.values(table4.indexes),
17986
+ casing
17987
+ );
17988
+ statement += createTableFKs(Object.values(filteredFKs), casing);
17989
+ statement += createTablePKs(
17990
+ Object.values(table4.compositePrimaryKeys),
17991
+ casing
17992
+ );
17993
+ statement += createTableUniques(
17994
+ Object.values(table4.uniqueConstraints),
17995
+ casing
17996
+ );
17997
+ statement += " }\n";
17998
+ statement += "}";
17999
+ }
18000
+ statement += ");";
18001
+ return statement;
18002
+ });
18003
+ const uniquePgImports = ["pgTable", ...new Set(imports.pg)];
18004
+ let result = `import { ${uniquePgImports.join(
18005
+ ", "
18006
+ )} } from "drizzle-orm/pg-core"
18007
+
18008
+ `;
18009
+ result += `import { sql } from "drizzle-orm"
18010
+ `;
18011
+ result += enumStatements;
18012
+ result += schemaStatements;
18013
+ result += "\n";
18014
+ result += tableStatements.join("\n\n");
18015
+ return result;
18016
+ };
18017
+ isCyclic = (fk4) => {
18018
+ const key = `${fk4.tableFrom}-${fk4.tableTo}`;
18019
+ const reverse = `${fk4.tableTo}-${fk4.tableFrom}`;
18020
+ return relations.has(key) && relations.has(reverse);
18021
+ };
18022
+ isSelf = (fk4) => {
18023
+ return fk4.tableFrom === fk4.tableTo;
18024
+ };
18025
+ column4 = (tableName, type, name, enumTypes, defaultValue, casing, internals) => {
18026
+ var _a3;
18027
+ const lowered = type.toLowerCase();
18028
+ if (lowered.startsWith("serial")) {
18029
+ return `${withCasing(name, casing)}: serial("${name}")`;
18030
+ }
18031
+ if (lowered.startsWith("smallserial")) {
18032
+ return `${withCasing(name, casing)}: smallserial("${name}")`;
18033
+ }
18034
+ if (lowered.startsWith("bigserial")) {
18035
+ return `${withCasing(
18036
+ name,
18037
+ casing
18038
+ )}: bigserial("${name}", { mode: "bigint" })`;
18039
+ }
18040
+ if (lowered.startsWith("integer")) {
18041
+ let out = `${withCasing(name, casing)}: integer("${name}")`;
18042
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18043
+ return out;
18044
+ }
18045
+ if (lowered.startsWith("smallint")) {
18046
+ let out = `${withCasing(name, casing)}: smallint("${name}")`;
18047
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18048
+ return out;
18049
+ }
18050
+ if (lowered.startsWith("bigint")) {
18051
+ let out = `// You can use { mode: "bigint" } if numbers are exceeding js number limitations
18052
+ `;
18053
+ out += `${withCasing(name, casing)}: bigint("${name}", { mode: "number" })`;
18054
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18055
+ return out;
18056
+ }
18057
+ if (lowered.startsWith("boolean")) {
18058
+ let out = `${withCasing(name, casing)}: boolean("${name}")`;
18059
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18060
+ return out;
18061
+ }
18062
+ if (lowered.startsWith("double precision")) {
18063
+ let out = `${withCasing(name, casing)}: doublePrecision("${name}")`;
18064
+ out += defaultValue ? `.default(${defaultValue})` : "";
18065
+ return out;
18066
+ }
18067
+ if (lowered.startsWith("real")) {
18068
+ let out = `${withCasing(name, casing)}: real("${name}")`;
18069
+ out += defaultValue ? `.default(${defaultValue})` : "";
18070
+ return out;
18071
+ }
18072
+ if (lowered.startsWith("uuid")) {
18073
+ let out = `${withCasing(name, casing)}: uuid("${name}")`;
18074
+ out += defaultValue === "gen_random_uuid()" ? ".defaultRandom()" : defaultValue ? `.default(sql\`${defaultValue}\`)` : "";
18075
+ return out;
18076
+ }
18077
+ if (lowered.startsWith("numeric")) {
18078
+ let params;
18079
+ if (lowered.length > 7) {
18080
+ const [precision, scale] = lowered.slice(8, lowered.length - 1).split(",");
18081
+ params = { precision, scale };
18082
+ }
18083
+ let out = params ? `${withCasing(name, casing)}: numeric("${name}", ${timeConfig(params)})` : `${withCasing(name, casing)}: numeric("${name}")`;
18084
+ defaultValue = defaultValue ? defaultValue.startsWith(`'`) && defaultValue.endsWith(`'`) ? defaultValue.substring(1, defaultValue.length - 1) : defaultValue : void 0;
18085
+ out += defaultValue ? `.default('${defaultValue}')` : "";
18086
+ return out;
18087
+ }
18088
+ if (lowered.startsWith("timestamp")) {
18089
+ const withTimezone = lowered.includes("with time zone");
18090
+ let precision = lowered.startsWith("timestamp(") ? Number(
18091
+ lowered.split(" ")[0].substring("timestamp(".length, lowered.split(" ")[0].length - 1)
18092
+ ) : null;
18093
+ precision = precision ? precision : null;
18094
+ const params = timeConfig({
18095
+ precision,
18096
+ withTimezone,
18097
+ mode: "'string'"
18098
+ });
18099
+ let out = params ? `${withCasing(name, casing)}: timestamp("${name}", ${params})` : `${withCasing(name, casing)}: timestamp("${name}")`;
18100
+ defaultValue = defaultValue === "now()" || defaultValue === "CURRENT_TIMESTAMP" ? ".defaultNow()" : defaultValue ? `.default(${defaultValue})` : "";
18101
+ out += defaultValue;
18102
+ return out;
18103
+ }
18104
+ if (lowered.startsWith("time")) {
18105
+ const withTimezone = lowered.includes("with time zone");
18106
+ let precision = lowered.startsWith("time(") ? Number(
18107
+ lowered.split(" ")[0].substring("time(".length, lowered.split(" ")[0].length - 1)
18108
+ ) : null;
18109
+ precision = precision ? precision : null;
18110
+ const params = timeConfig({ precision, withTimezone });
18111
+ let out = params ? `${withCasing(name, casing)}: time("${name}", ${params})` : `${withCasing(name, casing)}: time("${name}")`;
18112
+ defaultValue = defaultValue === "now()" ? ".defaultNow()" : defaultValue ? `.default(${defaultValue})` : "";
18113
+ out += defaultValue;
18114
+ return out;
18115
+ }
18116
+ if (lowered.startsWith("interval")) {
18117
+ const params = intervalConfig(lowered);
18118
+ let out = params ? `${withCasing(name, casing)}: interval("${name}", ${params})` : `${withCasing(name, casing)}: interval("${name}")`;
18119
+ out += defaultValue ? `.default(${defaultValue})` : "";
18120
+ return out;
18121
+ }
18122
+ if (lowered === "date") {
18123
+ let out = `${withCasing(name, casing)}: date("${name}")`;
18124
+ defaultValue = defaultValue === "now()" ? ".defaultNow()" : defaultValue ? `.default(${defaultValue})` : "";
18125
+ out += defaultValue;
18126
+ return out;
18127
+ }
18128
+ if (lowered.startsWith("text")) {
18129
+ let out = `${withCasing(name, casing)}: text("${name}")`;
18130
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18131
+ return out;
18132
+ }
18133
+ if (lowered === "json") {
18134
+ let out = `${withCasing(name, casing)}: json("${name}")`;
18135
+ defaultValue = (defaultValue == null ? void 0 : defaultValue.endsWith("::json")) ? defaultValue.substring(1, defaultValue.length - 7) : defaultValue;
18136
+ const def = defaultValue ? defaultValue : null;
18137
+ out += typeof defaultValue !== "undefined" ? `.default(${def})` : "";
18138
+ return out;
18139
+ }
18140
+ if (lowered === "jsonb") {
18141
+ let out = `${withCasing(name, casing)}: jsonb("${name}")`;
18142
+ defaultValue = (defaultValue == null ? void 0 : defaultValue.endsWith("::jsonb")) ? defaultValue.substring(1, defaultValue.length - 8) : defaultValue;
18143
+ const def = typeof defaultValue !== "undefined" ? defaultValue : null;
18144
+ out += defaultValue ? `.default(${def})` : "";
18145
+ return out;
18146
+ }
18147
+ if (lowered.startsWith("inet")) {
18148
+ let out = `${withCasing(name, casing)}: inet("${name}")`;
18149
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18150
+ return out;
18151
+ }
18152
+ if (lowered.startsWith("cidr")) {
18153
+ let out = `${withCasing(name, casing)}: cidr("${name}")`;
18154
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18155
+ return out;
18156
+ }
18157
+ if (lowered.startsWith("macaddr")) {
18158
+ let out = `${withCasing(name, casing)}: macaddr("${name}")`;
18159
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18160
+ return out;
18161
+ }
18162
+ if (lowered.startsWith("macaddr8")) {
18163
+ let out = `${withCasing(name, casing)}: macaddr8("${name}")`;
18164
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18165
+ return out;
18166
+ }
18167
+ if (lowered.startsWith("varchar")) {
18168
+ const split = lowered.split(" ");
18169
+ let out;
18170
+ if (lowered.length !== 7) {
18171
+ out = `${withCasing(
18172
+ name,
18173
+ casing
18174
+ )}: varchar("${name}", { length: ${lowered.substring(
18175
+ 8,
18176
+ lowered.length - 1
18177
+ )} })`;
18178
+ } else {
18179
+ out = `${withCasing(name, casing)}: varchar("${name}")`;
18180
+ }
18181
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18182
+ return out;
18183
+ }
18184
+ if (lowered.startsWith("char")) {
18185
+ let out;
18186
+ if (lowered.length !== 4) {
18187
+ out = `${withCasing(
18188
+ name,
18189
+ casing
18190
+ )}: char("${name}", { length: ${lowered.substring(
18191
+ 5,
18192
+ lowered.length - 1
18193
+ )} })`;
18194
+ } else {
18195
+ out = `${withCasing(name, casing)}: char("${name}")`;
18196
+ }
18197
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18198
+ return out;
18199
+ }
18200
+ const columnInternals = (_a3 = internals == null ? void 0 : internals.tables[tableName]) == null ? void 0 : _a3.columns[name];
18201
+ if (typeof columnInternals !== "undefined") {
18202
+ if (columnInternals.isArray && columnInternals.rawType && enumTypes.has(columnInternals.rawType)) {
18203
+ let out = `${withCasing(columnInternals.rawType, casing)}: ${withCasing(
18204
+ columnInternals.rawType,
18205
+ casing
18206
+ )}("${name}")`;
18207
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18208
+ return out;
18209
+ }
18210
+ }
18211
+ if (enumTypes.has(type)) {
18212
+ let out = `${withCasing(name, casing)}: ${withCasing(
18213
+ type,
18214
+ casing
18215
+ )}("${name}")`;
18216
+ out += typeof defaultValue !== "undefined" ? `.default(${defaultValue})` : "";
18217
+ return out;
18218
+ }
18219
+ let unknown = `// TODO: failed to parse database type '${type}'
18220
+ `;
18221
+ unknown += ` ${withCasing(name, casing)}: unknown("${name}")`;
18222
+ return unknown;
18223
+ };
18224
+ dimensionsInArray = (size) => {
18225
+ let res = "";
18226
+ if (typeof size === "undefined")
18227
+ return res;
18228
+ for (let i = 0; i < size; i++) {
18229
+ res += ".array()";
18230
+ }
18231
+ return res;
18232
+ };
18233
+ createTableColumns = (tableName, columns, fks, enumTypes, casing, internals) => {
18234
+ let statement = "";
18235
+ const oneColumnsFKs = Object.values(fks).filter((it) => {
18236
+ return !isSelf(it);
18237
+ }).filter((it) => it.columnsFrom.length === 1);
18238
+ const fkByColumnName = oneColumnsFKs.reduce((res, it) => {
18239
+ const arr = res[it.columnsFrom[0]] || [];
18240
+ arr.push(it);
18241
+ res[it.columnsFrom[0]] = arr;
18242
+ return res;
18243
+ }, {});
18244
+ columns.forEach((it) => {
18245
+ var _a3, _b, _c, _d;
18246
+ const columnStatement = column4(
18247
+ tableName,
18248
+ it.type,
18249
+ it.name,
18250
+ enumTypes,
18251
+ it.default,
18252
+ casing,
18253
+ internals
18254
+ );
18255
+ statement += " ";
18256
+ statement += columnStatement;
18257
+ if ((_b = (_a3 = internals == null ? void 0 : internals.tables[tableName]) == null ? void 0 : _a3.columns[it.name]) == null ? void 0 : _b.isArray) {
18258
+ statement += dimensionsInArray(
18259
+ (_d = (_c = internals == null ? void 0 : internals.tables[tableName]) == null ? void 0 : _c.columns[it.name]) == null ? void 0 : _d.dimensions
18260
+ );
18261
+ }
18262
+ statement += it.primaryKey ? ".primaryKey()" : "";
18263
+ statement += it.notNull ? ".notNull()" : "";
18264
+ const fks2 = fkByColumnName[it.name];
18265
+ if (fks2) {
18266
+ const fksStatement = fks2.map((it2) => {
18267
+ const onDelete = it2.onDelete && it2.onDelete !== "no action" ? it2.onDelete : null;
18268
+ const onUpdate = it2.onUpdate && it2.onUpdate !== "no action" ? it2.onUpdate : null;
18269
+ const params = { onDelete, onUpdate };
18270
+ const typeSuffix = isCyclic(it2) ? ": AnyPgColumn" : "";
18271
+ const paramsStr = objToStatement2(params);
18272
+ if (paramsStr) {
18273
+ return `.references(()${typeSuffix} => ${withCasing(
18274
+ it2.tableTo,
18275
+ casing
18276
+ )}.${withCasing(it2.columnsTo[0], casing)}, ${paramsStr} )`;
18277
+ }
18278
+ return `.references(()${typeSuffix} => ${withCasing(
18279
+ it2.tableTo,
18280
+ casing
18281
+ )}.${withCasing(it2.columnsTo[0], casing)})`;
18282
+ }).join("");
18283
+ statement += fksStatement;
18284
+ }
18285
+ statement += ",\n";
18286
+ });
18287
+ return statement;
18288
+ };
18289
+ createTableIndexes = (tableName, idxs, casing) => {
18290
+ let statement = "";
18291
+ idxs.forEach((it) => {
18292
+ let idxKey = it.name.startsWith(tableName) && it.name !== tableName ? it.name.slice(tableName.length + 1) : it.name;
18293
+ idxKey = idxKey.endsWith("_index") ? idxKey.slice(0, -"_index".length) + "_idx" : idxKey;
18294
+ idxKey = withCasing(idxKey, casing);
18295
+ const indexGeneratedName = indexName2(tableName, it.columns);
18296
+ const escapedIndexName = indexGeneratedName === it.name ? "" : `"${it.name}"`;
18297
+ statement += ` ${idxKey}: `;
18298
+ statement += it.isUnique ? "uniqueIndex(" : "index(";
18299
+ statement += `${escapedIndexName})`;
18300
+ statement += `.on(${it.columns.map((it2) => `table.${withCasing(it2, casing)}`).join(", ")}),`;
18301
+ statement += `
18302
+ `;
18303
+ });
18304
+ return statement;
18305
+ };
18306
+ createTablePKs = (pks, casing) => {
18307
+ let statement = "";
18308
+ pks.forEach((it) => {
18309
+ let idxKey = withCasing(it.name, casing);
18310
+ statement += ` ${idxKey}: `;
18311
+ statement += "primaryKey({ columns: [";
18312
+ statement += `${it.columns.map((c) => {
18313
+ return `table.${withCasing(c, casing)}`;
18314
+ }).join(", ")}]${it.name ? `, name: "${it.name}"` : ""}}`;
18315
+ statement += ")";
18316
+ statement += `
18317
+ `;
18318
+ });
18319
+ return statement;
18320
+ };
18321
+ createTableUniques = (unqs, casing) => {
18322
+ let statement = "";
18323
+ unqs.forEach((it) => {
18324
+ const idxKey = withCasing(it.name, casing);
18325
+ statement += ` ${idxKey}: `;
18326
+ statement += "unique(";
18327
+ statement += `"${it.name}")`;
18328
+ statement += `.on(${it.columns.map((it2) => `table.${withCasing(it2, casing)}`).join(", ")})`;
18329
+ statement += it.nullsNotDistinct ? `.nullsNotDistinct()` : "";
18330
+ statement += `,
18331
+ `;
18332
+ });
18333
+ return statement;
18334
+ };
18335
+ createTableFKs = (fks, casing) => {
18336
+ let statement = "";
18337
+ fks.forEach((it) => {
18338
+ const isSelf2 = it.tableTo === it.tableFrom;
18339
+ const tableTo = isSelf2 ? "table" : `${withCasing(it.tableTo, casing)}`;
18340
+ statement += ` ${withCasing(it.name, casing)}: foreignKey({
18341
+ `;
18342
+ statement += ` columns: [${it.columnsFrom.map((i) => `table.${withCasing(i, casing)}`).join(", ")}],
18343
+ `;
18344
+ statement += ` foreignColumns: [${it.columnsTo.map((i) => `${tableTo}.${withCasing(i, casing)}`).join(", ")}],
18345
+ `;
18346
+ statement += ` name: "${it.name}"
18347
+ `;
18348
+ statement += ` })`;
18349
+ statement += it.onUpdate && it.onUpdate !== "no action" ? `.onUpdate("${it.onUpdate}")` : "";
18350
+ statement += it.onDelete && it.onDelete !== "no action" ? `.onDelete("${it.onDelete}")` : "";
18351
+ statement += `,
18352
+ `;
18353
+ });
18354
+ return statement;
18355
+ };
17680
18356
  }
17681
18357
  });
17682
18358
 
@@ -18960,425 +19636,6 @@ var init_mjs = __esm({
18960
19636
  }
18961
19637
  });
18962
19638
 
18963
- // src/cli/commands/pgIntrospect.ts
18964
- var import_hanji4, pgPushIntrospect;
18965
- var init_pgIntrospect = __esm({
18966
- "src/cli/commands/pgIntrospect.ts"() {
18967
- import_hanji4 = __toESM(require_hanji());
18968
- init_views();
18969
- init_pgSerializer();
18970
- init_introspect();
18971
- init_global();
18972
- init_mjs();
18973
- pgPushIntrospect = async (connection, filters, schemaFilters) => {
18974
- const { client } = connection;
18975
- const matchers = filters.map((it) => {
18976
- return new Minimatch(it);
18977
- });
18978
- const filter2 = (tableName) => {
18979
- if (matchers.length === 0)
18980
- return true;
18981
- for (let i = 0; i < matchers.length; i++) {
18982
- const matcher = matchers[i];
18983
- if (matcher.match(tableName))
18984
- return true;
18985
- }
18986
- return false;
18987
- };
18988
- const res = await fromDatabase2(client, filter2, schemaFilters);
18989
- const schema4 = { id: originUUID, prevId: "", ...res };
18990
- const { internal, ...schemaWithoutInternals } = schema4;
18991
- return { schema: schemaWithoutInternals };
18992
- };
18993
- }
18994
- });
18995
-
18996
- // src/cli/selector-ui.ts
18997
- var import_hanji5, Select;
18998
- var init_selector_ui = __esm({
18999
- "src/cli/selector-ui.ts"() {
19000
- init_source();
19001
- import_hanji5 = __toESM(require_hanji());
19002
- Select = class extends import_hanji5.Prompt {
19003
- constructor(items) {
19004
- super();
19005
- this.on("attach", (terminal) => terminal.toggleCursor("hide"));
19006
- this.on("detach", (terminal) => terminal.toggleCursor("show"));
19007
- this.data = new import_hanji5.SelectState(
19008
- items.map((it) => ({ label: it, value: `${it}-value` }))
19009
- );
19010
- this.data.bind(this);
19011
- }
19012
- render(status) {
19013
- if (status === "submitted" || status === "aborted")
19014
- return "";
19015
- let text = ``;
19016
- this.data.items.forEach((it, idx) => {
19017
- text += idx === this.data.selectedIdx ? `${source_default.green("\u276F " + it.label)}` : ` ${it.label}`;
19018
- text += idx != this.data.items.length - 1 ? "\n" : "";
19019
- });
19020
- return text;
19021
- }
19022
- result() {
19023
- return {
19024
- index: this.data.selectedIdx,
19025
- value: this.data.items[this.data.selectedIdx].value
19026
- };
19027
- }
19028
- };
19029
- }
19030
- });
19031
-
19032
- // src/cli/commands/pgPushUtils.ts
19033
- function tableNameWithSchemaFrom(statement) {
19034
- return statement.schema ? `"${statement.schema}"."${statement.tableName}"` : `"${statement.tableName}"`;
19035
- }
19036
- var import_hanji6, pgSuggestions;
19037
- var init_pgPushUtils = __esm({
19038
- "src/cli/commands/pgPushUtils.ts"() {
19039
- init_source();
19040
- import_hanji6 = __toESM(require_hanji());
19041
- init_pgSchema();
19042
- init_sqlgenerator();
19043
- init_selector_ui();
19044
- pgSuggestions = async ({
19045
- connection,
19046
- statements
19047
- }) => {
19048
- let shouldAskForApprove = false;
19049
- const statementsToExecute = [];
19050
- const infoToPrint = [];
19051
- const tablesToRemove = [];
19052
- const columnsToRemove = [];
19053
- const schemasToRemove = [];
19054
- const tablesToTruncate = [];
19055
- for (const statement of statements) {
19056
- if (statement.type === "drop_table") {
19057
- const res = await connection.query(
19058
- `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
19059
- );
19060
- const count = Number(res[0].count);
19061
- if (count > 0) {
19062
- infoToPrint.push(
19063
- `\xB7 You're about to delete ${source_default.underline(
19064
- statement.tableName
19065
- )} table with ${count} items`
19066
- );
19067
- tablesToRemove.push(statement.tableName);
19068
- shouldAskForApprove = true;
19069
- }
19070
- } else if (statement.type === "alter_table_drop_column") {
19071
- const res = await connection.query(
19072
- `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
19073
- );
19074
- const count = Number(res[0].count);
19075
- if (count > 0) {
19076
- infoToPrint.push(
19077
- `\xB7 You're about to delete ${source_default.underline(
19078
- statement.columnName
19079
- )} column in ${statement.tableName} table with ${count} items`
19080
- );
19081
- columnsToRemove.push(`${statement.tableName}_${statement.columnName}`);
19082
- shouldAskForApprove = true;
19083
- }
19084
- } else if (statement.type === "drop_schema") {
19085
- const res = await connection.query(
19086
- `select count(*) as count from information_schema.tables where table_schema = '${statement.name}';`
19087
- );
19088
- const count = Number(res[0].count);
19089
- if (count > 0) {
19090
- infoToPrint.push(
19091
- `\xB7 You're about to delete ${source_default.underline(
19092
- statement.name
19093
- )} schema with ${count} tables`
19094
- );
19095
- schemasToRemove.push(statement.name);
19096
- shouldAskForApprove = true;
19097
- }
19098
- } else if (statement.type === "alter_table_alter_column_set_type") {
19099
- const res = await connection.query(
19100
- `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
19101
- );
19102
- const count = Number(res[0].count);
19103
- if (count > 0) {
19104
- infoToPrint.push(
19105
- `\xB7 You're about to change ${source_default.underline(
19106
- statement.columnName
19107
- )} column type from ${source_default.underline(
19108
- statement.oldDataType
19109
- )} to ${source_default.underline(statement.newDataType)} with ${count} items`
19110
- );
19111
- statementsToExecute.push(
19112
- `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
19113
- );
19114
- tablesToTruncate.push(statement.tableName);
19115
- shouldAskForApprove = true;
19116
- }
19117
- } else if (statement.type === "alter_table_alter_column_drop_default") {
19118
- if (statement.columnNotNull) {
19119
- const res = await connection.query(
19120
- `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
19121
- );
19122
- const count = Number(res[0].count);
19123
- if (count > 0) {
19124
- infoToPrint.push(
19125
- `\xB7 You're about to remove default value from ${source_default.underline(
19126
- statement.columnName
19127
- )} not-null column with ${count} items`
19128
- );
19129
- tablesToTruncate.push(statement.tableName);
19130
- statementsToExecute.push(
19131
- `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
19132
- );
19133
- shouldAskForApprove = true;
19134
- }
19135
- }
19136
- } else if (statement.type === "alter_table_alter_column_set_notnull") {
19137
- if (typeof statement.columnDefault === "undefined") {
19138
- const res = await connection.query(
19139
- `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
19140
- );
19141
- const count = Number(res[0].count);
19142
- if (count > 0) {
19143
- infoToPrint.push(
19144
- `\xB7 You're about to set not-null constraint to ${source_default.underline(
19145
- statement.columnName
19146
- )} column without default, which contains ${count} items`
19147
- );
19148
- tablesToTruncate.push(statement.tableName);
19149
- statementsToExecute.push(
19150
- `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
19151
- );
19152
- shouldAskForApprove = true;
19153
- }
19154
- }
19155
- } else if (statement.type === "alter_table_alter_column_drop_pk") {
19156
- const res = await connection.query(
19157
- `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
19158
- );
19159
- const count = Number(res[0].count);
19160
- if (count > 0) {
19161
- infoToPrint.push(
19162
- `\xB7 You're about to change ${source_default.underline(
19163
- statement.tableName
19164
- )} primary key. This statements may fail and you table may left without primary key`
19165
- );
19166
- tablesToTruncate.push(statement.tableName);
19167
- shouldAskForApprove = true;
19168
- }
19169
- const tableNameWithSchema = tableNameWithSchemaFrom(statement);
19170
- const pkNameResponse = await connection.query(
19171
- `SELECT constraint_name FROM information_schema.table_constraints
19172
- WHERE table_schema = '${typeof statement.schema === "undefined" || statement.schema === "" ? "public" : statement.schema}'
19173
- AND table_name = '${statement.tableName}'
19174
- AND constraint_type = 'PRIMARY KEY';`
19175
- );
19176
- statementsToExecute.push(
19177
- `ALTER TABLE ${tableNameWithSchema} DROP CONSTRAINT "${pkNameResponse[0].constraint_name}"`
19178
- );
19179
- continue;
19180
- } else if (statement.type === "alter_table_add_column") {
19181
- if (statement.column.notNull && typeof statement.column.default === "undefined") {
19182
- const res = await connection.query(
19183
- `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
19184
- );
19185
- const count = Number(res[0].count);
19186
- if (count > 0) {
19187
- infoToPrint.push(
19188
- `\xB7 You're about to add not-null ${source_default.underline(
19189
- statement.column.name
19190
- )} column without default value, which contains ${count} items`
19191
- );
19192
- tablesToTruncate.push(statement.tableName);
19193
- statementsToExecute.push(
19194
- `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
19195
- );
19196
- shouldAskForApprove = true;
19197
- }
19198
- }
19199
- } else if (statement.type === "create_unique_constraint") {
19200
- const res = await connection.query(
19201
- `select count(*) as count from ${tableNameWithSchemaFrom({
19202
- schema: statement.schema,
19203
- tableName: statement.tableName
19204
- })}`
19205
- );
19206
- const count = Number(res[0].count);
19207
- if (count > 0) {
19208
- const unsquashedUnique = PgSquasher.unsquashUnique(statement.data);
19209
- console.log(
19210
- `\xB7 You're about to add ${source_default.underline(
19211
- unsquashedUnique.name
19212
- )} unique constraint to the table, which contains ${count} items. If this statement fails, you will receive an error from the database. Do you want to truncate ${source_default.underline(
19213
- statement.tableName
19214
- )} table?
19215
- `
19216
- );
19217
- const { status, data } = await (0, import_hanji6.render)(
19218
- new Select([
19219
- "No, add the constraint without truncating the table",
19220
- `Yes, truncate the table`
19221
- ])
19222
- );
19223
- if ((data == null ? void 0 : data.index) === 1) {
19224
- tablesToTruncate.push(statement.tableName);
19225
- statementsToExecute.push(
19226
- `truncate table ${tableNameWithSchemaFrom({
19227
- schema: statement.schema,
19228
- tableName: statement.tableName
19229
- })} cascade;`
19230
- );
19231
- shouldAskForApprove = true;
19232
- }
19233
- }
19234
- }
19235
- const stmnt = fromJson([statement], "pg")[0];
19236
- if (typeof stmnt !== "undefined") {
19237
- if (statement.type === "drop_table") {
19238
- statementsToExecute.push(`DROP TABLE ${tableNameWithSchemaFrom(statement)} CASCADE;`);
19239
- } else {
19240
- statementsToExecute.push(stmnt);
19241
- }
19242
- }
19243
- }
19244
- return {
19245
- statementsToExecute,
19246
- shouldAskForApprove,
19247
- infoToPrint,
19248
- columnsToRemove: [...new Set(columnsToRemove)],
19249
- schemasToRemove: [...new Set(schemasToRemove)],
19250
- tablesToTruncate: [...new Set(tablesToTruncate)],
19251
- tablesToRemove: [...new Set(tablesToRemove)]
19252
- };
19253
- };
19254
- }
19255
- });
19256
-
19257
- // src/sqlite-introspect.ts
19258
- var init_sqlite_introspect = __esm({
19259
- "src/sqlite-introspect.ts"() {
19260
- init_utils2();
19261
- }
19262
- });
19263
-
19264
- // src/drivers/index.ts
19265
- var drivers_exports = {};
19266
- __export(drivers_exports, {
19267
- BetterSqlite: () => BetterSqlite,
19268
- DrizzleDbClient: () => DrizzleDbClient,
19269
- DrizzleORMPgClient: () => DrizzleORMPgClient,
19270
- PgPostgres: () => PgPostgres,
19271
- TursoSqlite: () => TursoSqlite
19272
- });
19273
- var import_drizzle_orm8, DrizzleDbClient, DrizzleORMPgClient, BetterSqlite, TursoSqlite, PgPostgres;
19274
- var init_drivers = __esm({
19275
- "src/drivers/index.ts"() {
19276
- import_drizzle_orm8 = require("drizzle-orm");
19277
- DrizzleDbClient = class {
19278
- constructor(db) {
19279
- this.db = db;
19280
- }
19281
- };
19282
- DrizzleORMPgClient = class extends DrizzleDbClient {
19283
- async query(query, values) {
19284
- const res = await this.db.execute(import_drizzle_orm8.sql.raw(query));
19285
- return res.rows;
19286
- }
19287
- async run(query) {
19288
- const res = await this.db.execute(import_drizzle_orm8.sql.raw(query));
19289
- return res.rows;
19290
- }
19291
- };
19292
- BetterSqlite = class extends DrizzleDbClient {
19293
- async run(query) {
19294
- this.db.prepare(query).run();
19295
- }
19296
- async query(query) {
19297
- return this.db.prepare(query).all();
19298
- }
19299
- };
19300
- TursoSqlite = class extends DrizzleDbClient {
19301
- async run(query) {
19302
- await this.db.execute(query);
19303
- }
19304
- async query(query) {
19305
- const res = await this.db.execute(query);
19306
- return res.rows;
19307
- }
19308
- };
19309
- PgPostgres = class extends DrizzleDbClient {
19310
- async query(query, values) {
19311
- const res = await this.db.query(query, values);
19312
- return res.rows;
19313
- }
19314
- async run(query) {
19315
- await this.db.query(query);
19316
- }
19317
- };
19318
- }
19319
- });
19320
-
19321
- // src/cli/commands/sqliteIntrospect.ts
19322
- var import_hanji7, connectToSQLite, sqlitePushIntrospect;
19323
- var init_sqliteIntrospect = __esm({
19324
- "src/cli/commands/sqliteIntrospect.ts"() {
19325
- init_views();
19326
- init_global();
19327
- init_sqliteSerializer();
19328
- init_sqlite_introspect();
19329
- init_mjs();
19330
- import_hanji7 = __toESM(require_hanji());
19331
- connectToSQLite = async (config) => {
19332
- const { BetterSqlite: BetterSqlite2, TursoSqlite: TursoSqlite2 } = await Promise.resolve().then(() => (init_drivers(), drivers_exports));
19333
- if (config.driver === "better-sqlite") {
19334
- const { default: Database } = await import("better-sqlite3");
19335
- return {
19336
- client: new BetterSqlite2(new Database(config.dbCredentials.url))
19337
- };
19338
- }
19339
- if (config.driver === "libsql") {
19340
- const { createClient } = await import("@libsql/client");
19341
- return {
19342
- client: new TursoSqlite2(
19343
- createClient({
19344
- url: config.dbCredentials.url
19345
- })
19346
- )
19347
- };
19348
- } else {
19349
- const { createClient } = await import("@libsql/client");
19350
- return {
19351
- client: new TursoSqlite2(
19352
- createClient({
19353
- url: config.dbCredentials.url,
19354
- authToken: config.dbCredentials.authToken
19355
- })
19356
- )
19357
- };
19358
- }
19359
- return {};
19360
- };
19361
- sqlitePushIntrospect = async (client, filters) => {
19362
- const matchers = filters.map((it) => {
19363
- return new Minimatch(it);
19364
- });
19365
- const filter2 = (tableName) => {
19366
- if (matchers.length === 0)
19367
- return true;
19368
- for (let i = 0; i < matchers.length; i++) {
19369
- const matcher = matchers[i];
19370
- if (matcher.match(tableName))
19371
- return true;
19372
- }
19373
- return false;
19374
- };
19375
- const res = await fromDatabase3(client, filter2);
19376
- const schema4 = { id: originUUID, prevId: "", ...res };
19377
- return { schema: schema4 };
19378
- };
19379
- }
19380
- });
19381
-
19382
19639
  // node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js
19383
19640
  var require_postgres_array = __commonJS({
19384
19641
  "node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js"(exports) {
@@ -23921,6 +24178,494 @@ var require_lib2 = __commonJS({
23921
24178
  }
23922
24179
  });
23923
24180
 
24181
+ // src/drivers/index.ts
24182
+ var drivers_exports = {};
24183
+ __export(drivers_exports, {
24184
+ BetterSqlite: () => BetterSqlite,
24185
+ DrizzleDbClient: () => DrizzleDbClient,
24186
+ DrizzleORMPgClient: () => DrizzleORMPgClient,
24187
+ PgPostgres: () => PgPostgres,
24188
+ TursoSqlite: () => TursoSqlite
24189
+ });
24190
+ var import_drizzle_orm8, DrizzleDbClient, DrizzleORMPgClient, BetterSqlite, TursoSqlite, PgPostgres;
24191
+ var init_drivers = __esm({
24192
+ "src/drivers/index.ts"() {
24193
+ import_drizzle_orm8 = require("drizzle-orm");
24194
+ DrizzleDbClient = class {
24195
+ constructor(db) {
24196
+ this.db = db;
24197
+ }
24198
+ };
24199
+ DrizzleORMPgClient = class extends DrizzleDbClient {
24200
+ async query(query, values) {
24201
+ const res = await this.db.execute(import_drizzle_orm8.sql.raw(query));
24202
+ return res.rows;
24203
+ }
24204
+ async run(query) {
24205
+ const res = await this.db.execute(import_drizzle_orm8.sql.raw(query));
24206
+ return res.rows;
24207
+ }
24208
+ };
24209
+ BetterSqlite = class extends DrizzleDbClient {
24210
+ async run(query) {
24211
+ this.db.prepare(query).run();
24212
+ }
24213
+ async query(query) {
24214
+ return this.db.prepare(query).all();
24215
+ }
24216
+ };
24217
+ TursoSqlite = class extends DrizzleDbClient {
24218
+ async run(query) {
24219
+ await this.db.execute(query);
24220
+ }
24221
+ async query(query) {
24222
+ const res = await this.db.execute(query);
24223
+ return res.rows;
24224
+ }
24225
+ };
24226
+ PgPostgres = class extends DrizzleDbClient {
24227
+ async query(query, values) {
24228
+ const res = await this.db.query(query, values);
24229
+ return res.rows;
24230
+ }
24231
+ async run(query) {
24232
+ await this.db.query(query);
24233
+ }
24234
+ };
24235
+ }
24236
+ });
24237
+
24238
+ // src/cli/commands/pgConnect.ts
24239
+ var pgConnect_exports = {};
24240
+ __export(pgConnect_exports, {
24241
+ connectToPg: () => connectToPg
24242
+ });
24243
+ var import_pg, connectToPg;
24244
+ var init_pgConnect = __esm({
24245
+ "src/cli/commands/pgConnect.ts"() {
24246
+ import_pg = __toESM(require_lib2());
24247
+ init_drivers();
24248
+ connectToPg = async (config) => {
24249
+ if (config.driver === "pg") {
24250
+ const client = new import_pg.Client(config.dbCredentials);
24251
+ await client.connect();
24252
+ const connection = new PgPostgres(client);
24253
+ return { client: connection };
24254
+ } else {
24255
+ throw Error(`Only "pg" is available as a driver option for introspection`);
24256
+ }
24257
+ };
24258
+ }
24259
+ });
24260
+
24261
+ // src/cli/commands/pgIntrospect.ts
24262
+ var pgIntrospect_exports = {};
24263
+ __export(pgIntrospect_exports, {
24264
+ pgIntrospect: () => pgIntrospect,
24265
+ pgPushIntrospect: () => pgPushIntrospect,
24266
+ pgSchemas: () => pgSchemas
24267
+ });
24268
+ var import_hanji4, pgSchemas, pgPushIntrospect, pgIntrospect;
24269
+ var init_pgIntrospect = __esm({
24270
+ "src/cli/commands/pgIntrospect.ts"() {
24271
+ import_hanji4 = __toESM(require_hanji());
24272
+ init_views();
24273
+ init_pgSerializer();
24274
+ init_introspect();
24275
+ init_global();
24276
+ init_mjs();
24277
+ pgSchemas = async (client) => {
24278
+ const res = await client.query(`select s.nspname as table_schema,
24279
+ s.oid as schema_id,
24280
+ u.usename as owner
24281
+ from pg_catalog.pg_namespace s
24282
+ join pg_catalog.pg_user u on u.usesysid = s.nspowner
24283
+ where nspname not in ('information_schema', 'pg_catalog')
24284
+ and nspname not like 'pg_toast%'
24285
+ and nspname not like 'pg_temp_%'
24286
+ order by table_schema;`);
24287
+ return res.map((it) => it["table_schema"]);
24288
+ };
24289
+ pgPushIntrospect = async (connection, filters, schemaFilters) => {
24290
+ const { client } = connection;
24291
+ const matchers = filters.map((it) => {
24292
+ return new Minimatch(it);
24293
+ });
24294
+ const filter2 = (tableName) => {
24295
+ if (matchers.length === 0)
24296
+ return true;
24297
+ for (let i = 0; i < matchers.length; i++) {
24298
+ const matcher = matchers[i];
24299
+ if (matcher.match(tableName))
24300
+ return true;
24301
+ }
24302
+ return false;
24303
+ };
24304
+ const res = await fromDatabase2(client, filter2, schemaFilters);
24305
+ const schema4 = { id: originUUID, prevId: "", ...res };
24306
+ const { internal, ...schemaWithoutInternals } = schema4;
24307
+ return { schema: schemaWithoutInternals };
24308
+ };
24309
+ pgIntrospect = async (config, filters, schemaFilters) => {
24310
+ const { connectToPg: connectToPg2 } = await Promise.resolve().then(() => (init_pgConnect(), pgConnect_exports));
24311
+ const pool = await connectToPg2(config);
24312
+ const matchers = filters.map((it) => {
24313
+ return new Minimatch(it);
24314
+ });
24315
+ const filter2 = (tableName) => {
24316
+ if (matchers.length === 0)
24317
+ return true;
24318
+ for (let i = 0; i < matchers.length; i++) {
24319
+ const matcher = matchers[i];
24320
+ if (matcher.match(tableName))
24321
+ return true;
24322
+ }
24323
+ return false;
24324
+ };
24325
+ const progress = new IntrospectProgress();
24326
+ const res = await (0, import_hanji4.renderWithTask)(
24327
+ progress,
24328
+ fromDatabase2(pool.client, filter2, schemaFilters, (stage, count, status) => {
24329
+ progress.update(stage, count, status);
24330
+ })
24331
+ );
24332
+ const schema4 = { id: originUUID, prevId: "", ...res };
24333
+ const ts = schemaToTypeScript(schema4, { casing: config.introspect.casing });
24334
+ const { internal, ...schemaWithoutInternals } = schema4;
24335
+ return { schema: schemaWithoutInternals, ts };
24336
+ };
24337
+ }
24338
+ });
24339
+
24340
+ // src/cli/selector-ui.ts
24341
+ var import_hanji5, Select;
24342
+ var init_selector_ui = __esm({
24343
+ "src/cli/selector-ui.ts"() {
24344
+ init_source();
24345
+ import_hanji5 = __toESM(require_hanji());
24346
+ Select = class extends import_hanji5.Prompt {
24347
+ constructor(items) {
24348
+ super();
24349
+ this.on("attach", (terminal) => terminal.toggleCursor("hide"));
24350
+ this.on("detach", (terminal) => terminal.toggleCursor("show"));
24351
+ this.data = new import_hanji5.SelectState(
24352
+ items.map((it) => ({ label: it, value: `${it}-value` }))
24353
+ );
24354
+ this.data.bind(this);
24355
+ }
24356
+ render(status) {
24357
+ if (status === "submitted" || status === "aborted")
24358
+ return "";
24359
+ let text = ``;
24360
+ this.data.items.forEach((it, idx) => {
24361
+ text += idx === this.data.selectedIdx ? `${source_default.green("\u276F " + it.label)}` : ` ${it.label}`;
24362
+ text += idx != this.data.items.length - 1 ? "\n" : "";
24363
+ });
24364
+ return text;
24365
+ }
24366
+ result() {
24367
+ return {
24368
+ index: this.data.selectedIdx,
24369
+ value: this.data.items[this.data.selectedIdx].value
24370
+ };
24371
+ }
24372
+ };
24373
+ }
24374
+ });
24375
+
24376
+ // src/cli/commands/pgPushUtils.ts
24377
+ function tableNameWithSchemaFrom(statement) {
24378
+ return statement.schema ? `"${statement.schema}"."${statement.tableName}"` : `"${statement.tableName}"`;
24379
+ }
24380
+ var import_hanji6, pgSuggestions;
24381
+ var init_pgPushUtils = __esm({
24382
+ "src/cli/commands/pgPushUtils.ts"() {
24383
+ init_source();
24384
+ import_hanji6 = __toESM(require_hanji());
24385
+ init_pgSchema();
24386
+ init_sqlgenerator();
24387
+ init_selector_ui();
24388
+ pgSuggestions = async ({
24389
+ connection,
24390
+ statements
24391
+ }) => {
24392
+ let shouldAskForApprove = false;
24393
+ const statementsToExecute = [];
24394
+ const infoToPrint = [];
24395
+ const tablesToRemove = [];
24396
+ const columnsToRemove = [];
24397
+ const schemasToRemove = [];
24398
+ const tablesToTruncate = [];
24399
+ for (const statement of statements) {
24400
+ if (statement.type === "drop_table") {
24401
+ const res = await connection.query(
24402
+ `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
24403
+ );
24404
+ const count = Number(res[0].count);
24405
+ if (count > 0) {
24406
+ infoToPrint.push(
24407
+ `\xB7 You're about to delete ${source_default.underline(
24408
+ statement.tableName
24409
+ )} table with ${count} items`
24410
+ );
24411
+ tablesToRemove.push(statement.tableName);
24412
+ shouldAskForApprove = true;
24413
+ }
24414
+ } else if (statement.type === "alter_table_drop_column") {
24415
+ const res = await connection.query(
24416
+ `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
24417
+ );
24418
+ const count = Number(res[0].count);
24419
+ if (count > 0) {
24420
+ infoToPrint.push(
24421
+ `\xB7 You're about to delete ${source_default.underline(
24422
+ statement.columnName
24423
+ )} column in ${statement.tableName} table with ${count} items`
24424
+ );
24425
+ columnsToRemove.push(`${statement.tableName}_${statement.columnName}`);
24426
+ shouldAskForApprove = true;
24427
+ }
24428
+ } else if (statement.type === "drop_schema") {
24429
+ const res = await connection.query(
24430
+ `select count(*) as count from information_schema.tables where table_schema = '${statement.name}';`
24431
+ );
24432
+ const count = Number(res[0].count);
24433
+ if (count > 0) {
24434
+ infoToPrint.push(
24435
+ `\xB7 You're about to delete ${source_default.underline(
24436
+ statement.name
24437
+ )} schema with ${count} tables`
24438
+ );
24439
+ schemasToRemove.push(statement.name);
24440
+ shouldAskForApprove = true;
24441
+ }
24442
+ } else if (statement.type === "alter_table_alter_column_set_type") {
24443
+ const res = await connection.query(
24444
+ `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
24445
+ );
24446
+ const count = Number(res[0].count);
24447
+ if (count > 0) {
24448
+ infoToPrint.push(
24449
+ `\xB7 You're about to change ${source_default.underline(
24450
+ statement.columnName
24451
+ )} column type from ${source_default.underline(
24452
+ statement.oldDataType
24453
+ )} to ${source_default.underline(statement.newDataType)} with ${count} items`
24454
+ );
24455
+ statementsToExecute.push(
24456
+ `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
24457
+ );
24458
+ tablesToTruncate.push(statement.tableName);
24459
+ shouldAskForApprove = true;
24460
+ }
24461
+ } else if (statement.type === "alter_table_alter_column_drop_default") {
24462
+ if (statement.columnNotNull) {
24463
+ const res = await connection.query(
24464
+ `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
24465
+ );
24466
+ const count = Number(res[0].count);
24467
+ if (count > 0) {
24468
+ infoToPrint.push(
24469
+ `\xB7 You're about to remove default value from ${source_default.underline(
24470
+ statement.columnName
24471
+ )} not-null column with ${count} items`
24472
+ );
24473
+ tablesToTruncate.push(statement.tableName);
24474
+ statementsToExecute.push(
24475
+ `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
24476
+ );
24477
+ shouldAskForApprove = true;
24478
+ }
24479
+ }
24480
+ } else if (statement.type === "alter_table_alter_column_set_notnull") {
24481
+ if (typeof statement.columnDefault === "undefined") {
24482
+ const res = await connection.query(
24483
+ `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
24484
+ );
24485
+ const count = Number(res[0].count);
24486
+ if (count > 0) {
24487
+ infoToPrint.push(
24488
+ `\xB7 You're about to set not-null constraint to ${source_default.underline(
24489
+ statement.columnName
24490
+ )} column without default, which contains ${count} items`
24491
+ );
24492
+ tablesToTruncate.push(statement.tableName);
24493
+ statementsToExecute.push(
24494
+ `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
24495
+ );
24496
+ shouldAskForApprove = true;
24497
+ }
24498
+ }
24499
+ } else if (statement.type === "alter_table_alter_column_drop_pk") {
24500
+ const res = await connection.query(
24501
+ `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
24502
+ );
24503
+ const count = Number(res[0].count);
24504
+ if (count > 0) {
24505
+ infoToPrint.push(
24506
+ `\xB7 You're about to change ${source_default.underline(
24507
+ statement.tableName
24508
+ )} primary key. This statements may fail and you table may left without primary key`
24509
+ );
24510
+ tablesToTruncate.push(statement.tableName);
24511
+ shouldAskForApprove = true;
24512
+ }
24513
+ const tableNameWithSchema = tableNameWithSchemaFrom(statement);
24514
+ const pkNameResponse = await connection.query(
24515
+ `SELECT constraint_name FROM information_schema.table_constraints
24516
+ WHERE table_schema = '${typeof statement.schema === "undefined" || statement.schema === "" ? "public" : statement.schema}'
24517
+ AND table_name = '${statement.tableName}'
24518
+ AND constraint_type = 'PRIMARY KEY';`
24519
+ );
24520
+ statementsToExecute.push(
24521
+ `ALTER TABLE ${tableNameWithSchema} DROP CONSTRAINT "${pkNameResponse[0].constraint_name}"`
24522
+ );
24523
+ continue;
24524
+ } else if (statement.type === "alter_table_add_column") {
24525
+ if (statement.column.notNull && typeof statement.column.default === "undefined") {
24526
+ const res = await connection.query(
24527
+ `select count(*) as count from ${tableNameWithSchemaFrom(statement)}`
24528
+ );
24529
+ const count = Number(res[0].count);
24530
+ if (count > 0) {
24531
+ infoToPrint.push(
24532
+ `\xB7 You're about to add not-null ${source_default.underline(
24533
+ statement.column.name
24534
+ )} column without default value, which contains ${count} items`
24535
+ );
24536
+ tablesToTruncate.push(statement.tableName);
24537
+ statementsToExecute.push(
24538
+ `truncate table ${tableNameWithSchemaFrom(statement)} cascade;`
24539
+ );
24540
+ shouldAskForApprove = true;
24541
+ }
24542
+ }
24543
+ } else if (statement.type === "create_unique_constraint") {
24544
+ const res = await connection.query(
24545
+ `select count(*) as count from ${tableNameWithSchemaFrom({
24546
+ schema: statement.schema,
24547
+ tableName: statement.tableName
24548
+ })}`
24549
+ );
24550
+ const count = Number(res[0].count);
24551
+ if (count > 0) {
24552
+ const unsquashedUnique = PgSquasher.unsquashUnique(statement.data);
24553
+ console.log(
24554
+ `\xB7 You're about to add ${source_default.underline(
24555
+ unsquashedUnique.name
24556
+ )} unique constraint to the table, which contains ${count} items. If this statement fails, you will receive an error from the database. Do you want to truncate ${source_default.underline(
24557
+ statement.tableName
24558
+ )} table?
24559
+ `
24560
+ );
24561
+ const { status, data } = await (0, import_hanji6.render)(
24562
+ new Select([
24563
+ "No, add the constraint without truncating the table",
24564
+ `Yes, truncate the table`
24565
+ ])
24566
+ );
24567
+ if ((data == null ? void 0 : data.index) === 1) {
24568
+ tablesToTruncate.push(statement.tableName);
24569
+ statementsToExecute.push(
24570
+ `truncate table ${tableNameWithSchemaFrom({
24571
+ schema: statement.schema,
24572
+ tableName: statement.tableName
24573
+ })} cascade;`
24574
+ );
24575
+ shouldAskForApprove = true;
24576
+ }
24577
+ }
24578
+ }
24579
+ const stmnt = fromJson([statement], "pg")[0];
24580
+ if (typeof stmnt !== "undefined") {
24581
+ if (statement.type === "drop_table") {
24582
+ statementsToExecute.push(`DROP TABLE ${tableNameWithSchemaFrom(statement)} CASCADE;`);
24583
+ } else {
24584
+ statementsToExecute.push(stmnt);
24585
+ }
24586
+ }
24587
+ }
24588
+ return {
24589
+ statementsToExecute,
24590
+ shouldAskForApprove,
24591
+ infoToPrint,
24592
+ columnsToRemove: [...new Set(columnsToRemove)],
24593
+ schemasToRemove: [...new Set(schemasToRemove)],
24594
+ tablesToTruncate: [...new Set(tablesToTruncate)],
24595
+ tablesToRemove: [...new Set(tablesToRemove)]
24596
+ };
24597
+ };
24598
+ }
24599
+ });
24600
+
24601
+ // src/sqlite-introspect.ts
24602
+ var init_sqlite_introspect = __esm({
24603
+ "src/sqlite-introspect.ts"() {
24604
+ init_utils2();
24605
+ }
24606
+ });
24607
+
24608
+ // src/cli/commands/sqliteIntrospect.ts
24609
+ var import_hanji7, connectToSQLite, sqlitePushIntrospect;
24610
+ var init_sqliteIntrospect = __esm({
24611
+ "src/cli/commands/sqliteIntrospect.ts"() {
24612
+ init_views();
24613
+ init_global();
24614
+ init_sqliteSerializer();
24615
+ init_sqlite_introspect();
24616
+ init_mjs();
24617
+ import_hanji7 = __toESM(require_hanji());
24618
+ connectToSQLite = async (config) => {
24619
+ const { BetterSqlite: BetterSqlite2, TursoSqlite: TursoSqlite2 } = await Promise.resolve().then(() => (init_drivers(), drivers_exports));
24620
+ if (config.driver === "better-sqlite") {
24621
+ const { default: Database } = await import("better-sqlite3");
24622
+ return {
24623
+ client: new BetterSqlite2(new Database(config.dbCredentials.url))
24624
+ };
24625
+ }
24626
+ if (config.driver === "libsql") {
24627
+ const { createClient } = await import("@libsql/client");
24628
+ return {
24629
+ client: new TursoSqlite2(
24630
+ createClient({
24631
+ url: config.dbCredentials.url
24632
+ })
24633
+ )
24634
+ };
24635
+ } else {
24636
+ const { createClient } = await import("@libsql/client");
24637
+ return {
24638
+ client: new TursoSqlite2(
24639
+ createClient({
24640
+ url: config.dbCredentials.url,
24641
+ authToken: config.dbCredentials.authToken
24642
+ })
24643
+ )
24644
+ };
24645
+ }
24646
+ return {};
24647
+ };
24648
+ sqlitePushIntrospect = async (client, filters) => {
24649
+ const matchers = filters.map((it) => {
24650
+ return new Minimatch(it);
24651
+ });
24652
+ const filter2 = (tableName) => {
24653
+ if (matchers.length === 0)
24654
+ return true;
24655
+ for (let i = 0; i < matchers.length; i++) {
24656
+ const matcher = matchers[i];
24657
+ if (matcher.match(tableName))
24658
+ return true;
24659
+ }
24660
+ return false;
24661
+ };
24662
+ const res = await fromDatabase3(client, filter2);
24663
+ const schema4 = { id: originUUID, prevId: "", ...res };
24664
+ return { schema: schema4 };
24665
+ };
24666
+ }
24667
+ });
24668
+
23924
24669
  // node_modules/.pnpm/sqlstring@2.3.3/node_modules/sqlstring/lib/SqlString.js
23925
24670
  var require_SqlString = __commonJS({
23926
24671
  "node_modules/.pnpm/sqlstring@2.3.3/node_modules/sqlstring/lib/SqlString.js"(exports) {
@@ -33547,30 +34292,30 @@ var require_column_definition = __commonJS({
33547
34292
  decimals: this.decimals
33548
34293
  };
33549
34294
  }
33550
- static toPacket(column4, sequenceId) {
34295
+ static toPacket(column5, sequenceId) {
33551
34296
  let length = 17;
33552
34297
  fields.forEach((field) => {
33553
34298
  length += Packet.lengthCodedStringLength(
33554
- column4[field],
33555
- CharsetToEncoding[column4.characterSet]
34299
+ column5[field],
34300
+ CharsetToEncoding[column5.characterSet]
33556
34301
  );
33557
34302
  });
33558
34303
  const buffer = Buffer.allocUnsafe(length);
33559
34304
  const packet = new Packet(sequenceId, buffer, 0, length);
33560
34305
  function writeField(name) {
33561
34306
  packet.writeLengthCodedString(
33562
- column4[name],
33563
- CharsetToEncoding[column4.characterSet]
34307
+ column5[name],
34308
+ CharsetToEncoding[column5.characterSet]
33564
34309
  );
33565
34310
  }
33566
34311
  packet.offset = 4;
33567
34312
  fields.forEach(writeField);
33568
34313
  packet.writeInt8(12);
33569
- packet.writeInt16(column4.characterSet);
33570
- packet.writeInt32(column4.columnLength);
33571
- packet.writeInt8(column4.columnType);
33572
- packet.writeInt16(column4.flags);
33573
- packet.writeInt8(column4.decimals);
34314
+ packet.writeInt16(column5.characterSet);
34315
+ packet.writeInt32(column5.columnLength);
34316
+ packet.writeInt8(column5.columnType);
34317
+ packet.writeInt16(column5.flags);
34318
+ packet.writeInt8(column5.decimals);
33574
34319
  packet.writeInt16(0);
33575
34320
  return packet;
33576
34321
  }
@@ -39246,25 +39991,25 @@ var require_connection2 = __commonJS({
39246
39991
  // ===================================
39247
39992
  writeColumns(columns) {
39248
39993
  this.writePacket(Packets.ResultSetHeader.toPacket(columns.length));
39249
- columns.forEach((column4) => {
39994
+ columns.forEach((column5) => {
39250
39995
  this.writePacket(
39251
- Packets.ColumnDefinition.toPacket(column4, this.serverConfig.encoding)
39996
+ Packets.ColumnDefinition.toPacket(column5, this.serverConfig.encoding)
39252
39997
  );
39253
39998
  });
39254
39999
  this.writeEof();
39255
40000
  }
39256
40001
  // row is array of columns, not hash
39257
- writeTextRow(column4) {
40002
+ writeTextRow(column5) {
39258
40003
  this.writePacket(
39259
- Packets.TextRow.toPacket(column4, this.serverConfig.encoding)
40004
+ Packets.TextRow.toPacket(column5, this.serverConfig.encoding)
39260
40005
  );
39261
40006
  }
39262
40007
  writeTextResult(rows, columns) {
39263
40008
  this.writeColumns(columns);
39264
40009
  rows.forEach((row) => {
39265
40010
  const arrayRow = new Array(columns.length);
39266
- columns.forEach((column4) => {
39267
- arrayRow.push(row[column4.name]);
40011
+ columns.forEach((column5) => {
40012
+ arrayRow.push(row[column5.name]);
39268
40013
  });
39269
40014
  this.writeTextRow(arrayRow);
39270
40015
  });
@@ -55960,14 +56705,11 @@ var init_studioUtils = __esm({
55960
56705
  import_sqlite_core5 = require("drizzle-orm/sqlite-core");
55961
56706
  init_utils();
55962
56707
  init_serializer();
55963
- drizzleDb = async (drizzleConfig, models, logger) => {
56708
+ drizzleDb = async (drizzleConfig, models, logger, pgClient) => {
55964
56709
  if (drizzleConfig.driver === "pg") {
55965
56710
  const { drizzle: drizzle2 } = await import("drizzle-orm/node-postgres");
55966
- const { Pool, types } = await Promise.resolve().then(() => __toESM(require_lib2()));
55967
- const client = new Pool({ ...drizzleConfig.dbCredentials, max: 1 });
55968
- types.setTypeParser(types.builtins.INTERVAL, (val) => val);
55969
56711
  return {
55970
- db: drizzle2(client, { logger }),
56712
+ db: drizzle2(pgClient, { logger }),
55971
56713
  type: "pg",
55972
56714
  schema: models.pgSchema
55973
56715
  };
@@ -56026,25 +56768,6 @@ var init_studioUtils = __esm({
56026
56768
  }
56027
56769
  });
56028
56770
 
56029
- // src/cli/commands/pgConnect.ts
56030
- var import_pg, connectToPg;
56031
- var init_pgConnect = __esm({
56032
- "src/cli/commands/pgConnect.ts"() {
56033
- import_pg = __toESM(require_lib2());
56034
- init_drivers();
56035
- connectToPg = async (config) => {
56036
- if (config.driver === "pg") {
56037
- const client = new import_pg.Client(config.dbCredentials);
56038
- await client.connect();
56039
- const connection = new PgPostgres(client);
56040
- return { client: connection };
56041
- } else {
56042
- throw Error(`Only "pg" is available as a driver option for introspection`);
56043
- }
56044
- };
56045
- }
56046
- });
56047
-
56048
56771
  // src/utils.ts
56049
56772
  var utils_exports = {};
56050
56773
  __export(utils_exports, {
@@ -56264,8 +56987,8 @@ var init_utils4 = __esm({
56264
56987
  const out = it.schema ? `"${it.schema}"."${it.name}"` : `"${it.name}"`;
56265
56988
  return out;
56266
56989
  };
56267
- columnRenameKey = (table4, schema4, column4) => {
56268
- const out = schema4 ? `"${schema4}"."${table4}"."${column4}"` : `"${table4}"."${column4}"`;
56990
+ columnRenameKey = (table4, schema4, column5) => {
56991
+ const out = schema4 ? `"${schema4}"."${table4}"."${column5}"` : `"${table4}"."${column5}"`;
56269
56992
  return out;
56270
56993
  };
56271
56994
  kloudMeta = () => {
@@ -56412,20 +57135,40 @@ var init_utils4 = __esm({
56412
57135
  []
56413
57136
  );
56414
57137
  const models = toDrizzle2(schema4);
56415
- return await drizzleDb(connection, { sqliteSchema: models }, false);
57138
+ const drizzleDbInstance = await drizzleDb(
57139
+ connection,
57140
+ { sqliteSchema: models },
57141
+ false
57142
+ );
57143
+ return { public: drizzleDbInstance };
56416
57144
  } else if (connection.driver === "pg") {
56417
57145
  const preparedConnection = await connectToPg({
56418
57146
  driver: connection.driver,
56419
57147
  // @ts-ignore I don't know how to fix it yet. But will find a way
56420
57148
  dbCredentials: connection.dbCredentials
56421
57149
  });
56422
- const { schema: schema4 } = await pgPushIntrospect(
56423
- { client: preparedConnection.client },
56424
- [],
56425
- []
56426
- );
56427
- const models = toDrizzle(schema4);
56428
- return await drizzleDb(connection, { pgSchema: models }, false);
57150
+ const { pgSchemas: pgSchemas2, pgPushIntrospect: pgPushIntrospect2 } = await Promise.resolve().then(() => (init_pgIntrospect(), pgIntrospect_exports));
57151
+ const schemas = await pgSchemas2(preparedConnection.client);
57152
+ const response = {};
57153
+ const { Pool, types } = await Promise.resolve().then(() => __toESM(require_lib2()));
57154
+ const client = new Pool({ ...connection.dbCredentials, max: 1 });
57155
+ types.setTypeParser(types.builtins.INTERVAL, (val) => val);
57156
+ for (const schemaName of schemas) {
57157
+ const { schema: schema4 } = await pgPushIntrospect2(
57158
+ { client: preparedConnection.client },
57159
+ [],
57160
+ [schemaName]
57161
+ );
57162
+ const models = toDrizzle(schema4, schemaName);
57163
+ response[schemaName] = await drizzleDb(
57164
+ // @ts-ignore I don't know how to fix it yet. But will find a way
57165
+ connection,
57166
+ { pgSchema: models },
57167
+ false,
57168
+ client
57169
+ );
57170
+ }
57171
+ return response;
56429
57172
  }
56430
57173
  throw Error("Only sqlite and pg is supported for now");
56431
57174
  };