fix(migrations): support pgsql dialect in 2025_12_22_1200* update and constraint drop
This commit is contained in:
parent
ecd2da5688
commit
d8416d897b
|
|
@ -28,12 +28,22 @@ public function up(): void
|
|||
// Nota: per conti con iban NULL non è possibile discriminare senza un id.
|
||||
try {
|
||||
if (Schema::hasTable('dati_bancari')) {
|
||||
DB::statement(
|
||||
"UPDATE contabilita_movimenti_banca m " .
|
||||
"JOIN dati_bancari d ON d.stabile_id = m.stabile_id AND d.iban IS NOT NULL AND d.iban != '' AND d.iban = m.iban " .
|
||||
"SET m.conto_id = d.id " .
|
||||
"WHERE m.conto_id IS NULL AND m.iban IS NOT NULL AND m.iban != ''"
|
||||
);
|
||||
if (DB::connection()->getDriverName() === 'mysql') {
|
||||
DB::statement(
|
||||
"UPDATE contabilita_movimenti_banca m " .
|
||||
"JOIN dati_bancari d ON d.stabile_id = m.stabile_id AND d.iban IS NOT NULL AND d.iban != '' AND d.iban = m.iban " .
|
||||
"SET m.conto_id = d.id " .
|
||||
"WHERE m.conto_id IS NULL AND m.iban IS NOT NULL AND m.iban != ''"
|
||||
);
|
||||
} elseif (DB::connection()->getDriverName() === 'pgsql') {
|
||||
DB::statement(
|
||||
"UPDATE contabilita_movimenti_banca m " .
|
||||
"SET conto_id = d.id " .
|
||||
"FROM dati_bancari d " .
|
||||
"WHERE d.stabile_id = m.stabile_id AND d.iban IS NOT NULL AND d.iban != '' AND d.iban = m.iban " .
|
||||
"AND m.conto_id IS NULL AND m.iban IS NOT NULL AND m.iban != ''"
|
||||
);
|
||||
}
|
||||
}
|
||||
} catch (Throwable) {
|
||||
// best-effort
|
||||
|
|
|
|||
|
|
@ -27,12 +27,22 @@ public function up(): void
|
|||
// Backfill: collega saldi esistenti al conto (dati_bancari) per IBAN.
|
||||
try {
|
||||
if (Schema::hasTable('dati_bancari')) {
|
||||
DB::statement(
|
||||
"UPDATE contabilita_saldi_conti s " .
|
||||
"JOIN dati_bancari d ON d.stabile_id = s.stabile_id AND d.iban IS NOT NULL AND d.iban != '' AND d.iban = s.iban " .
|
||||
"SET s.conto_id = d.id " .
|
||||
"WHERE s.conto_id IS NULL AND s.iban IS NOT NULL AND s.iban != ''"
|
||||
);
|
||||
if (DB::connection()->getDriverName() === 'mysql') {
|
||||
DB::statement(
|
||||
"UPDATE contabilita_saldi_conti s " .
|
||||
"JOIN dati_bancari d ON d.stabile_id = s.stabile_id AND d.iban IS NOT NULL AND d.iban != '' AND d.iban = s.iban " .
|
||||
"SET s.conto_id = d.id " .
|
||||
"WHERE s.conto_id IS NULL AND s.iban IS NOT NULL AND s.iban != ''"
|
||||
);
|
||||
} elseif (DB::connection()->getDriverName() === 'pgsql') {
|
||||
DB::statement(
|
||||
"UPDATE contabilita_saldi_conti s " .
|
||||
"SET conto_id = d.id " .
|
||||
"FROM dati_bancari d " .
|
||||
"WHERE d.stabile_id = s.stabile_id AND d.iban IS NOT NULL AND d.iban != '' AND d.iban = s.iban " .
|
||||
"AND s.conto_id IS NULL AND s.iban IS NOT NULL AND s.iban != ''"
|
||||
);
|
||||
}
|
||||
}
|
||||
} catch (Throwable) {
|
||||
// best-effort
|
||||
|
|
@ -41,16 +51,17 @@ public function up(): void
|
|||
// Indici legacy: unique(stabile_id, iban, data_saldo) non permette più casse con iban NULL.
|
||||
// Passiamo a unique(stabile_id, conto_id, data_saldo) (più coerente con la UI per singolo conto).
|
||||
try {
|
||||
Schema::table('contabilita_saldi_conti', function (Blueprint $table) {
|
||||
$table->dropUnique(['stabile_id', 'iban', 'data_saldo']);
|
||||
});
|
||||
} catch (Throwable) {
|
||||
// ignore
|
||||
}
|
||||
try {
|
||||
Schema::table('contabilita_saldi_conti', function (Blueprint $table) {
|
||||
$table->dropIndex(['stabile_id', 'iban', 'data_saldo']);
|
||||
});
|
||||
if (DB::connection()->getDriverName() === 'pgsql') {
|
||||
DB::statement('ALTER TABLE "contabilita_saldi_conti" DROP CONSTRAINT IF EXISTS "contabilita_saldi_conti_stabile_id_iban_data_saldo_unique"');
|
||||
DB::statement('DROP INDEX IF EXISTS "contabilita_saldi_conti_stabile_id_iban_data_saldo_index"');
|
||||
} else {
|
||||
Schema::table('contabilita_saldi_conti', function (Blueprint $table) {
|
||||
$table->dropUnique(['stabile_id', 'iban', 'data_saldo']);
|
||||
});
|
||||
Schema::table('contabilita_saldi_conti', function (Blueprint $table) {
|
||||
$table->dropIndex(['stabile_id', 'iban', 'data_saldo']);
|
||||
});
|
||||
}
|
||||
} catch (Throwable) {
|
||||
// ignore
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user