Browse Source

Correcao do script importaEmpresa para poder rodar sem que interrupções. Além de tratamento de erros em querys.

dev
Matheo Bonucia 9 months ago committed by Gitea
parent
commit
0c0108843e
  1. 88
      asterisk/var_lib_asterisk/scripts/manutencaoDB/importaEmpresa.php

88
asterisk/var_lib_asterisk/scripts/manutencaoDB/importaEmpresa.php

@ -46,27 +46,26 @@ try {
/* /*
* Cria a coluna org_id em todas as tabelas. * Cria a coluna org_id em todas as tabelas.
*/ */
//CriaCampo($dbcon); CriaCampo($dbcon);
/* /*
* Cria as empresas padrao. * Cria as empresas padrao.
*/ */
//CriaOrgPadrao($dbcon); CriaOrgPadrao($dbcon);
importIdTables($dbcon); importIdTables($dbcon);
//corrigeDadosFila($dbcon); corrigeDadosFila($dbcon);
/* /*
* Apaga todas as fk. * Apaga todas as fk.
*/ */
// ApagaFK(); ApagaFK($dbcon);
/* /*
* Modifica todas as chaves primarias. * Modifica todas as chaves primarias.
*/ */
// ModificaPK(); ModificaPK($dbcon);
/* /*
* Modifica os indices. * Modifica os indices.
*/ */
//ModificaIdx($dbcon); ModificaIdx($dbcon);
echo "Script finalizado com sucesso!\n"; echo "Script finalizado com sucesso!\n";
@ -81,23 +80,21 @@ function CriaCampo($dbcon)
AND table_type = 'BASE TABLE' AND table_type = 'BASE TABLE'
AND NOT EXISTS(SELECT '' FROM information_schema.columns WHERE table_name = a.table_name AND column_name = 'org_id');"; AND NOT EXISTS(SELECT '' FROM information_schema.columns WHERE table_name = a.table_name AND column_name = 'org_id');";
if (!$result = pg_query($dbcon, $query)) { $result = pg_query($dbcon, $query);
if (!$result) {
throw new Exception("Não foi possivel carregar a lista de tabelas."); throw new Exception("Não foi possivel carregar a lista de tabelas.");
} }
$tables = pg_fetch_all($result);
$tables = pg_fetch_all($resultTables);
$except = ['pbx_organizacao', 'pbx_organizacao_usuarios', 'pbx_usuarios', 'pbx_municipios']; $except = ['pbx_organizacao', 'pbx_organizacao_usuarios', 'pbx_usuarios', 'pbx_municipios'];
foreach ($tables as $table) { foreach ($tables as $table) {
if (in_array($table["table_name"], $except)) { if (in_array($table["table_name"], $except)) {
continue; continue;
} }
$query = "DO $$ $query = "DO $$
BEGIN BEGIN
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = '{$table["table_name"]}' AND column_name = 'org_id') THEN IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = '{$table["table_name"]}' AND column_name = 'org_id') THEN
ALTER TABLE {$table["table_name"]} DROP COLUMN IF EXISTS org_id; ALTER TABLE {$table["table_name"]} DROP COLUMN IF EXISTS org_id;
END IF; END IF;
END $$;"; END $$;";
$query .= sprintf("alter table %s add org_id int not null default 0;", $table["table_name"]); $query .= sprintf("alter table %s add org_id int not null default 0;", $table["table_name"]);
@ -222,16 +219,45 @@ function ModificaPK($dbcon)
} }
$tables = pg_fetch_all($result); $tables = pg_fetch_all($result);
foreach ($tables as $table) { // foreach ($tables as $table) {
// Remove a pk // // Remove a pk
$query = sprintf("ALTER TABLE \"%s\" DROP CONSTRAINT \"%s\";", $table["table_name"], $table["constraint_name"]); // $query = sprintf("ALTER TABLE \"%s\" DROP CONSTRAINT \"%s\";", $table["table_name"], $table["constraint_name"]);
if (!$result = pg_query($dbcon, $query)) { // if (!$result = pg_query($dbcon, $query)) {
throw new Exception(sprintf("Não foi remover a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"])); // throw new Exception(sprintf("Não foi remover a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"]));
} // }
// Recria a pk // // Recria a pk
$query = sprintf("ALTER TABLE \"%s\" ADD CONSTRAINT \"%s\" PRIMARY KEY (%s,org_id);", $table["table_name"], $table["constraint_name"], $table["key_columns"]); // $query = sprintf("ALTER TABLE \"%s\" ADD CONSTRAINT \"%s\" PRIMARY KEY (%s,org_id);", $table["table_name"], $table["constraint_name"], $table["key_columns"]);
if (!$result = pg_query($dbcon, $query)) { // if (!$result = pg_query($dbcon, $query)) {
throw new Exception(sprintf("Não foi criar a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"])); // throw new Exception(sprintf("Não foi criar a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"]));
// }
// }
foreach ($tables as $table) {
// Verifica se a tabela é pbx_organizacao_usuarios
//Quando uma tabela for pbx_organizacao_usuarios, o org_id será id_organizacao;
if ($table["table_name"] != "pbx_organizacao_usuarios") {
// Remove a pk
$query = sprintf("ALTER TABLE \"%s\" DROP CONSTRAINT \"%s\";", $table["table_name"], $table["constraint_name"]);
if (!$result = pg_query($dbcon, $query)) {
throw new Exception(sprintf("Não foi possível remover a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"]));
}
// Recria a pk
$query = sprintf("ALTER TABLE \"%s\" ADD CONSTRAINT \"%s\" PRIMARY KEY (%s, org_id);", $table["table_name"], $table["constraint_name"], $table["key_columns"]);
if (!$result = pg_query($dbcon, $query)) {
throw new Exception(sprintf("Não foi possível criar a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"]));
}
}else{
$query = sprintf("ALTER TABLE \"%s\" DROP CONSTRAINT \"%s\";", $table["table_name"], $table["constraint_name"]);
if (!$result = pg_query($dbcon, $query)) {
throw new Exception(sprintf("Não foi possível remover a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"]));
}
// Recria a pk
$query = sprintf("ALTER TABLE \"%s\" ADD CONSTRAINT \"%s\" PRIMARY KEY (%s, id_organizacao);", $table["table_name"], $table["constraint_name"], $table["key_columns"]);
if (!$result = pg_query($dbcon, $query)) {
throw new Exception(sprintf("Não foi possível criar a constraint \"%s\" da tabela \"%s\"", $table["constraint_name"], $table["table_name"]));
}
} }
} }
} }

Loading…
Cancel
Save