| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/seaside2.pacim.de/web/database/migrations/ |
Upload File : |
-- 027: AIDA-Buchungs-Importer.
--
-- Erweitert bookings um:
-- - source : Quellsystem ("AIDA", "Parken-am-Schiff.de", …) — separat von customers.source,
-- damit Buchungen unabhängig vom Kunden-Datensatz nach Quelle gefiltert werden können.
-- - external_uid : SHA1 über fachliche Felder, stabil bei AIDA-Updates → primäre Wiedererkennung.
-- - content_hash : SHA1 über veränderliche Felder → erkennt, ob Re-Import die Daten ändert.
-- - import_run_id : Referenz auf den Import-Lauf (audit/debug, optional FK).
--
-- UNIQUE (source, external_uid) garantiert, dass derselbe AIDA-Datensatz nicht zweimal importiert wird.
-- NULL-Werte (Bestandsbuchungen ohne external_uid) sind erlaubt, weil MySQL bei UNIQUE-Indizes NULL ≠ NULL behandelt.
--
-- import_runs: ein Datensatz pro Cruise+Datei-Lauf, mit Summary als JSON.
ALTER TABLE `bookings`
ADD COLUMN `source` VARCHAR(50) DEFAULT NULL AFTER `status`,
ADD COLUMN `external_uid` VARCHAR(64) DEFAULT NULL AFTER `source`,
ADD COLUMN `content_hash` VARCHAR(64) DEFAULT NULL AFTER `external_uid`,
ADD COLUMN `import_run_id` INT UNSIGNED DEFAULT NULL AFTER `content_hash`,
ADD UNIQUE KEY `ux_bookings_source_external_uid` (`source`, `external_uid`),
ADD KEY `idx_bookings_import_run` (`import_run_id`),
ADD KEY `idx_bookings_source` (`source`);
CREATE TABLE IF NOT EXISTS `import_runs` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`source` VARCHAR(50) NOT NULL,
`cruise` VARCHAR(32) DEFAULT NULL,
`event_id` INT UNSIGNED DEFAULT NULL,
`ship_name` VARCHAR(191) DEFAULT NULL,
`travel_from` VARCHAR(10) DEFAULT NULL,
`travel_to` VARCHAR(10) DEFAULT NULL,
`filename` VARCHAR(255) DEFAULT NULL,
`imported_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`status` VARCHAR(50) NOT NULL DEFAULT 'running',
`summary` JSON DEFAULT NULL,
KEY `idx_source_event` (`source`, `event_id`),
KEY `idx_imported_at` (`imported_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;