소스 검색

fix: trying to fix the messages error on frontend

EduLascala 1 주 전
부모
커밋
2550db8342
3개의 변경된 파일65개의 추가작업 그리고 19개의 파일을 삭제
  1. 58 15
      bin/setup
  2. 1 1
      models/InteractionDetailsModel.php
  3. 6 3
      models/InteractionsModel.php

+ 58 - 15
bin/setup

@@ -1,11 +1,12 @@
 #!/usr/bin/env bash
 
 set -euo pipefail
+shopt -s nullglob
 
 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
 ENV_FILE="$PROJECT_ROOT/.env"
-MIGRATION_FILE="$PROJECT_ROOT/migrations/migrations_v1.sql"
+MIGRATIONS_DIR="$PROJECT_ROOT/migrations"
 
 # Carrega as variáveis de ambiente do arquivo .env se ele existir
 if [[ -f "$ENV_FILE" ]]; then
@@ -36,25 +37,67 @@ fi
 # Exporta a senha temporariamente para o psql não pedir interativamente
 export PGPASSWORD="$DB_PASSWORD"
 
-echo "Conectando ao PostgreSQL para recriar o banco '$DB_NAME'..."
+MIGRATION_FILES=("$MIGRATIONS_DIR"/*.sql)
 
-# Conecta ao banco padrão 'postgres' para conseguir derrubar e recriar o seu banco
-psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=postgres" -v ON_ERROR_STOP=1 <<SQL
--- Derruba conexões ativas para evitar o erro de "database is being accessed by other users"
-SELECT pg_terminate_backend(pid)
-FROM pg_stat_activity
-WHERE datname = '$DB_NAME'
-  AND pid <> pg_backend_pid();
+if [[ ${#MIGRATION_FILES[@]} -eq 0 ]]; then
+    echo "Erro: nenhuma migration .sql encontrada em $MIGRATIONS_DIR."
+    exit 1
+fi
+
+echo "Verificando se o banco '$DB_NAME' existe..."
 
-DROP DATABASE IF EXISTS "$DB_NAME";
-CREATE DATABASE "$DB_NAME" OWNER "$DB_USER";
+DB_EXISTS="$(psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=postgres" -tAc "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'")"
+
+if [[ "$DB_EXISTS" != "1" ]]; then
+    echo "Banco '$DB_NAME' não existe. Criando..."
+    psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=postgres" -v ON_ERROR_STOP=1 -c "CREATE DATABASE \"$DB_NAME\" OWNER \"$DB_USER\""
+else
+    echo "Banco '$DB_NAME' já existe. Preservando dados existentes."
+fi
+
+echo "Garantindo tabela de controle de migrações..."
+
+psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=$DB_NAME" -v ON_ERROR_STOP=1 <<SQL
+CREATE TABLE IF NOT EXISTS schema_migrations (
+    migration_name TEXT PRIMARY KEY,
+    applied_at TIMESTAMP NOT NULL DEFAULT NOW()
+);
+
+INSERT INTO schema_migrations (migration_name)
+SELECT 'migrations_v1.sql'
+WHERE EXISTS (
+    SELECT 1
+    FROM information_schema.tables
+    WHERE table_schema = 'public'
+      AND table_name = 'company'
+)
+AND EXISTS (
+    SELECT 1
+    FROM information_schema.tables
+    WHERE table_schema = 'public'
+      AND table_name = 'integration'
+)
+AND NOT EXISTS (
+    SELECT 1
+    FROM schema_migrations
+    WHERE migration_name = 'migrations_v1.sql'
+);
 SQL
 
-echo "Aplicando as migrações do arquivo: $(basename "$MIGRATION_FILE")..."
+for migration_file in "${MIGRATION_FILES[@]}"; do
+    migration_name="$(basename "$migration_file")"
+    already_applied="$(psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=$DB_NAME" -tAc "SELECT 1 FROM schema_migrations WHERE migration_name = '$migration_name'")"
+
+    if [[ "$already_applied" == "1" ]]; then
+        echo "Pulando $migration_name (já aplicada)."
+        continue
+    fi
 
-# Conecta diretamente no banco novo e roda o arquivo de SQL
-psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=$DB_NAME" -v ON_ERROR_STOP=1 -f "$MIGRATION_FILE"
+    echo "Aplicando migração: $migration_name..."
+    psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=$DB_NAME" -v ON_ERROR_STOP=1 -f "$migration_file"
+    psql "host=$DB_HOST port=$DB_PORT user=$DB_USER dbname=$DB_NAME" -v ON_ERROR_STOP=1 -c "INSERT INTO schema_migrations (migration_name) VALUES ('$migration_name')"
+done
 
 echo "--------------------------------------------------------"
-echo "Banco de dados '$DB_NAME' recriado com sucesso e migration aplicada!"
+echo "Banco de dados '$DB_NAME' preservado e migrações aplicadas com sucesso!"
 echo "--------------------------------------------------------"

+ 1 - 1
models/InteractionDetailsModel.php

@@ -61,7 +61,7 @@ class InteractionDetailsModel
             INNER JOIN client cl
                 ON cl.client_id = c.client_id
                AND cl.client_deleted_at = 'infinity'
-            INNER JOIN operator o
+            LEFT JOIN operator o
                 ON o.operator_id = c.operator_id
                AND o.operator_deleted_at = 'infinity'
             LEFT JOIN conversation_analysis ca

+ 6 - 3
models/InteractionsModel.php

@@ -89,7 +89,6 @@ class InteractionsModel
             "c.company_id = :company_id",
             "c.conversation_deleted_at = 'infinity'",
             "cl.client_deleted_at = 'infinity'",
-            "o.operator_deleted_at = 'infinity'",
         ];
         $params = ['company_id' => $companyId];
 
@@ -133,7 +132,9 @@ class InteractionsModel
             "SELECT COUNT(*)
             FROM conversation c
             INNER JOIN client cl ON cl.client_id = c.client_id
-            INNER JOIN operator o ON o.operator_id = c.operator_id
+            LEFT JOIN operator o
+                ON o.operator_id = c.operator_id
+               AND o.operator_deleted_at = 'infinity'
             LEFT JOIN conversation_analysis ca
                 ON ca.conversation_id = c.conversation_id
                AND ca.conversation_analysis_deleted_at = 'infinity'
@@ -162,7 +163,9 @@ class InteractionsModel
                 c.conversation_last_message_at
             FROM conversation c
             INNER JOIN client cl ON cl.client_id = c.client_id
-            INNER JOIN operator o ON o.operator_id = c.operator_id
+            LEFT JOIN operator o
+                ON o.operator_id = c.operator_id
+               AND o.operator_deleted_at = 'infinity'
             LEFT JOIN conversation_analysis ca
                 ON ca.conversation_id = c.conversation_id
                AND ca.conversation_analysis_deleted_at = 'infinity'