diff --git a/CLAUDE.md b/CLAUDE.md index 653cd91a..916db0a1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -108,33 +108,41 @@ Other database rules: - Create migrations in dependency order: foundation first, then dependent tables - Always add composite indexes as documented in the design document (section 3.5) -### Schema dumps (opt-in fast path) +### Schema dumps (CI fast path) -Laravel supports `database/schema/{driver}-schema.sql` as a fast-path -baseline that `migrate:fresh` loads in one statement instead of replaying -every migration. For Crewli's backfill / migration tests (which call -`migrate:fresh` per test), this can yield a meaningful speedup — -**when the host has the `mysql` and `mysqldump` CLI tools available.** +Laravel uses `database/schema/{driver}-schema.sql` as a fast-path +baseline that `migrate:fresh` loads in one statement (~1s) instead of +replaying every migration (~6s × N migrations). For Crewli's backfill +/ migration tests that call `migrate:fresh` per test, this drops the +4 backfill-test classes from ~128s to ~28s combined (78% reduction). -Workflow: +The dump is **committed** at `api/database/schema/mysql-schema.sql` +and is the default code path. CI loads it automatically via +`migrate:fresh`. -1. Install MySQL client tools on host (one-time): - ```bash - brew install mysql-client - echo 'export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"' >> ~/.zshrc - ``` -2. Bring `crewli_test` to head: `DB_DATABASE=crewli_test php artisan migrate --force` -3. Generate the dump: `make schema-dump` -4. Commit `api/database/schema/mysql-schema.sql` alongside any new migrations. +**One-time host setup** (required for both generating and loading +the dump): -The schema dump is **NOT committed by default** because Laravel's -auto-load path shells out to the `mysql` CLI; on hosts without it, -the presence of the dump file actively breaks `migrate` / `migrate:fresh` -(load fails, exit 127). Treat the dump as opt-in per dev environment. +```bash +brew install mysql-client +echo 'export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"' >> ~/.zshrc +source ~/.zshrc +``` -`make schema-dump` runs `mysqldump` inside the `bm_mysql` Docker -container, so contributors don't need `mysqldump` on the host to -**generate** the dump — only to **load** it via Laravel's auto-detection. +Verify with `which mysql && which mysqldump`. Both must resolve to a +real binary; Laravel's `schema:dump` and `migrate:fresh` schema-load +both shell out to these. + +**After adding a new migration:** + +```bash +make schema-dump +git add api/database/schema/mysql-schema.sql +``` + +`make schema-dump` brings `crewli_test` to head and runs +`php artisan schema:dump`. Commit the regenerated file in the same +PR as the migration. `--prune` is NOT used: individual migration files stay readable in `api/database/migrations/` for audit / rollback purposes. diff --git a/Makefile b/Makefile index cf5641aa..587ae267 100644 --- a/Makefile +++ b/Makefile @@ -83,22 +83,16 @@ test-db-create: test: test-db-create @cd api && php artisan test -# Regenerate api/database/schema/mysql-schema.sql from the current -# crewli_test schema. Runs mysqldump INSIDE the bm_mysql Docker -# container, so contributors don't need mysqldump on the host. +# Regenerate api/database/schema/mysql-schema.sql via Laravel's native +# `schema:dump` command. Brings crewli_test to head first so the dump +# always reflects the latest migration set. Requires mysql-client on +# host PATH (see CLAUDE.md "Schema dumps (CI fast path)"). # -# Workflow: this target dumps WHATEVER state crewli_test is currently -# in. Run `make test-db-create` (creates DB), then put it at the desired -# state — typically by running the test suite, which migrates the test -# DB to head — then `make schema-dump`. -# -# See CLAUDE.md "Schema dumps" — commit the regenerated dump alongside -# any new migrations so CI / fast-path migrate:fresh stays in sync. -schema-dump: - @echo "$(GREEN)Regenerating api/database/schema/mysql-schema.sql from current crewli_test state...$(NC)" - @docker exec bm_mysql mysqldump --no-tablespaces --skip-add-locks --skip-comments --skip-set-charset --tz-utc -u root -proot crewli_test --routines --no-data 2>/dev/null > /tmp/crewli-schema-structure.sql - @docker exec bm_mysql mysqldump --no-tablespaces --skip-add-locks --skip-comments --skip-set-charset --tz-utc -u root -proot crewli_test migrations --no-create-info 2>/dev/null > /tmp/crewli-schema-migrations.sql - @cat /tmp/crewli-schema-structure.sql /tmp/crewli-schema-migrations.sql > api/database/schema/mysql-schema.sql - @rm /tmp/crewli-schema-structure.sql /tmp/crewli-schema-migrations.sql - @echo "$(GREEN)✓ api/database/schema/mysql-schema.sql updated$(NC)" +# After adding a new migration: run `make schema-dump` and commit the +# regenerated dump alongside the migration. +schema-dump: test-db-create + @echo "$(GREEN)Migrating crewli_test to head...$(NC)" + @cd api && DB_DATABASE=crewli_test php artisan migrate --force --quiet + @echo "$(GREEN)Regenerating api/database/schema/mysql-schema.sql...$(NC)" + @cd api && DB_DATABASE=crewli_test php artisan schema:dump --database=mysql @echo "$(YELLOW)Note: Commit the updated schema dump alongside any new migrations.$(NC)" diff --git a/api/database/schema/.gitignore b/api/database/schema/.gitignore deleted file mode 100644 index ff95feae..00000000 --- a/api/database/schema/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Schema dumps are environment-specific and require mysql CLI on host -# for Laravel's auto-load. NOT committed by default. See CLAUDE.md -# "Schema dumps (opt-in fast path)". -mysql-schema.sql diff --git a/api/database/schema/mysql-schema.sql b/api/database/schema/mysql-schema.sql new file mode 100644 index 00000000..880f203c --- /dev/null +++ b/api/database/schema/mysql-schema.sql @@ -0,0 +1,1749 @@ +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +DROP TABLE IF EXISTS `activity_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `activity_log` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `log_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `subject_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `subject_id` varchar(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `event` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `causer_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `causer_id` varchar(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `attribute_changes` json DEFAULT NULL, + `properties` json DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `subject` (`subject_type`,`subject_id`), + KEY `causer` (`causer_type`,`causer_id`), + KEY `activity_log_log_name_index` (`log_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `advance_sections`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `advance_sections` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `artist_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `type` enum('guest_list','contacts','production','custom') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `is_open` tinyint(1) NOT NULL DEFAULT '0', + `open_from` datetime DEFAULT NULL, + `open_to` datetime DEFAULT NULL, + `sort_order` int unsigned NOT NULL DEFAULT '0', + `submission_status` enum('open','pending','submitted','approved','declined') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'open', + `last_submitted_at` timestamp NULL DEFAULT NULL, + `last_submitted_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `submission_diff` json DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `advance_sections_artist_id_is_open_index` (`artist_id`,`is_open`), + KEY `advance_sections_artist_id_submission_status_index` (`artist_id`,`submission_status`), + CONSTRAINT `advance_sections_artist_id_foreign` FOREIGN KEY (`artist_id`) REFERENCES `artists` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `artists`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `artists` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `booking_status` enum('concept','requested','option','confirmed','contracted','cancelled') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'concept', + `star_rating` tinyint NOT NULL DEFAULT '1', + `project_leader_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `milestone_offer_in` tinyint(1) NOT NULL DEFAULT '0', + `milestone_offer_agreed` tinyint(1) NOT NULL DEFAULT '0', + `milestone_confirmed` tinyint(1) NOT NULL DEFAULT '0', + `milestone_announced` tinyint(1) NOT NULL DEFAULT '0', + `milestone_schedule_confirmed` tinyint(1) NOT NULL DEFAULT '0', + `milestone_itinerary_sent` tinyint(1) NOT NULL DEFAULT '0', + `milestone_advance_sent` tinyint(1) NOT NULL DEFAULT '0', + `milestone_advance_received` tinyint(1) NOT NULL DEFAULT '0', + `advance_open_from` datetime DEFAULT NULL, + `advance_open_to` datetime DEFAULT NULL, + `show_advance_share_page` tinyint(1) NOT NULL DEFAULT '1', + `portal_token` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `artists_portal_token_unique` (`portal_token`), + KEY `artists_project_leader_id_foreign` (`project_leader_id`), + KEY `artists_event_id_index` (`event_id`), + CONSTRAINT `artists_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE, + CONSTRAINT `artists_project_leader_id_foreign` FOREIGN KEY (`project_leader_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `cache`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `cache` ( + `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `value` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `expiration` int NOT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `cache_locks`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `cache_locks` ( + `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `expiration` int NOT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `companies`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `companies` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `type` enum('supplier','partner','agency','venue','other') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `contact_first_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `contact_last_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `contact_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `contact_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `companies_organisation_id_index` (`organisation_id`), + CONSTRAINT `companies_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `crowd_list_persons`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `crowd_list_persons` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `crowd_list_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `added_at` timestamp NOT NULL, + `added_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `crowd_list_persons_crowd_list_id_person_id_unique` (`crowd_list_id`,`person_id`), + KEY `crowd_list_persons_added_by_user_id_foreign` (`added_by_user_id`), + KEY `crowd_list_persons_person_id_index` (`person_id`), + CONSTRAINT `crowd_list_persons_added_by_user_id_foreign` FOREIGN KEY (`added_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `crowd_list_persons_crowd_list_id_foreign` FOREIGN KEY (`crowd_list_id`) REFERENCES `crowd_lists` (`id`) ON DELETE CASCADE, + CONSTRAINT `crowd_list_persons_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `crowd_lists`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `crowd_lists` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `crowd_type_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `type` enum('internal','external') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `recipient_company_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `auto_approve` tinyint(1) NOT NULL DEFAULT '0', + `max_persons` int unsigned DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `crowd_lists_crowd_type_id_foreign` (`crowd_type_id`), + KEY `crowd_lists_recipient_company_id_foreign` (`recipient_company_id`), + KEY `crowd_lists_event_id_type_index` (`event_id`,`type`), + CONSTRAINT `crowd_lists_crowd_type_id_foreign` FOREIGN KEY (`crowd_type_id`) REFERENCES `crowd_types` (`id`) ON DELETE CASCADE, + CONSTRAINT `crowd_lists_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE, + CONSTRAINT `crowd_lists_recipient_company_id_foreign` FOREIGN KEY (`recipient_company_id`) REFERENCES `companies` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `crowd_types`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `crowd_types` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `system_type` enum('CREW','GUEST','ARTIST','VOLUNTEER','PRESS','PARTNER','SUPPLIER') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `color` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '#6366f1', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_active` tinyint(1) NOT NULL DEFAULT '1', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `crowd_types_organisation_id_system_type_index` (`organisation_id`,`system_type`), + CONSTRAINT `crowd_types_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `email_change_requests`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `email_change_requests` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `current_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `new_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `requested_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending', + `expires_at` timestamp NOT NULL, + `verified_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `email_change_requests_requested_by_user_id_foreign` (`requested_by_user_id`), + KEY `email_change_requests_user_id_status_index` (`user_id`,`status`), + KEY `email_change_requests_token_index` (`token`), + CONSTRAINT `email_change_requests_requested_by_user_id_foreign` FOREIGN KEY (`requested_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `email_change_requests_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `email_logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `email_logs` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `recipient_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `recipient_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `mailable_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `template_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'queued', + `error_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `queued_at` timestamp NOT NULL, + `sent_at` timestamp NULL DEFAULT NULL, + `failed_at` timestamp NULL DEFAULT NULL, + `triggered_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `email_logs_organisation_id_created_at_index` (`organisation_id`,`created_at`), + KEY `email_logs_recipient_email_created_at_index` (`recipient_email`,`created_at`), + KEY `email_logs_template_type_status_index` (`template_type`,`status`), + KEY `email_logs_event_id_index` (`event_id`), + KEY `email_logs_person_id_index` (`person_id`), + CONSTRAINT `email_logs_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE SET NULL, + CONSTRAINT `email_logs_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `event_person_activations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `event_person_activations` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `event_person_activations_event_id_person_id_unique` (`event_id`,`person_id`), + KEY `event_person_activations_person_id_index` (`person_id`), + KEY `event_person_activations_event_id_index` (`event_id`), + CONSTRAINT `event_person_activations_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE, + CONSTRAINT `event_person_activations_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `event_user_roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `event_user_roles` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `event_user_roles_user_id_event_id_role_unique` (`user_id`,`event_id`,`role`), + KEY `event_user_roles_event_id_foreign` (`event_id`), + CONSTRAINT `event_user_roles_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE, + CONSTRAINT `event_user_roles_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `events`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `events` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `parent_event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `start_date` date NOT NULL, + `end_date` date NOT NULL, + `timezone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Europe/Amsterdam', + `status` enum('draft','published','registration_open','buildup','showday','teardown','closed') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'draft', + `event_type` enum('event','festival','series') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'event', + `event_type_label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `sub_event_label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_recurring` tinyint(1) NOT NULL DEFAULT '0', + `recurrence_rule` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `recurrence_exceptions` json DEFAULT NULL, + `registration_banner_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `registration_welcome_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `registration_logo_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `registration_show_section_preferences` tinyint(1) NOT NULL DEFAULT '1', + `registration_show_availability` tinyint(1) NOT NULL DEFAULT '1', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `events_organisation_id_slug_unique` (`organisation_id`,`slug`), + KEY `events_organisation_id_status_index` (`organisation_id`,`status`), + KEY `events_parent_event_id_index` (`parent_event_id`), + CONSTRAINT `events_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE, + CONSTRAINT `events_parent_event_id_foreign` FOREIGN KEY (`parent_event_id`) REFERENCES `events` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `failed_jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `failed_jobs` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `uuid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `connection` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `festival_sections`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `festival_sections` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `type` enum('standard','cross_event') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'standard', + `crew_need` int unsigned DEFAULT NULL, + `sort_order` int unsigned NOT NULL DEFAULT '0', + `crew_auto_accepts` tinyint(1) NOT NULL DEFAULT '0', + `crew_invited_to_events` tinyint(1) NOT NULL DEFAULT '0', + `added_to_timeline` tinyint(1) NOT NULL DEFAULT '0', + `responder_self_checkin` tinyint(1) NOT NULL DEFAULT '1', + `crew_accreditation_level` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `public_form_accreditation_level` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `timed_accreditations` tinyint(1) NOT NULL DEFAULT '0', + `show_in_registration` tinyint(1) NOT NULL DEFAULT '0', + `registration_description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `festival_sections_event_id_sort_order_index` (`event_id`,`sort_order`), + KEY `festival_sections_event_id_category_index` (`event_id`,`category`), + CONSTRAINT `festival_sections_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_field_bindings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_field_bindings` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `target_entity` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `target_attribute` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `mode` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `sync_direction` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `merge_strategy` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'overwrite', + `trust_level` tinyint unsigned NOT NULL DEFAULT '50', + `is_identity_key` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ffb_owner_target_unique` (`owner_type`,`owner_id`,`target_entity`,`target_attribute`), + KEY `ffb_target_idx` (`target_entity`,`target_attribute`), + KEY `ffb_owner_idx` (`owner_type`,`owner_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_field_conditional_logic_conditions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_field_conditional_logic_conditions` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `group_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `field_slug` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `comparison_operator` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `value` json DEFAULT NULL, + `sort_order` int unsigned NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `ffclc_group_sort_idx` (`group_id`,`sort_order`), + KEY `ffclc_field_slug_idx` (`field_slug`), + CONSTRAINT `form_field_conditional_logic_conditions_group_id_foreign` FOREIGN KEY (`group_id`) REFERENCES `form_field_conditional_logic_groups` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_field_conditional_logic_groups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_field_conditional_logic_groups` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_field_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `parent_group_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `operator` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `sort_order` int unsigned NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `ffclg_field_idx` (`form_field_id`), + KEY `ffclg_parent_sort_idx` (`parent_group_id`,`sort_order`), + CONSTRAINT `form_field_conditional_logic_groups_form_field_id_foreign` FOREIGN KEY (`form_field_id`) REFERENCES `form_fields` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_field_conditional_logic_groups_parent_group_id_foreign` FOREIGN KEY (`parent_group_id`) REFERENCES `form_field_conditional_logic_groups` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_field_configs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_field_configs` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `config_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `parameters` json NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ffc_owner_config_unique` (`owner_type`,`owner_id`,`config_type`), + KEY `ffc_config_idx` (`config_type`), + KEY `ffc_owner_idx` (`owner_type`,`owner_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_field_library`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_field_library` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `field_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `help_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `default_is_required` tinyint(1) NOT NULL DEFAULT '0', + `default_is_filterable` tinyint(1) NOT NULL DEFAULT '0', + `translations` json DEFAULT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `usage_count` int unsigned NOT NULL DEFAULT '0', + `is_system` tinyint(1) NOT NULL DEFAULT '0', + `is_active` tinyint(1) NOT NULL DEFAULT '1', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ffl_org_slug_unique` (`organisation_id`,`slug`), + KEY `ffl_org_type_idx` (`organisation_id`,`field_type`), + KEY `ffl_org_active_idx` (`organisation_id`,`is_active`), + CONSTRAINT `form_field_library_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_field_options`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_field_options` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `sort_order` int unsigned NOT NULL DEFAULT '0', + `translations` json DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ffo_owner_value_unique` (`owner_type`,`owner_id`,`value`), + KEY `ffo_owner_sort_idx` (`owner_type`,`owner_id`,`sort_order`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_field_validation_rules`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_field_validation_rules` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `rule_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `parameters` json NOT NULL, + `error_message_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ffvr_owner_rule_unique` (`owner_type`,`owner_id`,`rule_type`), + KEY `ffvr_rule_idx` (`rule_type`), + KEY `ffvr_owner_idx` (`owner_type`,`owner_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_fields`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_fields` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_schema_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_schema_section_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `library_field_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `field_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `help_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `section` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_required` tinyint(1) NOT NULL DEFAULT '0', + `is_filterable` tinyint(1) NOT NULL DEFAULT '0', + `is_portal_visible` tinyint(1) NOT NULL DEFAULT '1', + `is_admin_only` tinyint(1) NOT NULL DEFAULT '0', + `is_unique` tinyint(1) NOT NULL DEFAULT '0', + `is_pii` tinyint(1) NOT NULL DEFAULT '0', + `display_width` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'full', + `role_restrictions` json DEFAULT NULL, + `translations` json DEFAULT NULL, + `value_storage_hint` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'json', + `review_required` tinyint(1) NOT NULL DEFAULT '0', + `sort_order` int unsigned NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `form_fields_form_schema_section_id_foreign` (`form_schema_section_id`), + KEY `ff_schema_order_idx` (`form_schema_id`,`sort_order`), + KEY `ff_schema_filterable_idx` (`form_schema_id`,`is_filterable`), + KEY `ff_library_idx` (`library_field_id`), + KEY `ff_schema_slug_idx` (`form_schema_id`,`slug`), + CONSTRAINT `form_fields_form_schema_id_foreign` FOREIGN KEY (`form_schema_id`) REFERENCES `form_schemas` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_fields_form_schema_section_id_foreign` FOREIGN KEY (`form_schema_section_id`) REFERENCES `form_schema_sections` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_fields_library_field_id_foreign` FOREIGN KEY (`library_field_id`) REFERENCES `form_field_library` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_schema_sections`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_schema_sections` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_schema_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `sort_order` int unsigned NOT NULL DEFAULT '0', + `submit_independent` tinyint(1) NOT NULL DEFAULT '1', + `depends_on_section_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `required_for_schema_submit` tinyint(1) NOT NULL DEFAULT '1', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `fss_schema_slug_unique` (`form_schema_id`,`slug`), + KEY `form_schema_sections_depends_on_section_id_foreign` (`depends_on_section_id`), + KEY `fss_schema_order_idx` (`form_schema_id`,`sort_order`), + CONSTRAINT `form_schema_sections_depends_on_section_id_foreign` FOREIGN KEY (`depends_on_section_id`) REFERENCES `form_schema_sections` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_schema_sections_form_schema_id_foreign` FOREIGN KEY (`form_schema_id`) REFERENCES `form_schemas` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_schema_webhooks`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_schema_webhooks` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_schema_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `trigger_event` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `url` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `secret` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `is_active` tinyint(1) NOT NULL DEFAULT '1', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `fsw_schema_active_idx` (`form_schema_id`,`is_active`), + CONSTRAINT `form_schema_webhooks_form_schema_id_foreign` FOREIGN KEY (`form_schema_id`) REFERENCES `form_schemas` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_schemas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_schemas` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `owner_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `owner_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `purpose` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `default_crowd_type_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `is_published` tinyint(1) NOT NULL DEFAULT '0', + `submission_mode` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `public_token` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `public_token_previous` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `public_token_rotated_at` timestamp NULL DEFAULT NULL, + `submission_deadline` timestamp NULL DEFAULT NULL, + `locale` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'nl', + `settings` json DEFAULT NULL, + `version` int unsigned NOT NULL DEFAULT '1', + `snapshot_mode` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'never', + `freeze_on_submit` tinyint(1) NOT NULL DEFAULT '0', + `retention_days` int unsigned DEFAULT NULL, + `consent_version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `section_level_submit` tinyint(1) NOT NULL DEFAULT '0', + `auto_save_enabled` tinyint(1) NOT NULL DEFAULT '0', + `max_submissions` int unsigned DEFAULT NULL, + `created_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `last_updated_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `edit_lock_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `edit_lock_expires_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `fs_org_slug_unique` (`organisation_id`,`slug`), + KEY `form_schemas_created_by_user_id_foreign` (`created_by_user_id`), + KEY `form_schemas_last_updated_by_user_id_foreign` (`last_updated_by_user_id`), + KEY `form_schemas_edit_lock_user_id_foreign` (`edit_lock_user_id`), + KEY `fs_org_purpose_idx` (`organisation_id`,`purpose`), + KEY `fs_owner_idx` (`owner_type`,`owner_id`), + KEY `fs_public_token_idx` (`public_token`), + KEY `fs_public_token_prev_idx` (`public_token_previous`), + KEY `fs_org_default_crowd_type_idx` (`organisation_id`,`default_crowd_type_id`), + KEY `form_schemas_default_crowd_type_id_foreign` (`default_crowd_type_id`), + CONSTRAINT `form_schemas_created_by_user_id_foreign` FOREIGN KEY (`created_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_schemas_default_crowd_type_id_foreign` FOREIGN KEY (`default_crowd_type_id`) REFERENCES `crowd_types` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_schemas_edit_lock_user_id_foreign` FOREIGN KEY (`edit_lock_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_schemas_last_updated_by_user_id_foreign` FOREIGN KEY (`last_updated_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_schemas_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_submission_action_failures`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_submission_action_failures` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_submission_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `listener_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `binding_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `failed_at` timestamp NOT NULL, + `exception_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `exception_message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `context` json NOT NULL, + `retry_count` tinyint unsigned NOT NULL DEFAULT '0', + `resolved_at` timestamp NULL DEFAULT NULL, + `resolved_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `resolved_note` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `dismissed_at` timestamp NULL DEFAULT NULL, + `dismissed_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `dismissed_reason_type` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `dismissed_reason_note` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `form_submission_action_failures_resolved_by_user_id_foreign` (`resolved_by_user_id`), + KEY `form_submission_action_failures_dismissed_by_user_id_foreign` (`dismissed_by_user_id`), + KEY `fsaf_submission_idx` (`form_submission_id`), + KEY `fsaf_listener_failed_idx` (`listener_class`,`failed_at`), + KEY `fsaf_resolved_idx` (`resolved_at`), + KEY `fsaf_dismissed_idx` (`dismissed_at`), + KEY `fsaf_binding_idx` (`binding_id`), + KEY `fsaf_reason_type_idx` (`dismissed_reason_type`), + CONSTRAINT `form_submission_action_failures_binding_id_foreign` FOREIGN KEY (`binding_id`) REFERENCES `form_field_bindings` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_submission_action_failures_dismissed_by_user_id_foreign` FOREIGN KEY (`dismissed_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_submission_action_failures_form_submission_id_foreign` FOREIGN KEY (`form_submission_id`) REFERENCES `form_submissions` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_submission_action_failures_resolved_by_user_id_foreign` FOREIGN KEY (`resolved_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_submission_delegations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_submission_delegations` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_submission_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `delegated_to_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `delegated_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `granted_at` timestamp NOT NULL, + `revoked_at` timestamp NULL DEFAULT NULL, + `message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `form_submission_delegations_delegated_by_user_id_foreign` (`delegated_by_user_id`), + KEY `fsd_delegatee_active_idx` (`delegated_to_user_id`,`revoked_at`), + KEY `fsd_submission_idx` (`form_submission_id`), + CONSTRAINT `form_submission_delegations_delegated_by_user_id_foreign` FOREIGN KEY (`delegated_by_user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_submission_delegations_delegated_to_user_id_foreign` FOREIGN KEY (`delegated_to_user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_submission_delegations_form_submission_id_foreign` FOREIGN KEY (`form_submission_id`) REFERENCES `form_submissions` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_submission_section_statuses`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_submission_section_statuses` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_submission_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_schema_section_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `status` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `submitted_at` timestamp NULL DEFAULT NULL, + `reviewed_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reviewed_at` timestamp NULL DEFAULT NULL, + `review_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `fsss_submission_section_unique` (`form_submission_id`,`form_schema_section_id`), + KEY `form_submission_section_statuses_form_schema_section_id_foreign` (`form_schema_section_id`), + KEY `form_submission_section_statuses_reviewed_by_user_id_foreign` (`reviewed_by_user_id`), + CONSTRAINT `form_submission_section_statuses_form_schema_section_id_foreign` FOREIGN KEY (`form_schema_section_id`) REFERENCES `form_schema_sections` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_submission_section_statuses_form_submission_id_foreign` FOREIGN KEY (`form_submission_id`) REFERENCES `form_submissions` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_submission_section_statuses_reviewed_by_user_id_foreign` FOREIGN KEY (`reviewed_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_submissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_submissions` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_schema_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `subject_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `subject_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `submitted_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `public_submitter_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `public_submitter_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `public_submitter_ip` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `public_submitter_ip_anonymised_at` timestamp NULL DEFAULT NULL, + `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `review_status` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reviewed_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reviewed_at` timestamp NULL DEFAULT NULL, + `review_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `submitted_at` timestamp NULL DEFAULT NULL, + `schema_version_at_submit` int unsigned DEFAULT NULL, + `schema_snapshot` json DEFAULT NULL, + `is_test` tinyint(1) NOT NULL DEFAULT '0', + `submitted_in_locale` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `opened_at` timestamp NULL DEFAULT NULL, + `schema_version_at_open` int unsigned DEFAULT NULL, + `first_interacted_at` timestamp NULL DEFAULT NULL, + `submission_duration_seconds` int unsigned DEFAULT NULL, + `auto_save_count` int unsigned NOT NULL DEFAULT '0', + `idempotency_key` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `anonymised_at` timestamp NULL DEFAULT NULL, + `identity_match_status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `apply_status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `apply_completed_at` timestamp NULL DEFAULT NULL, + `search_index` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `fs_idempotency_unique` (`form_schema_id`,`idempotency_key`), + KEY `form_submissions_reviewed_by_user_id_foreign` (`reviewed_by_user_id`), + KEY `fs_schema_status_idx` (`form_schema_id`,`status`), + KEY `fs_subject_idx` (`subject_type`,`subject_id`), + KEY `fs_submitter_idx` (`submitted_by_user_id`), + KEY `fs_schema_review_idx` (`form_schema_id`,`review_status`), + KEY `fs_schema_identity_match_idx` (`form_schema_id`,`identity_match_status`), + KEY `fs_org_status_idx` (`organisation_id`,`status`), + KEY `fs_event_status_idx` (`event_id`,`status`), + KEY `fs_schema_apply_status_idx` (`form_schema_id`,`apply_status`), + KEY `fs_org_apply_status_idx` (`organisation_id`,`apply_status`), + FULLTEXT KEY `fs_search_index_fulltext` (`search_index`), + CONSTRAINT `form_submissions_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_submissions_form_schema_id_foreign` FOREIGN KEY (`form_schema_id`) REFERENCES `form_schemas` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_submissions_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_submissions_reviewed_by_user_id_foreign` FOREIGN KEY (`reviewed_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `form_submissions_submitted_by_user_id_foreign` FOREIGN KEY (`submitted_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_templates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_templates` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `purpose` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `schema_snapshot` json NOT NULL, + `is_system` tinyint(1) NOT NULL DEFAULT '0', + `is_active` tinyint(1) NOT NULL DEFAULT '1', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ft_org_slug_unique` (`organisation_id`,`slug`), + KEY `ft_org_purpose_active_idx` (`organisation_id`,`purpose`,`is_active`), + CONSTRAINT `form_templates_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_value_options`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_value_options` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_value_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_field_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_submission_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `option_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `fvo_field_option_idx` (`form_field_id`,`option_value`), + KEY `fvo_submission_idx` (`form_submission_id`), + KEY `fvo_value_idx` (`form_value_id`), + CONSTRAINT `form_value_options_form_field_id_foreign` FOREIGN KEY (`form_field_id`) REFERENCES `form_fields` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_value_options_form_submission_id_foreign` FOREIGN KEY (`form_submission_id`) REFERENCES `form_submissions` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_value_options_form_value_id_foreign` FOREIGN KEY (`form_value_id`) REFERENCES `form_values` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_values`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_values` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_submission_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_field_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `value` json NOT NULL, + `value_indexed` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `value_number` decimal(15,4) DEFAULT NULL, + `value_date` date DEFAULT NULL, + `value_bool` tinyint(1) DEFAULT NULL, + `value_anonymised` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `fv_submission_field_unique` (`form_submission_id`,`form_field_id`), + KEY `fv_field_indexed_idx` (`form_field_id`,`value_indexed`), + KEY `fv_field_number_idx` (`form_field_id`,`value_number`), + KEY `fv_field_date_idx` (`form_field_id`,`value_date`), + CONSTRAINT `form_values_form_field_id_foreign` FOREIGN KEY (`form_field_id`) REFERENCES `form_fields` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_values_form_submission_id_foreign` FOREIGN KEY (`form_submission_id`) REFERENCES `form_submissions` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `form_webhook_deliveries`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `form_webhook_deliveries` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_schema_webhook_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `form_submission_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `trigger_event` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `attempts` int unsigned NOT NULL DEFAULT '0', + `last_attempt_at` timestamp NULL DEFAULT NULL, + `response_status` smallint unsigned DEFAULT NULL, + `response_body_excerpt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `next_retry_at` timestamp NULL DEFAULT NULL, + `delivered_at` timestamp NULL DEFAULT NULL, + `failed_permanently_at` timestamp NULL DEFAULT NULL, + `payload_snapshot` json NOT NULL, + PRIMARY KEY (`id`), + KEY `fwd_status_retry_idx` (`status`,`next_retry_at`), + KEY `fwd_webhook_status_idx` (`form_schema_webhook_id`,`status`), + KEY `fwd_submission_idx` (`form_submission_id`), + CONSTRAINT `form_webhook_deliveries_form_schema_webhook_id_foreign` FOREIGN KEY (`form_schema_webhook_id`) REFERENCES `form_schema_webhooks` (`id`) ON DELETE CASCADE, + CONSTRAINT `form_webhook_deliveries_form_submission_id_foreign` FOREIGN KEY (`form_submission_id`) REFERENCES `form_submissions` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `impersonation_sessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `impersonation_sessions` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `admin_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `target_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `reason` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `mfa_method` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `ip_address` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_agent` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `started_at` timestamp NOT NULL, + `ended_at` timestamp NULL DEFAULT NULL, + `expires_at` timestamp NOT NULL, + `end_reason` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `actions_count` int unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `impersonation_sessions_admin_id_ended_at_index` (`admin_id`,`ended_at`), + KEY `impersonation_sessions_target_user_id_ended_at_index` (`target_user_id`,`ended_at`), + KEY `impersonation_sessions_started_at_index` (`started_at`), + CONSTRAINT `impersonation_sessions_admin_id_foreign` FOREIGN KEY (`admin_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `impersonation_sessions_target_user_id_foreign` FOREIGN KEY (`target_user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `job_batches`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `job_batches` ( + `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `total_jobs` int NOT NULL, + `pending_jobs` int NOT NULL, + `failed_jobs` int NOT NULL, + `failed_job_ids` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `options` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `cancelled_at` int DEFAULT NULL, + `created_at` int NOT NULL, + `finished_at` int DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `jobs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `jobs` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `queue` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `attempts` tinyint unsigned NOT NULL, + `reserved_at` int unsigned DEFAULT NULL, + `available_at` int unsigned NOT NULL, + `created_at` int unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `jobs_queue_index` (`queue`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `locations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `locations` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `lat` decimal(10,8) DEFAULT NULL, + `lng` decimal(11,8) DEFAULT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `access_instructions` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `locations_event_id_index` (`event_id`), + CONSTRAINT `locations_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `mfa_backup_codes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `mfa_backup_codes` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `code_hash` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `used` tinyint(1) NOT NULL DEFAULT '0', + `used_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `mfa_backup_codes_user_id_used_index` (`user_id`,`used`), + CONSTRAINT `mfa_backup_codes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `mfa_email_codes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `mfa_email_codes` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `expires_at` timestamp NOT NULL, + `used` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `mfa_email_codes_user_id_code_used_expires_at_index` (`user_id`,`code`,`used`,`expires_at`), + CONSTRAINT `mfa_email_codes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `migrations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `migrations` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `migration` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `model_has_permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `model_has_permissions` ( + `permission_id` bigint unsigned NOT NULL, + `model_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `model_id` varchar(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`permission_id`,`model_id`,`model_type`), + KEY `model_has_permissions_model_id_model_type_index` (`model_id`,`model_type`), + CONSTRAINT `model_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `model_has_roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `model_has_roles` ( + `role_id` bigint unsigned NOT NULL, + `model_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `model_id` varchar(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`role_id`,`model_id`,`model_type`), + KEY `model_has_roles_model_id_model_type_index` (`model_id`,`model_type`), + CONSTRAINT `model_has_roles_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `organisation_email_settings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `organisation_email_settings` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `logo_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `primary_color` varchar(7) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '#6366F1', + `secondary_color` varchar(7) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '#4F46E5', + `footer_text` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reply_to_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reply_to_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `organisation_email_settings_organisation_id_unique` (`organisation_id`), + CONSTRAINT `organisation_email_settings_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `organisation_email_templates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `organisation_email_templates` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `subject` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `heading` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `body_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `button_text` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `organisation_email_templates_organisation_id_type_unique` (`organisation_id`,`type`), + CONSTRAINT `organisation_email_templates_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `organisation_user`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `organisation_user` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `organisation_user_user_id_organisation_id_unique` (`user_id`,`organisation_id`), + KEY `organisation_user_organisation_id_foreign` (`organisation_id`), + CONSTRAINT `organisation_user_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE, + CONSTRAINT `organisation_user_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `organisations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `organisations` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `contact_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `contact_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `website` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `billing_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'trial', + `default_locale` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'nl', + `settings` json DEFAULT NULL, + `email_logo_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email_primary_color` varchar(7) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email_reply_to` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email_sender_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email_footer_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `organisations_slug_unique` (`slug`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `password_reset_tokens`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `password_reset_tokens` ( + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `permissions` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `guard_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `permissions_name_guard_name_unique` (`name`,`guard_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `person_identity_matches`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `person_identity_matches` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `matched_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `matched_on` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `confidence` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending', + `match_details` json DEFAULT NULL, + `confirmed_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `confirmed_at` timestamp NULL DEFAULT NULL, + `dismissed_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `dismissed_at` timestamp NULL DEFAULT NULL, + `reverted_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reverted_at` timestamp NULL DEFAULT NULL, + `resolved_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `resolved_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `person_identity_matches_person_id_matched_user_id_unique` (`person_id`,`matched_user_id`), + KEY `person_identity_matches_resolved_by_user_id_foreign` (`resolved_by_user_id`), + KEY `person_identity_matches_person_id_status_index` (`person_id`,`status`), + KEY `person_identity_matches_matched_user_id_status_index` (`matched_user_id`,`status`), + KEY `person_identity_matches_status_index` (`status`), + KEY `person_identity_matches_confirmed_by_user_id_foreign` (`confirmed_by_user_id`), + KEY `person_identity_matches_dismissed_by_user_id_foreign` (`dismissed_by_user_id`), + KEY `person_identity_matches_reverted_by_user_id_foreign` (`reverted_by_user_id`), + CONSTRAINT `person_identity_matches_confirmed_by_user_id_foreign` FOREIGN KEY (`confirmed_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `person_identity_matches_dismissed_by_user_id_foreign` FOREIGN KEY (`dismissed_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `person_identity_matches_matched_user_id_foreign` FOREIGN KEY (`matched_user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, + CONSTRAINT `person_identity_matches_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE, + CONSTRAINT `person_identity_matches_resolved_by_user_id_foreign` FOREIGN KEY (`resolved_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `person_identity_matches_reverted_by_user_id_foreign` FOREIGN KEY (`reverted_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `person_section_preferences`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `person_section_preferences` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `festival_section_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `priority` tinyint NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `psp_person_section_unique` (`person_id`,`festival_section_id`), + KEY `person_section_preferences_festival_section_id_priority_index` (`festival_section_id`,`priority`), + KEY `psp_person_index` (`person_id`), + CONSTRAINT `person_section_preferences_festival_section_id_foreign` FOREIGN KEY (`festival_section_id`) REFERENCES `festival_sections` (`id`) ON DELETE CASCADE, + CONSTRAINT `person_section_preferences_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `person_tags`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `person_tags` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `color` varchar(7) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `is_active` tinyint(1) NOT NULL DEFAULT '1', + `sort_order` int NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `person_tags_organisation_id_name_unique` (`organisation_id`,`name`), + KEY `person_tags_organisation_id_is_active_sort_order_index` (`organisation_id`,`is_active`,`sort_order`), + CONSTRAINT `person_tags_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `personal_access_tokens`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `personal_access_tokens` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `tokenable_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `tokenable_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `abilities` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `last_used_at` timestamp NULL DEFAULT NULL, + `expires_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `personal_access_tokens_token_unique` (`token`), + KEY `personal_access_tokens_tokenable_type_tokenable_id_index` (`tokenable_type`,`tokenable_id`), + KEY `personal_access_tokens_expires_at_index` (`expires_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `persons`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `persons` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `crowd_type_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `company_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `first_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `last_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `date_of_birth` date DEFAULT NULL, + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `status` enum('invited','applied','pending','approved','rejected','no_show') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending', + `registration_source` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'organizer', + `is_blacklisted` tinyint(1) NOT NULL DEFAULT '0', + `admin_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `custom_fields` json DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `persons_crowd_type_id_foreign` (`crowd_type_id`), + KEY `persons_company_id_foreign` (`company_id`), + KEY `persons_event_id_crowd_type_id_status_index` (`event_id`,`crowd_type_id`,`status`), + KEY `persons_email_event_id_index` (`email`,`event_id`), + KEY `persons_user_id_event_id_index` (`user_id`,`event_id`), + CONSTRAINT `persons_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE SET NULL, + CONSTRAINT `persons_crowd_type_id_foreign` FOREIGN KEY (`crowd_type_id`) REFERENCES `crowd_types` (`id`) ON DELETE CASCADE, + CONSTRAINT `persons_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE, + CONSTRAINT `persons_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `role_has_permissions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `role_has_permissions` ( + `permission_id` bigint unsigned NOT NULL, + `role_id` bigint unsigned NOT NULL, + PRIMARY KEY (`permission_id`,`role_id`), + KEY `role_has_permissions_role_id_foreign` (`role_id`), + CONSTRAINT `role_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE, + CONSTRAINT `role_has_permissions_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `roles` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `guard_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `roles_name_guard_name_unique` (`name`,`guard_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `sessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sessions` ( + `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ip_address` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `user_agent` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `last_activity` int NOT NULL, + PRIMARY KEY (`id`), + KEY `sessions_user_id_index` (`user_id`), + KEY `sessions_last_activity_index` (`last_activity`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shift_absences`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `shift_absences` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `shift_assignment_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `reason` enum('sick','personal','other') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `reported_at` timestamp NOT NULL, + `status` enum('open','filled','closed') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'open', + `closed_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `shift_absences_person_id_foreign` (`person_id`), + KEY `shift_absences_shift_assignment_id_index` (`shift_assignment_id`), + KEY `shift_absences_status_index` (`status`), + CONSTRAINT `shift_absences_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE, + CONSTRAINT `shift_absences_shift_assignment_id_foreign` FOREIGN KEY (`shift_assignment_id`) REFERENCES `shift_assignments` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shift_assignments`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `shift_assignments` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `shift_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `time_slot_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `status` enum('pending_approval','approved','rejected','cancelled','completed') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending_approval', + `auto_approved` tinyint(1) NOT NULL DEFAULT '0', + `assigned_by` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `assigned_at` timestamp NULL DEFAULT NULL, + `approved_by` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `approved_at` timestamp NULL DEFAULT NULL, + `rejection_reason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `cancelled_by` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cancellation_source` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cancelled_at` timestamp NULL DEFAULT NULL, + `hours_expected` decimal(4,2) DEFAULT NULL, + `hours_completed` decimal(4,2) DEFAULT NULL, + `checked_in_at` timestamp NULL DEFAULT NULL, + `checked_out_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `shift_assignments_time_slot_id_foreign` (`time_slot_id`), + KEY `shift_assignments_assigned_by_foreign` (`assigned_by`), + KEY `shift_assignments_approved_by_foreign` (`approved_by`), + KEY `shift_assignments_shift_id_status_index` (`shift_id`,`status`), + KEY `shift_assignments_person_id_status_index` (`person_id`,`status`), + KEY `shift_assignments_person_id_time_slot_id_index` (`person_id`,`time_slot_id`), + KEY `shift_assignments_cancelled_by_foreign` (`cancelled_by`), + CONSTRAINT `shift_assignments_approved_by_foreign` FOREIGN KEY (`approved_by`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `shift_assignments_assigned_by_foreign` FOREIGN KEY (`assigned_by`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `shift_assignments_cancelled_by_foreign` FOREIGN KEY (`cancelled_by`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `shift_assignments_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE, + CONSTRAINT `shift_assignments_shift_id_foreign` FOREIGN KEY (`shift_id`) REFERENCES `shifts` (`id`) ON DELETE CASCADE, + CONSTRAINT `shift_assignments_time_slot_id_foreign` FOREIGN KEY (`time_slot_id`) REFERENCES `time_slots` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shift_check_ins`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `shift_check_ins` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `shift_assignment_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `shift_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `checked_in_at` timestamp NOT NULL, + `checked_out_at` timestamp NULL DEFAULT NULL, + `checked_in_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `method` enum('qr','manual') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `shift_check_ins_checked_in_by_user_id_foreign` (`checked_in_by_user_id`), + KEY `shift_check_ins_shift_assignment_id_index` (`shift_assignment_id`), + KEY `shift_check_ins_shift_id_checked_in_at_index` (`shift_id`,`checked_in_at`), + KEY `shift_check_ins_person_id_checked_in_at_index` (`person_id`,`checked_in_at`), + CONSTRAINT `shift_check_ins_checked_in_by_user_id_foreign` FOREIGN KEY (`checked_in_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `shift_check_ins_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE, + CONSTRAINT `shift_check_ins_shift_assignment_id_foreign` FOREIGN KEY (`shift_assignment_id`) REFERENCES `shift_assignments` (`id`) ON DELETE CASCADE, + CONSTRAINT `shift_check_ins_shift_id_foreign` FOREIGN KEY (`shift_id`) REFERENCES `shifts` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shift_swap_requests`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `shift_swap_requests` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `from_assignment_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `to_person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `status` enum('pending','accepted','rejected','cancelled','completed') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending', + `reviewed_by` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reviewed_at` timestamp NULL DEFAULT NULL, + `auto_approved` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `shift_swap_requests_reviewed_by_foreign` (`reviewed_by`), + KEY `shift_swap_requests_from_assignment_id_index` (`from_assignment_id`), + KEY `shift_swap_requests_to_person_id_status_index` (`to_person_id`,`status`), + CONSTRAINT `shift_swap_requests_from_assignment_id_foreign` FOREIGN KEY (`from_assignment_id`) REFERENCES `shift_assignments` (`id`) ON DELETE CASCADE, + CONSTRAINT `shift_swap_requests_reviewed_by_foreign` FOREIGN KEY (`reviewed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `shift_swap_requests_to_person_id_foreign` FOREIGN KEY (`to_person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shift_waitlist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `shift_waitlist` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `shift_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `position` int unsigned NOT NULL, + `added_at` timestamp NOT NULL, + `notified_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `shift_waitlist_shift_id_person_id_unique` (`shift_id`,`person_id`), + KEY `shift_waitlist_person_id_foreign` (`person_id`), + KEY `shift_waitlist_shift_id_position_index` (`shift_id`,`position`), + CONSTRAINT `shift_waitlist_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE, + CONSTRAINT `shift_waitlist_shift_id_foreign` FOREIGN KEY (`shift_id`) REFERENCES `shifts` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `shifts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `shifts` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `festival_section_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `time_slot_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `location_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `report_time` time DEFAULT NULL, + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `instructions` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `coordinator_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `slots_total` int unsigned NOT NULL, + `slots_open_for_claiming` int unsigned NOT NULL, + `is_lead_role` tinyint(1) NOT NULL DEFAULT '0', + `actual_start_time` time DEFAULT NULL, + `actual_end_time` time DEFAULT NULL, + `end_date` date DEFAULT NULL, + `allow_overlap` tinyint(1) NOT NULL DEFAULT '0', + `assigned_crew_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `events_during_shift` json DEFAULT NULL, + `status` enum('draft','open','full','in_progress','completed','cancelled') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'draft', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `shifts_location_id_foreign` (`location_id`), + KEY `shifts_festival_section_id_time_slot_id_index` (`festival_section_id`,`time_slot_id`), + KEY `shifts_time_slot_id_status_index` (`time_slot_id`,`status`), + KEY `shifts_assigned_crew_id_foreign` (`assigned_crew_id`), + CONSTRAINT `shifts_assigned_crew_id_foreign` FOREIGN KEY (`assigned_crew_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `shifts_festival_section_id_foreign` FOREIGN KEY (`festival_section_id`) REFERENCES `festival_sections` (`id`) ON DELETE CASCADE, + CONSTRAINT `shifts_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL, + CONSTRAINT `shifts_time_slot_id_foreign` FOREIGN KEY (`time_slot_id`) REFERENCES `time_slots` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `telescope_entries`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `telescope_entries` ( + `sequence` bigint unsigned NOT NULL AUTO_INCREMENT, + `uuid` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `batch_id` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `family_hash` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `should_display_on_index` tinyint(1) NOT NULL DEFAULT '1', + `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` datetime DEFAULT NULL, + PRIMARY KEY (`sequence`), + UNIQUE KEY `telescope_entries_uuid_unique` (`uuid`), + KEY `telescope_entries_batch_id_index` (`batch_id`), + KEY `telescope_entries_family_hash_index` (`family_hash`), + KEY `telescope_entries_created_at_index` (`created_at`), + KEY `telescope_entries_type_should_display_on_index_index` (`type`,`should_display_on_index`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `telescope_entries_tags`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `telescope_entries_tags` ( + `entry_uuid` char(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `tag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`entry_uuid`,`tag`), + KEY `telescope_entries_tags_tag_index` (`tag`), + CONSTRAINT `telescope_entries_tags_entry_uuid_foreign` FOREIGN KEY (`entry_uuid`) REFERENCES `telescope_entries` (`uuid`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `telescope_monitoring`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `telescope_monitoring` ( + `tag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`tag`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `time_slots`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `time_slots` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_type` enum('CREW','VOLUNTEER','PRESS','PHOTO','PARTNER') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'VOLUNTEER', + `date` date NOT NULL, + `start_time` time NOT NULL, + `end_time` time NOT NULL, + `duration_hours` decimal(4,2) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `time_slots_event_id_person_type_date_index` (`event_id`,`person_type`,`date`), + CONSTRAINT `time_slots_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `trusted_devices`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `trusted_devices` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `device_hash` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `device_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `ip_address` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `trusted_until` timestamp NOT NULL, + `last_used_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `trusted_devices_user_id_device_hash_trusted_until_index` (`user_id`,`device_hash`,`trusted_until`), + CONSTRAINT `trusted_devices_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `user_invitations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `user_invitations` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `invited_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `event_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `token` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `status` enum('pending','accepted','expired') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending', + `expires_at` timestamp NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `user_invitations_token_unique` (`token`), + KEY `user_invitations_organisation_id_foreign` (`organisation_id`), + KEY `user_invitations_event_id_foreign` (`event_id`), + KEY `user_invitations_email_status_index` (`email`,`status`), + KEY `user_invitations_invited_by_user_id_foreign` (`invited_by_user_id`), + CONSTRAINT `user_invitations_event_id_foreign` FOREIGN KEY (`event_id`) REFERENCES `events` (`id`) ON DELETE CASCADE, + CONSTRAINT `user_invitations_invited_by_user_id_foreign` FOREIGN KEY (`invited_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `user_invitations_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `user_organisation_tags`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `user_organisation_tags` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `organisation_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_tag_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `source` enum('self_reported','organiser_assigned') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `assigned_by_user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `proficiency` enum('beginner','experienced','expert') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `assigned_at` timestamp NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uot_user_org_tag_source_unique` (`user_id`,`organisation_id`,`person_tag_id`,`source`), + KEY `user_organisation_tags_assigned_by_user_id_foreign` (`assigned_by_user_id`), + KEY `user_organisation_tags_user_id_organisation_id_index` (`user_id`,`organisation_id`), + KEY `user_organisation_tags_person_tag_id_index` (`person_tag_id`), + KEY `uot_org_tag_proficiency_index` (`organisation_id`,`person_tag_id`,`proficiency`), + CONSTRAINT `user_organisation_tags_assigned_by_user_id_foreign` FOREIGN KEY (`assigned_by_user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL, + CONSTRAINT `user_organisation_tags_organisation_id_foreign` FOREIGN KEY (`organisation_id`) REFERENCES `organisations` (`id`) ON DELETE CASCADE, + CONSTRAINT `user_organisation_tags_person_tag_id_foreign` FOREIGN KEY (`person_tag_id`) REFERENCES `person_tags` (`id`) ON DELETE CASCADE, + CONSTRAINT `user_organisation_tags_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `user_profiles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `user_profiles` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `user_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `bio` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `photo_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `emergency_contact_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `emergency_contact_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `reliability_score` decimal(3,2) NOT NULL DEFAULT '0.00', + `is_ambassador` tinyint(1) NOT NULL DEFAULT '0', + `settings` json DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `user_profiles_user_id_unique` (`user_id`), + KEY `user_profiles_reliability_index` (`reliability_score`), + CONSTRAINT `user_profiles_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `users` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `first_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `last_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `date_of_birth` date DEFAULT NULL, + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `mfa_enabled` tinyint(1) NOT NULL DEFAULT '0', + `mfa_method` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `mfa_secret` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `mfa_confirmed_at` timestamp NULL DEFAULT NULL, + `mfa_enforced` tinyint(1) NOT NULL DEFAULT '0', + `email_verified_at` timestamp NULL DEFAULT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `timezone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Europe/Amsterdam', + `locale` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'nl', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `remember_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `users_email_unique` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `volunteer_availabilities`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `volunteer_availabilities` ( + `id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `person_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `time_slot_id` char(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `preference_level` tinyint NOT NULL DEFAULT '3', + `submitted_at` timestamp NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `volunteer_availabilities_person_id_time_slot_id_unique` (`person_id`,`time_slot_id`), + KEY `volunteer_availabilities_time_slot_id_index` (`time_slot_id`), + CONSTRAINT `volunteer_availabilities_person_id_foreign` FOREIGN KEY (`person_id`) REFERENCES `persons` (`id`) ON DELETE CASCADE, + CONSTRAINT `volunteer_availabilities_time_slot_id_foreign` FOREIGN KEY (`time_slot_id`) REFERENCES `time_slots` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +-- +-- WARNING: can't read the INFORMATION_SCHEMA.libraries table. It's most probably an old server 8.0.44. +-- +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (1,'0001_01_01_000000_create_users_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (2,'0001_01_01_000001_create_cache_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (3,'0001_01_01_000002_create_jobs_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (4,'2026_04_07_100000_create_personal_access_tokens_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (5,'2026_04_07_110000_create_permission_tables',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (6,'2026_04_07_120000_create_activity_log_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (7,'2026_04_07_200000_create_organisations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (8,'2026_04_07_210000_create_organisation_user_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (9,'2026_04_07_220000_create_events_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (10,'2026_04_07_230000_create_user_invitations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (11,'2026_04_07_240000_create_event_user_roles_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (12,'2026_04_07_250000_fix_organisations_and_invitations',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (13,'2026_04_07_260000_create_locations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (14,'2026_04_07_270000_create_festival_sections_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (15,'2026_04_07_280000_create_time_slots_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (16,'2026_04_08_100000_remove_volunteer_min_hours_from_events',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (17,'2026_04_08_110000_remove_route_geojson_from_locations',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (18,'2026_04_08_120000_add_section_settings_to_festival_sections',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (19,'2026_04_08_130000_create_shifts_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (20,'2026_04_08_140000_create_shift_assignments_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (21,'2026_04_08_150000_create_shift_check_ins_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (22,'2026_04_08_160000_create_volunteer_availabilities_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (23,'2026_04_08_170000_create_artists_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (24,'2026_04_08_180000_create_advance_sections_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (25,'2026_04_08_200000_create_crowd_types_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (26,'2026_04_08_205712_add_category_and_icon_to_festival_sections_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (27,'2026_04_08_210000_create_companies_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (28,'2026_04_08_220000_create_persons_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (29,'2026_04_08_230000_create_crowd_lists_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (30,'2026_04_08_240000_create_crowd_list_persons_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (31,'2026_04_08_250000_add_person_foreign_keys_to_existing_tables',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (32,'2026_04_08_300000_add_shifts_extras_and_waitlist_tables',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (33,'2026_04_08_310000_drop_unique_person_timeslot_on_shift_assignments',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (34,'2026_04_08_320000_fix_activity_log_morphs_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (35,'2026_04_08_400000_add_festival_columns_to_events_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (36,'2026_04_08_410000_create_event_person_activations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (37,'2026_04_10_100000_add_registration_branding_to_events_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (38,'2026_04_10_100000_create_person_tags_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (39,'2026_04_10_110000_create_user_organisation_tags_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (40,'2026_04_10_193837_add_cancellation_tracking_to_shift_assignments',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (41,'2026_04_10_200000_create_person_identity_matches_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (42,'2026_04_10_300000_add_registration_fields_to_festival_sections_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (43,'2026_04_10_400000_split_name_into_first_last_on_users_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (44,'2026_04_10_400001_split_name_into_first_last_on_persons_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (45,'2026_04_10_400002_split_contact_name_on_companies_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (46,'2026_04_10_500000_add_date_of_birth_to_persons_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (47,'2026_04_12_100000_add_remarks_to_persons_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (48,'2026_04_12_100001_add_registration_toggles_to_events_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (49,'2026_04_12_200000_create_registration_field_templates_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (50,'2026_04_12_200001_create_registration_form_fields_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (51,'2026_04_12_200002_create_person_field_values_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (52,'2026_04_12_200003_create_person_section_preferences_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (53,'2026_04_13_100000_add_email_branding_to_organisations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (54,'2026_04_14_100000_update_token_columns_for_hashed_storage',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (55,'2026_04_14_200000_add_date_of_birth_to_users_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (56,'2026_04_14_200001_enhance_person_identity_matches_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (57,'2026_04_14_300000_create_email_change_requests_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (58,'2026_04_15_100000_create_organisation_email_settings_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (59,'2026_04_15_100001_create_organisation_email_templates_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (60,'2026_04_15_100002_create_email_logs_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (61,'2026_04_15_200000_add_mfa_columns_to_users_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (62,'2026_04_15_200001_create_mfa_backup_codes_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (63,'2026_04_15_200002_create_trusted_devices_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (64,'2026_04_15_200003_create_mfa_email_codes_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (65,'2026_04_16_000000_add_phone_to_users_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (66,'2026_04_16_100000_create_impersonation_sessions_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (67,'2026_04_16_142626_remove_section_from_registration_fields_tables',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (68,'2026_04_17_100000_add_registration_source_to_persons_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (69,'2026_04_17_200000_add_display_width_to_registration_fields_tables',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (70,'2026_04_18_100000_change_tag_category_to_tag_categories_on_registration_fields',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (71,'2026_04_18_100001_update_partner_crowd_type_icon',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (72,'2026_04_18_110000_add_contact_fields_to_organisations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (73,'2026_04_19_100000_create_user_profiles_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (74,'2026_04_19_100001_populate_user_profiles_from_existing_users',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (75,'2026_04_19_100002_create_form_schemas_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (76,'2026_04_19_100003_create_form_schema_sections_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (77,'2026_04_19_100004_create_form_field_library_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (78,'2026_04_19_100005_create_form_fields_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (79,'2026_04_19_100006_create_form_submissions_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (80,'2026_04_19_100007_create_form_submission_section_statuses_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (81,'2026_04_19_100008_create_form_submission_delegations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (82,'2026_04_19_100009_create_form_values_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (83,'2026_04_19_100010_create_form_value_options_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (84,'2026_04_19_100011_create_form_templates_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (85,'2026_04_19_100012_create_form_schema_webhooks_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (86,'2026_04_19_100013_create_form_webhook_deliveries_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (87,'2026_04_20_100000_drop_remaining_legacy_registration_tables',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (88,'2026_04_21_100000_add_default_locale_to_organisations_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (89,'2026_04_22_100000_add_identity_match_status_to_form_submissions',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (90,'2026_04_22_100001_add_idempotency_key_unique_to_form_submissions',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (91,'2026_04_22_100002_add_schema_version_at_open_to_form_submissions',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (92,'2026_04_24_100000_purge_invalid_form_purposes',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (93,'2026_04_24_100001_drop_custom_purpose_slug_from_form_schemas',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (94,'2026_04_24_110001_migrate_organisation_user_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (95,'2026_04_24_110002_migrate_event_user_roles_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (96,'2026_04_24_110003_migrate_crowd_list_persons_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (97,'2026_04_24_110004_migrate_event_person_activations_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (98,'2026_04_24_110005_migrate_user_organisation_tags_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (99,'2026_04_24_110006_migrate_person_section_preferences_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (100,'2026_04_24_110007_migrate_mfa_backup_codes_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (101,'2026_04_24_110008_migrate_mfa_email_codes_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (102,'2026_04_24_110009_migrate_form_submission_section_statuses_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (103,'2026_04_24_110010_migrate_form_values_and_options_to_ulid',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (104,'2026_04_24_200000_add_denormalized_context_to_form_submissions',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (105,'2026_04_25_015838_create_telescope_entries_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (106,'2026_04_25_100000_create_form_field_bindings_table',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (107,'2026_04_25_100001_drop_binding_json_columns',1); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (140,'2026_04_25_110000_create_form_field_validation_rules_table',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (141,'2026_04_25_110001_backfill_form_field_validation_rules',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (142,'2026_04_25_120000_create_form_field_configs_table',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (143,'2026_04_25_120001_backfill_form_field_configs',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (144,'2026_04_25_120002_drop_validation_rules_json_columns',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (145,'2026_04_25_140000_extend_form_submissions_with_apply_status',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (146,'2026_04_25_140100_create_form_submission_action_failures',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (147,'2026_04_26_100000_create_form_field_conditional_logic_groups_table',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (148,'2026_04_26_100001_create_form_field_conditional_logic_conditions_table',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (149,'2026_04_26_100002_backfill_form_field_conditional_logic',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (150,'2026_04_26_100003_drop_conditional_logic_json_column',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (151,'2026_04_26_120000_add_default_crowd_type_id_to_form_schemas',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (152,'2026_04_27_100000_create_form_field_options_table',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (153,'2026_04_27_100001_backfill_form_field_options',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (154,'2026_04_27_100002_drop_form_field_options_json_columns',2); +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES (155,'2026_04_28_100000_restore_default_crowd_type_id_foreign_key',2);