diff --git a/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php b/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php index baee939..8a10504 100755 --- a/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php +++ b/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php @@ -13,44 +13,44 @@ public function up(): void // Approccio alternativo: modificare la colonna per avere un valore di default // e creare una stored procedure per generare il codice - // Prima, creiamo una stored procedure per generare il codice univoco - if (DB::connection()->getDriverName() !== 'sqlite') { + // Prima, creiamo una stored procedure per generare il codice univoco solo su MySQL + if (DB::connection()->getDriverName() === 'mysql') { DB::unprepared('DROP PROCEDURE IF EXISTS generate_codice_univoco'); - } - - try { - DB::unprepared(' - CREATE PROCEDURE generate_codice_univoco(IN table_name VARCHAR(50), OUT codice VARCHAR(8)) - BEGIN - DECLARE codice_temp VARCHAR(8); - DECLARE codice_exists INT DEFAULT 1; - - WHILE codice_exists > 0 DO - SET codice_temp = CONCAT( - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), - SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1) - ); - - IF table_name = "amministratori" THEN - SELECT COUNT(*) INTO codice_exists FROM amministratori WHERE codice_univoco = codice_temp; - ELSEIF table_name = "users" THEN - SELECT COUNT(*) INTO codice_exists FROM users WHERE codice_univoco = codice_temp; - END IF; - END WHILE; - - SET codice = codice_temp; - END - '); - echo "Stored procedure creata con successo.\n"; - } catch (\Exception $e) { - echo "Errore nella creazione della stored procedure: " . $e->getMessage() . "\n"; + try { + DB::unprepared(' + CREATE PROCEDURE generate_codice_univoco(IN table_name VARCHAR(50), OUT codice VARCHAR(8)) + BEGIN + DECLARE codice_temp VARCHAR(8); + DECLARE codice_exists INT DEFAULT 1; + + WHILE codice_exists > 0 DO + SET codice_temp = CONCAT( + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1), + SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1) + ); + + IF table_name = "amministratori" THEN + SELECT COUNT(*) INTO codice_exists FROM amministratori WHERE codice_univoco = codice_temp; + ELSEIF table_name = "users" THEN + SELECT COUNT(*) INTO codice_exists FROM users WHERE codice_univoco = codice_temp; + END IF; + END WHILE; + + SET codice = codice_temp; + END + '); + + echo "Stored procedure creata con successo.\n"; + } catch (\Exception $e) { + echo "Errore nella creazione della stored procedure: " . $e->getMessage() . "\n"; + } } // Aggiornare i record esistenti che non hanno codice_univoco diff --git a/docker/Dockerfile.prod b/docker/Dockerfile.prod index f816d00..8cd37a6 100755 --- a/docker/Dockerfile.prod +++ b/docker/Dockerfile.prod @@ -11,6 +11,8 @@ RUN apt-get update && apt-get install -y \ libxml2-dev \ libzip-dev \ libicu-dev \ + libpq-dev \ + postgresql-client \ default-mysql-client \ mdbtools \ nodejs \ @@ -18,7 +20,7 @@ RUN apt-get update && apt-get install -y \ && apt-get clean && rm -rf /var/lib/apt/lists/* # PHP extensions -RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd intl zip +RUN docker-php-ext-install pdo_mysql pdo_pgsql pgsql mbstring exif pcntl bcmath gd intl zip # Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index e7eb0db..8b5d088 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -35,8 +35,14 @@ rm -f \ if [[ "${WAIT_FOR_DB:-true}" == "true" ]] && [[ -n "${DB_HOST:-}" ]]; then for i in {1..30}; do - if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT:-3306}" -u "${DB_USERNAME:-root}" -p"${DB_PASSWORD:-}" --silent; then - break + if [[ "${DB_CONNECTION:-mysql}" == "pgsql" ]]; then + if pg_isready -h "${DB_HOST}" -p "${DB_PORT:-5432}" -U "${DB_USERNAME:-postgres}" >/dev/null 2>&1; then + break + fi + else + if mysqladmin ping -h "${DB_HOST}" -P "${DB_PORT:-3306}" -u "${DB_USERNAME:-root}" -p"${DB_PASSWORD:-}" --silent; then + break + fi fi sleep 2 done