CREATE TABLE `audit_logs` ( `id` text PRIMARY KEY NOT NULL, `user_id` text, `action` text NOT NULL, `target` text, `target_id` text, `details` text, `timestamp` text NOT NULL, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `contacts` ( `id` text PRIMARY KEY NOT NULL, `name` text NOT NULL, `email` text NOT NULL, `message` text NOT NULL, `status` text DEFAULT 'new' NOT NULL, `created_at` text NOT NULL ); --> statement-breakpoint CREATE TABLE `email_logs` ( `id` text PRIMARY KEY NOT NULL, `template_id` text, `event_id` text, `recipient_email` text NOT NULL, `recipient_name` text, `subject` text NOT NULL, `body_html` text, `status` text DEFAULT 'pending' NOT NULL, `error_message` text, `sent_at` text, `sent_by` text, `created_at` text NOT NULL, FOREIGN KEY (`template_id`) REFERENCES `email_templates`(`id`) ON UPDATE no action ON DELETE no action, FOREIGN KEY (`event_id`) REFERENCES `events`(`id`) ON UPDATE no action ON DELETE no action, FOREIGN KEY (`sent_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `email_settings` ( `id` text PRIMARY KEY NOT NULL, `key` text NOT NULL, `value` text NOT NULL, `updated_at` text NOT NULL ); --> statement-breakpoint CREATE TABLE `email_subscribers` ( `id` text PRIMARY KEY NOT NULL, `email` text NOT NULL, `name` text, `status` text DEFAULT 'active' NOT NULL, `created_at` text NOT NULL ); --> statement-breakpoint CREATE TABLE `email_templates` ( `id` text PRIMARY KEY NOT NULL, `name` text NOT NULL, `slug` text NOT NULL, `subject` text NOT NULL, `subject_es` text, `body_html` text NOT NULL, `body_html_es` text, `body_text` text, `body_text_es` text, `description` text, `variables` text, `is_system` integer DEFAULT false NOT NULL, `is_active` integer DEFAULT true NOT NULL, `created_at` text NOT NULL, `updated_at` text NOT NULL ); --> statement-breakpoint CREATE TABLE `event_payment_overrides` ( `id` text PRIMARY KEY NOT NULL, `event_id` text NOT NULL, `tpago_enabled` integer, `tpago_link` text, `tpago_instructions` text, `tpago_instructions_es` text, `bank_transfer_enabled` integer, `bank_name` text, `bank_account_holder` text, `bank_account_number` text, `bank_alias` text, `bank_phone` text, `bank_notes` text, `bank_notes_es` text, `lightning_enabled` integer, `cash_enabled` integer, `cash_instructions` text, `cash_instructions_es` text, `created_at` text NOT NULL, `updated_at` text NOT NULL, FOREIGN KEY (`event_id`) REFERENCES `events`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `events` ( `id` text PRIMARY KEY NOT NULL, `title` text NOT NULL, `title_es` text, `description` text NOT NULL, `description_es` text, `start_datetime` text NOT NULL, `end_datetime` text, `location` text NOT NULL, `location_url` text, `price` real DEFAULT 0 NOT NULL, `currency` text DEFAULT 'PYG' NOT NULL, `capacity` integer DEFAULT 50 NOT NULL, `status` text DEFAULT 'draft' NOT NULL, `banner_url` text, `external_booking_enabled` integer DEFAULT false NOT NULL, `external_booking_url` text, `created_at` text NOT NULL, `updated_at` text NOT NULL ); --> statement-breakpoint CREATE TABLE `invoices` ( `id` text PRIMARY KEY NOT NULL, `payment_id` text NOT NULL, `user_id` text NOT NULL, `invoice_number` text NOT NULL, `ruc_number` text, `legal_name` text, `amount` real NOT NULL, `currency` text DEFAULT 'PYG' NOT NULL, `pdf_url` text, `status` text DEFAULT 'generated' NOT NULL, `created_at` text NOT NULL, FOREIGN KEY (`payment_id`) REFERENCES `payments`(`id`) ON UPDATE no action ON DELETE no action, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `magic_link_tokens` ( `id` text PRIMARY KEY NOT NULL, `user_id` text NOT NULL, `token` text NOT NULL, `type` text NOT NULL, `expires_at` text NOT NULL, `used_at` text, `created_at` text NOT NULL, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `media` ( `id` text PRIMARY KEY NOT NULL, `file_url` text NOT NULL, `type` text NOT NULL, `related_id` text, `related_type` text, `created_at` text NOT NULL ); --> statement-breakpoint CREATE TABLE `payment_options` ( `id` text PRIMARY KEY NOT NULL, `tpago_enabled` integer DEFAULT false NOT NULL, `tpago_link` text, `tpago_instructions` text, `tpago_instructions_es` text, `bank_transfer_enabled` integer DEFAULT false NOT NULL, `bank_name` text, `bank_account_holder` text, `bank_account_number` text, `bank_alias` text, `bank_phone` text, `bank_notes` text, `bank_notes_es` text, `lightning_enabled` integer DEFAULT true NOT NULL, `cash_enabled` integer DEFAULT true NOT NULL, `cash_instructions` text, `cash_instructions_es` text, `allow_duplicate_bookings` integer DEFAULT false NOT NULL, `updated_at` text NOT NULL, `updated_by` text, FOREIGN KEY (`updated_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `payments` ( `id` text PRIMARY KEY NOT NULL, `ticket_id` text NOT NULL, `provider` text NOT NULL, `amount` real NOT NULL, `currency` text DEFAULT 'PYG' NOT NULL, `status` text DEFAULT 'pending' NOT NULL, `reference` text, `user_marked_paid_at` text, `paid_at` text, `paid_by_admin_id` text, `admin_note` text, `created_at` text NOT NULL, `updated_at` text NOT NULL, FOREIGN KEY (`ticket_id`) REFERENCES `tickets`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `site_settings` ( `id` text PRIMARY KEY NOT NULL, `timezone` text DEFAULT 'America/Asuncion' NOT NULL, `site_name` text DEFAULT 'Spanglish' NOT NULL, `site_description` text, `site_description_es` text, `contact_email` text, `contact_phone` text, `facebook_url` text, `instagram_url` text, `twitter_url` text, `linkedin_url` text, `maintenance_mode` integer DEFAULT false NOT NULL, `maintenance_message` text, `maintenance_message_es` text, `updated_at` text NOT NULL, `updated_by` text, FOREIGN KEY (`updated_by`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `tickets` ( `id` text PRIMARY KEY NOT NULL, `user_id` text NOT NULL, `event_id` text NOT NULL, `attendee_first_name` text NOT NULL, `attendee_last_name` text, `attendee_email` text, `attendee_phone` text, `attendee_ruc` text, `preferred_language` text, `status` text DEFAULT 'pending' NOT NULL, `checkin_at` text, `checked_in_by_admin_id` text, `qr_code` text, `admin_note` text, `created_at` text NOT NULL, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action, FOREIGN KEY (`event_id`) REFERENCES `events`(`id`) ON UPDATE no action ON DELETE no action, FOREIGN KEY (`checked_in_by_admin_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `user_sessions` ( `id` text PRIMARY KEY NOT NULL, `user_id` text NOT NULL, `token` text NOT NULL, `user_agent` text, `ip_address` text, `last_active_at` text NOT NULL, `expires_at` text NOT NULL, `created_at` text NOT NULL, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action ); --> statement-breakpoint CREATE TABLE `users` ( `id` text PRIMARY KEY NOT NULL, `email` text NOT NULL, `password` text, `name` text NOT NULL, `phone` text, `role` text DEFAULT 'user' NOT NULL, `language_preference` text, `is_claimed` integer DEFAULT true NOT NULL, `google_id` text, `ruc_number` text, `account_status` text DEFAULT 'active' NOT NULL, `created_at` text NOT NULL, `updated_at` text NOT NULL ); --> statement-breakpoint CREATE UNIQUE INDEX `email_settings_key_unique` ON `email_settings` (`key`);--> statement-breakpoint CREATE UNIQUE INDEX `email_subscribers_email_unique` ON `email_subscribers` (`email`);--> statement-breakpoint CREATE UNIQUE INDEX `email_templates_name_unique` ON `email_templates` (`name`);--> statement-breakpoint CREATE UNIQUE INDEX `email_templates_slug_unique` ON `email_templates` (`slug`);--> statement-breakpoint CREATE UNIQUE INDEX `invoices_invoice_number_unique` ON `invoices` (`invoice_number`);--> statement-breakpoint CREATE UNIQUE INDEX `magic_link_tokens_token_unique` ON `magic_link_tokens` (`token`);--> statement-breakpoint CREATE UNIQUE INDEX `user_sessions_token_unique` ON `user_sessions` (`token`);--> statement-breakpoint CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);