bun-query-builder 0.2.17 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/cli.js CHANGED
@@ -18210,7 +18210,42 @@ class MySQLDriver {
18210
18210
  sql += ` ON DELETE ${onDelete.toUpperCase()}`;
18211
18211
  if (onUpdate)
18212
18212
  sql += ` ON UPDATE ${onUpdate.toUpperCase()}`;
18213
- return `${sql};`;
18213
+ return `${this.dropForeignKeysOn(tableName, columnName)}
18214
+ ${sql};`;
18215
+ }
18216
+ dropForeignKeysOn(tableName, columnName) {
18217
+ const table = this.quoteLiteral(tableName);
18218
+ const column = this.quoteLiteral(columnName);
18219
+ return `SET @drop_fks := (
18220
+ SELECT CONCAT(
18221
+ 'ALTER TABLE \`', ${table}, '\` DROP FOREIGN KEY \`',
18222
+ GROUP_CONCAT(kcu.CONSTRAINT_NAME SEPARATOR '\`, DROP FOREIGN KEY \`'),
18223
+ '\`'
18224
+ )
18225
+ FROM information_schema.KEY_COLUMN_USAGE kcu
18226
+ WHERE kcu.TABLE_SCHEMA = DATABASE()
18227
+ AND kcu.TABLE_NAME = ${table}
18228
+ AND kcu.COLUMN_NAME = ${column}
18229
+ AND kcu.REFERENCED_TABLE_NAME IS NOT NULL
18230
+ AND kcu.CONSTRAINT_NAME IN (
18231
+ SELECT single.CONSTRAINT_NAME FROM (
18232
+ SELECT inner_kcu.CONSTRAINT_NAME
18233
+ FROM information_schema.KEY_COLUMN_USAGE inner_kcu
18234
+ WHERE inner_kcu.TABLE_SCHEMA = DATABASE()
18235
+ AND inner_kcu.TABLE_NAME = ${table}
18236
+ AND inner_kcu.REFERENCED_TABLE_NAME IS NOT NULL
18237
+ GROUP BY inner_kcu.CONSTRAINT_NAME
18238
+ HAVING COUNT(*) = 1
18239
+ ) AS single
18240
+ )
18241
+ );
18242
+ SET @drop_fks := IFNULL(@drop_fks, 'SELECT 1');
18243
+ PREPARE drop_fks_stmt FROM @drop_fks;
18244
+ EXECUTE drop_fks_stmt;
18245
+ DEALLOCATE PREPARE drop_fks_stmt;`;
18246
+ }
18247
+ quoteLiteral(value) {
18248
+ return `'${value.replace(/'/g, "''")}'`;
18214
18249
  }
18215
18250
  addColumn(tableName, column) {
18216
18251
  const typeSql = this.getColumnType(column);
@@ -18400,7 +18435,34 @@ class PostgresDriver {
18400
18435
  sql += ` ON DELETE ${onDelete.toUpperCase()}`;
18401
18436
  if (onUpdate)
18402
18437
  sql += ` ON UPDATE ${onUpdate.toUpperCase()}`;
18403
- return `${sql};`;
18438
+ return `${this.dropForeignKeysOn(tableName, columnName)}
18439
+ ${sql};`;
18440
+ }
18441
+ dropForeignKeysOn(tableName, columnName) {
18442
+ const table = this.quoteLiteral(tableName);
18443
+ const column = this.quoteLiteral(columnName);
18444
+ return `DO $$
18445
+ DECLARE existing_name text;
18446
+ BEGIN
18447
+ FOR existing_name IN
18448
+ SELECT con.conname
18449
+ FROM pg_constraint con
18450
+ JOIN pg_class rel ON rel.oid = con.conrelid
18451
+ JOIN pg_namespace nsp ON nsp.oid = rel.relnamespace
18452
+ WHERE con.contype = 'f'
18453
+ AND rel.relname = ${table}
18454
+ AND nsp.nspname = current_schema()
18455
+ AND con.conkey = ARRAY[(
18456
+ SELECT att.attnum FROM pg_attribute att
18457
+ WHERE att.attrelid = rel.oid AND att.attname = ${column} AND att.attnum > 0
18458
+ )]::smallint[]
18459
+ LOOP
18460
+ EXECUTE format('ALTER TABLE %I DROP CONSTRAINT %I', ${table}, existing_name);
18461
+ END LOOP;
18462
+ END $$;`;
18463
+ }
18464
+ quoteLiteral(value) {
18465
+ return `'${value.replace(/'/g, "''")}'`;
18404
18466
  }
18405
18467
  addColumn(tableName, column) {
18406
18468
  const typeSql = this.getColumnType(column);
@@ -31565,7 +31627,7 @@ function getPrefix() {
31565
31627
  }
31566
31628
  var prefix = getPrefix();
31567
31629
  // package.json
31568
- var version2 = "0.2.17";
31630
+ var version2 = "0.2.18";
31569
31631
 
31570
31632
  // bin/cli.ts
31571
31633
  init_actions();
package/dist/src/index.js CHANGED
@@ -18209,7 +18209,42 @@ class MySQLDriver {
18209
18209
  sql += ` ON DELETE ${onDelete.toUpperCase()}`;
18210
18210
  if (onUpdate)
18211
18211
  sql += ` ON UPDATE ${onUpdate.toUpperCase()}`;
18212
- return `${sql};`;
18212
+ return `${this.dropForeignKeysOn(tableName, columnName)}
18213
+ ${sql};`;
18214
+ }
18215
+ dropForeignKeysOn(tableName, columnName) {
18216
+ const table = this.quoteLiteral(tableName);
18217
+ const column = this.quoteLiteral(columnName);
18218
+ return `SET @drop_fks := (
18219
+ SELECT CONCAT(
18220
+ 'ALTER TABLE \`', ${table}, '\` DROP FOREIGN KEY \`',
18221
+ GROUP_CONCAT(kcu.CONSTRAINT_NAME SEPARATOR '\`, DROP FOREIGN KEY \`'),
18222
+ '\`'
18223
+ )
18224
+ FROM information_schema.KEY_COLUMN_USAGE kcu
18225
+ WHERE kcu.TABLE_SCHEMA = DATABASE()
18226
+ AND kcu.TABLE_NAME = ${table}
18227
+ AND kcu.COLUMN_NAME = ${column}
18228
+ AND kcu.REFERENCED_TABLE_NAME IS NOT NULL
18229
+ AND kcu.CONSTRAINT_NAME IN (
18230
+ SELECT single.CONSTRAINT_NAME FROM (
18231
+ SELECT inner_kcu.CONSTRAINT_NAME
18232
+ FROM information_schema.KEY_COLUMN_USAGE inner_kcu
18233
+ WHERE inner_kcu.TABLE_SCHEMA = DATABASE()
18234
+ AND inner_kcu.TABLE_NAME = ${table}
18235
+ AND inner_kcu.REFERENCED_TABLE_NAME IS NOT NULL
18236
+ GROUP BY inner_kcu.CONSTRAINT_NAME
18237
+ HAVING COUNT(*) = 1
18238
+ ) AS single
18239
+ )
18240
+ );
18241
+ SET @drop_fks := IFNULL(@drop_fks, 'SELECT 1');
18242
+ PREPARE drop_fks_stmt FROM @drop_fks;
18243
+ EXECUTE drop_fks_stmt;
18244
+ DEALLOCATE PREPARE drop_fks_stmt;`;
18245
+ }
18246
+ quoteLiteral(value) {
18247
+ return `'${value.replace(/'/g, "''")}'`;
18213
18248
  }
18214
18249
  addColumn(tableName, column) {
18215
18250
  const typeSql = this.getColumnType(column);
@@ -18399,7 +18434,34 @@ class PostgresDriver {
18399
18434
  sql += ` ON DELETE ${onDelete.toUpperCase()}`;
18400
18435
  if (onUpdate)
18401
18436
  sql += ` ON UPDATE ${onUpdate.toUpperCase()}`;
18402
- return `${sql};`;
18437
+ return `${this.dropForeignKeysOn(tableName, columnName)}
18438
+ ${sql};`;
18439
+ }
18440
+ dropForeignKeysOn(tableName, columnName) {
18441
+ const table = this.quoteLiteral(tableName);
18442
+ const column = this.quoteLiteral(columnName);
18443
+ return `DO $$
18444
+ DECLARE existing_name text;
18445
+ BEGIN
18446
+ FOR existing_name IN
18447
+ SELECT con.conname
18448
+ FROM pg_constraint con
18449
+ JOIN pg_class rel ON rel.oid = con.conrelid
18450
+ JOIN pg_namespace nsp ON nsp.oid = rel.relnamespace
18451
+ WHERE con.contype = 'f'
18452
+ AND rel.relname = ${table}
18453
+ AND nsp.nspname = current_schema()
18454
+ AND con.conkey = ARRAY[(
18455
+ SELECT att.attnum FROM pg_attribute att
18456
+ WHERE att.attrelid = rel.oid AND att.attname = ${column} AND att.attnum > 0
18457
+ )]::smallint[]
18458
+ LOOP
18459
+ EXECUTE format('ALTER TABLE %I DROP CONSTRAINT %I', ${table}, existing_name);
18460
+ END LOOP;
18461
+ END $$;`;
18462
+ }
18463
+ quoteLiteral(value) {
18464
+ return `'${value.replace(/'/g, "''")}'`;
18403
18465
  }
18404
18466
  addColumn(tableName, column) {
18405
18467
  const typeSql = this.getColumnType(column);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bun-query-builder",
3
3
  "type": "module",
4
- "version": "0.2.17",
4
+ "version": "0.2.18",
5
5
  "description": "A simple yet performant query builder for TypeScript. Built with Bun.",
6
6
  "author": "Chris Breuer <chris@stacksjs.org>",
7
7
  "license": "MIT",