diff --git a/config/vhost-parkerslingshot/vhost.conf b/config/vhost-parkerslingshot/vhost.conf new file mode 100755 index 0000000..dcad4de --- /dev/null +++ b/config/vhost-parkerslingshot/vhost.conf @@ -0,0 +1,91 @@ +docRoot /home/epictravelexpeditions.com/parkerslingshot +vhDomain $VH_NAME +vhAliases www.$VH_NAME +adminEmails admin@epictravelexpeditions.com +enableGzip 1 +enableIpGeo 1 + +index { + useServer 0 + indexFiles index.php, index.html +} + +errorlog $VH_ROOT/logs/epictravelexpeditions.com.error_log { + useServer 0 + logLevel WARN + rollingSize 10M +} + +accesslog $VH_ROOT/logs/epictravelexpeditions.com.access_log { + useServer 0 + logFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + logHeaders 5 + rollingSize 10M + keepDays 10 + compressArchive 1 +} + +phpIniOverride { + +} + +module cache { + storagePath /usr/local/lsws/cachedata/$VH_NAME +} + +scripthandler { + add lsapi:epict63871534 php +} + +extprocessor epict63871534 { + type lsapi + address UDS://tmp/lshttpd/epict63871534.sock + maxConns 10 + env LSAPI_CHILDREN=10 + initTimeout 60 + retryTimeout 0 + persistConn 1 + pcKeepAliveTimeout 1 + respBuffer 0 + autoStart 1 + path /usr/local/lsws/lsphp85/bin/lsphp + extUser epict6387 + extGroup epict6387 + memSoftLimit 1024M + memHardLimit 1024M + procSoftLimit 400 + procHardLimit 500 +} + +rewrite { + enable 1 + autoLoadHtaccess 1 +} + +context /.well-known/acme-challenge { + location /usr/local/lsws/Example/html/.well-known/acme-challenge + allowBrowse 1 + + rewrite { + enable 0 + } + addDefaultCharset off + + phpIniOverride { + + } +} + + +vhssl { + keyFile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/privkey.pem + certFile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/fullchain.pem + certChain 1 + sslProtocol 24 + enableECDHE 1 + renegProtection 1 + sslSessionCache 1 + enableSpdy 15 + enableStapling 1 + ocspRespMaxAge 86400 +} diff --git a/config/vhost-parkerslingshot/vhost.conf.txt b/config/vhost-parkerslingshot/vhost.conf.txt new file mode 100755 index 0000000..c85a3fe --- /dev/null +++ b/config/vhost-parkerslingshot/vhost.conf.txt @@ -0,0 +1,85 @@ +enablegzip 1 +docroot /home/epictravelexpeditions.com/parkerslingshot +vhdomain $VH_NAME +phpinioverride +vhaliases www.$VH_NAME +enableipgeo 1 +adminemails admin@epictravelexpeditions.com + +errorlog $VH_ROOT/logs/epictravelexpeditions.com.error_log { + rollingsize 10M + loglevel WARN + useserver 0 +} + +rewrite { + autoloadhtaccess 1 + enable 1 +} + +scripthandler { + add lsapi:epict63871534 php +} + +extprocessor epict63871534 { + extgroup epict6387 + memsoftlimit 1024M + autostart 1 + prochardlimit 500 + address UDS://tmp/lshttpd/epict63871534.sock + maxconns 10 + memhardlimit 1024M + procsoftlimit 400 + inittimeout 60 + retrytimeout 0 + persistconn 1 + pckeepalivetimeout 1 + respbuffer 0 + path /usr/local/lsws/lsphp85/bin/lsphp + extuser epict6387 + type lsapi + env LSAPI_CHILDREN=10 +} + +context /.well-known/acme-challenge { + location /usr/local/lsws/Example/html/.well-known/acme-challenge + adddefaultcharset off + phpinioverride + allowbrowse 1 + + rewrite { + enable 0 + } +} + +vhssl { + certchain 1 + sslprotocol 24 + enableecdhe 1 + keyfile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/privkey.pem + certfile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/fullchain.pem + enablestapling 1 + ocsprespmaxage 86400 + renegprotection 1 + sslsessioncache 1 + enablespdy 15 +} + +module cache { + unknownkeywords storagepath /usr/local/lsws/cachedata/$VH_NAME + param storagepath /usr/local/lsws/cachedata/$VH_NAME +} + +index { + indexfiles index.php, index.html + useserver 0 +} + +accesslog $VH_ROOT/logs/epictravelexpeditions.com.access_log { + compressarchive 1 + logformat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + rollingsize 10M + keepdays 10 + useserver 0 + logheaders 5 +} diff --git a/config/vhost-parkerslingshot/vhost.conf0 b/config/vhost-parkerslingshot/vhost.conf0 new file mode 100755 index 0000000..dcad4de --- /dev/null +++ b/config/vhost-parkerslingshot/vhost.conf0 @@ -0,0 +1,91 @@ +docRoot /home/epictravelexpeditions.com/parkerslingshot +vhDomain $VH_NAME +vhAliases www.$VH_NAME +adminEmails admin@epictravelexpeditions.com +enableGzip 1 +enableIpGeo 1 + +index { + useServer 0 + indexFiles index.php, index.html +} + +errorlog $VH_ROOT/logs/epictravelexpeditions.com.error_log { + useServer 0 + logLevel WARN + rollingSize 10M +} + +accesslog $VH_ROOT/logs/epictravelexpeditions.com.access_log { + useServer 0 + logFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + logHeaders 5 + rollingSize 10M + keepDays 10 + compressArchive 1 +} + +phpIniOverride { + +} + +module cache { + storagePath /usr/local/lsws/cachedata/$VH_NAME +} + +scripthandler { + add lsapi:epict63871534 php +} + +extprocessor epict63871534 { + type lsapi + address UDS://tmp/lshttpd/epict63871534.sock + maxConns 10 + env LSAPI_CHILDREN=10 + initTimeout 60 + retryTimeout 0 + persistConn 1 + pcKeepAliveTimeout 1 + respBuffer 0 + autoStart 1 + path /usr/local/lsws/lsphp85/bin/lsphp + extUser epict6387 + extGroup epict6387 + memSoftLimit 1024M + memHardLimit 1024M + procSoftLimit 400 + procHardLimit 500 +} + +rewrite { + enable 1 + autoLoadHtaccess 1 +} + +context /.well-known/acme-challenge { + location /usr/local/lsws/Example/html/.well-known/acme-challenge + allowBrowse 1 + + rewrite { + enable 0 + } + addDefaultCharset off + + phpIniOverride { + + } +} + + +vhssl { + keyFile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/privkey.pem + certFile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/fullchain.pem + certChain 1 + sslProtocol 24 + enableECDHE 1 + renegProtection 1 + sslSessionCache 1 + enableSpdy 15 + enableStapling 1 + ocspRespMaxAge 86400 +} diff --git a/config/vhost-parkerslingshot/vhost.conf0,v b/config/vhost-parkerslingshot/vhost.conf0,v new file mode 100755 index 0000000..7f8900c --- /dev/null +++ b/config/vhost-parkerslingshot/vhost.conf0,v @@ -0,0 +1,130 @@ +head 1.2; +access; +symbols; +locks + root:1.2; strict; +comment @# @; + + +1.2 +date 2026.05.17.04.47.56; author root; state Exp; +branches; +next 1.1; + +1.1 +date 2026.05.17.04.47.43; author root; state Exp; +branches; +next ; + + +desc +@/usr/local/lsws/conf/vhosts/parkerslingshot.epictravelexpeditions.com/vhost.conf0 +@ + + +1.2 +log +@Update +@ +text +@docRoot /home/epictravelexpeditions.com/parkerslingshot +vhDomain $VH_NAME +vhAliases www.$VH_NAME +adminEmails admin@@epictravelexpeditions.com +enableGzip 1 +enableIpGeo 1 + +index { + useServer 0 + indexFiles index.php, index.html +} + +errorlog $VH_ROOT/logs/epictravelexpeditions.com.error_log { + useServer 0 + logLevel WARN + rollingSize 10M +} + +accesslog $VH_ROOT/logs/epictravelexpeditions.com.access_log { + useServer 0 + logFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + logHeaders 5 + rollingSize 10M + keepDays 10 + compressArchive 1 +} + +phpIniOverride { + +} + +module cache { + storagePath /usr/local/lsws/cachedata/$VH_NAME +} + +scripthandler { + add lsapi:epict63871534 php +} + +extprocessor epict63871534 { + type lsapi + address UDS://tmp/lshttpd/epict63871534.sock + maxConns 10 + env LSAPI_CHILDREN=10 + initTimeout 60 + retryTimeout 0 + persistConn 1 + pcKeepAliveTimeout 1 + respBuffer 0 + autoStart 1 + path /usr/local/lsws/lsphp85/bin/lsphp + extUser epict6387 + extGroup epict6387 + memSoftLimit 1024M + memHardLimit 1024M + procSoftLimit 400 + procHardLimit 500 +} + +rewrite { + enable 1 + autoLoadHtaccess 1 +} + +context /.well-known/acme-challenge { + location /usr/local/lsws/Example/html/.well-known/acme-challenge + allowBrowse 1 + + rewrite { + enable 0 + } + addDefaultCharset off + + phpIniOverride { + + } +} + + +vhssl { + keyFile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/privkey.pem + certFile /etc/letsencrypt/live/parkerslingshot.epictravelexpeditions.com/fullchain.pem + certChain 1 + sslProtocol 24 + enableECDHE 1 + renegProtection 1 + sslSessionCache 1 + enableSpdy 15 + enableStapling 1 + ocspRespMaxAge 86400 +} +@ + + +1.1 +log +@Update +@ +text +@d79 13 +@ diff --git a/config/vhost/vhost.conf b/config/vhost/vhost.conf new file mode 100755 index 0000000..1e73e9d --- /dev/null +++ b/config/vhost/vhost.conf @@ -0,0 +1,95 @@ +docRoot $VH_ROOT/public_html +vhDomain $VH_NAME +vhAliases www.$VH_NAME +adminEmails admin@epictravelexpeditions.com +enableGzip 1 +enableIpGeo 1 + +index { + useServer 0 + indexFiles index.php, index.html +} + +errorlog $VH_ROOT/logs/$VH_NAME.error_log { + useServer 0 + logLevel WARN + rollingSize 10M +} + +accesslog $VH_ROOT/logs/$VH_NAME.access_log { + useServer 0 + logFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + logHeaders 5 + rollingSize 10M + keepDays 10 + compressArchive 1 +} + +scripthandler { + add lsapi:epict6387 php +} + +extprocessor epict6387 { + type lsapi + address UDS://tmp/lshttpd/epict6387.sock + maxConns 10 + env LSAPI_CHILDREN=10 + initTimeout 600 + retryTimeout 0 + persistConn 1 + pcKeepAliveTimeout 1 + respBuffer 0 + autoStart 1 + path /usr/local/lsws/lsphp85/bin/lsphp + extUser epict6387 + extGroup epict6387 + memSoftLimit 1024M + memHardLimit 1024M + procSoftLimit 400 + procHardLimit 500 +} + +phpIniOverride { + +} + +module cache { + storagePath /usr/local/lsws/cachedata/$VH_NAME +} + +rewrite { + enable 1 + autoLoadHtaccess 1 +} + +context /.well-known/acme-challenge { + location /usr/local/lsws/Example/html/.well-known/acme-challenge + allowBrowse 1 + + rewrite { + enable 0 + } + addDefaultCharset off + + phpIniOverride { + + } +} + + +vhssl { + keyFile /etc/letsencrypt/live/epictravelexpeditions.com/privkey.pem + certFile /etc/letsencrypt/live/epictravelexpeditions.com/fullchain.pem + certChain 1 + sslProtocol 24 + enableECDHE 1 + renegProtection 1 + sslSessionCache 1 + enableSpdy 15 + enableStapling 1 + ocspRespMaxAge 86400 +} + + AllowOverride All + Require all granted + \ No newline at end of file diff --git a/config/vhost/vhost.conf.txt b/config/vhost/vhost.conf.txt new file mode 100755 index 0000000..d7fe048 --- /dev/null +++ b/config/vhost/vhost.conf.txt @@ -0,0 +1,86 @@ +vhdomain $VH_NAME +vhaliases www.$VH_NAME +enableipgeo 1 +enablegzip 1 +docroot $VH_ROOT/public_html +phpinioverride +allowoverride All +adminemails admin@epictravelexpeditions.com + +extprocessor epict6387 { + pckeepalivetimeout 1 + respbuffer 0 + memsoftlimit 1024M + memhardlimit 1024M + env LSAPI_CHILDREN=10 + inittimeout 600 + extuser epict6387 + extgroup epict6387 + type lsapi + address UDS://tmp/lshttpd/epict6387.sock + maxconns 10 + prochardlimit 500 + retrytimeout 0 + persistconn 1 + autostart 1 + path /usr/local/lsws/lsphp85/bin/lsphp + procsoftlimit 400 +} + +context /.well-known/acme-challenge { + adddefaultcharset off + phpinioverride + location /usr/local/lsws/Example/html/.well-known/acme-challenge + allowbrowse 1 + + rewrite { + enable 0 + } +} + +rewrite { + enable 1 + autoloadhtaccess 1 +} + +module cache { + unknownkeywords storagepath /usr/local/lsws/cachedata/$VH_NAME + param storagepath /usr/local/lsws/cachedata/$VH_NAME +} + +accesslog $VH_ROOT/logs/$VH_NAME.access_log { + rollingsize 10M + keepdays 10 + compressarchive 1 + logformat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + useserver 0 + logheaders 5 +} + +errorlog $VH_ROOT/logs/$VH_NAME.error_log { + useserver 0 + rollingsize 10M + loglevel WARN +} + +scripthandler { + add lsapi:epict6387 php +} + +index { + indexfiles index.php, index.html + useserver 0 +} + +vhssl { + certchain 1 + sslprotocol 24 + enableecdhe 1 + renegprotection 1 + sslsessioncache 1 + enablespdy 15 + enablestapling 1 + ocsprespmaxage 86400 + keyfile /etc/letsencrypt/live/epictravelexpeditions.com/privkey.pem + certfile /etc/letsencrypt/live/epictravelexpeditions.com/fullchain.pem +} diff --git a/config/vhost/vhost.conf0 b/config/vhost/vhost.conf0 new file mode 100755 index 0000000..1e73e9d --- /dev/null +++ b/config/vhost/vhost.conf0 @@ -0,0 +1,95 @@ +docRoot $VH_ROOT/public_html +vhDomain $VH_NAME +vhAliases www.$VH_NAME +adminEmails admin@epictravelexpeditions.com +enableGzip 1 +enableIpGeo 1 + +index { + useServer 0 + indexFiles index.php, index.html +} + +errorlog $VH_ROOT/logs/$VH_NAME.error_log { + useServer 0 + logLevel WARN + rollingSize 10M +} + +accesslog $VH_ROOT/logs/$VH_NAME.access_log { + useServer 0 + logFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + logHeaders 5 + rollingSize 10M + keepDays 10 + compressArchive 1 +} + +scripthandler { + add lsapi:epict6387 php +} + +extprocessor epict6387 { + type lsapi + address UDS://tmp/lshttpd/epict6387.sock + maxConns 10 + env LSAPI_CHILDREN=10 + initTimeout 600 + retryTimeout 0 + persistConn 1 + pcKeepAliveTimeout 1 + respBuffer 0 + autoStart 1 + path /usr/local/lsws/lsphp85/bin/lsphp + extUser epict6387 + extGroup epict6387 + memSoftLimit 1024M + memHardLimit 1024M + procSoftLimit 400 + procHardLimit 500 +} + +phpIniOverride { + +} + +module cache { + storagePath /usr/local/lsws/cachedata/$VH_NAME +} + +rewrite { + enable 1 + autoLoadHtaccess 1 +} + +context /.well-known/acme-challenge { + location /usr/local/lsws/Example/html/.well-known/acme-challenge + allowBrowse 1 + + rewrite { + enable 0 + } + addDefaultCharset off + + phpIniOverride { + + } +} + + +vhssl { + keyFile /etc/letsencrypt/live/epictravelexpeditions.com/privkey.pem + certFile /etc/letsencrypt/live/epictravelexpeditions.com/fullchain.pem + certChain 1 + sslProtocol 24 + enableECDHE 1 + renegProtection 1 + sslSessionCache 1 + enableSpdy 15 + enableStapling 1 + ocspRespMaxAge 86400 +} + + AllowOverride All + Require all granted + \ No newline at end of file diff --git a/config/vhost/vhost.conf0,v b/config/vhost/vhost.conf0,v new file mode 100755 index 0000000..4c3bd44 --- /dev/null +++ b/config/vhost/vhost.conf0,v @@ -0,0 +1,147 @@ +head 1.3; +access; +symbols; +locks + root:1.3; strict; +comment @# @; + + +1.3 +date 2026.05.15.22.32.23; author root; state Exp; +branches; +next 1.2; + +1.2 +date 2026.05.15.20.10.31; author root; state Exp; +branches; +next 1.1; + +1.1 +date 2026.05.15.20.10.01; author root; state Exp; +branches; +next ; + + +desc +@/usr/local/lsws/conf/vhosts/epictravelexpeditions.com/vhost.conf0 +@ + + +1.3 +log +@Update +@ +text +@docRoot $VH_ROOT/public_html +vhDomain $VH_NAME +vhAliases www.$VH_NAME +adminEmails admin@@epictravelexpeditions.com +enableGzip 1 +enableIpGeo 1 + +index { + useServer 0 + indexFiles index.php, index.html +} + +errorlog $VH_ROOT/logs/$VH_NAME.error_log { + useServer 0 + logLevel WARN + rollingSize 10M +} + +accesslog $VH_ROOT/logs/$VH_NAME.access_log { + useServer 0 + logFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" + logHeaders 5 + rollingSize 10M + keepDays 10 + compressArchive 1 +} + +scripthandler { + add lsapi:epict6387 php +} + +extprocessor epict6387 { + type lsapi + address UDS://tmp/lshttpd/epict6387.sock + maxConns 10 + env LSAPI_CHILDREN=10 + initTimeout 600 + retryTimeout 0 + persistConn 1 + pcKeepAliveTimeout 1 + respBuffer 0 + autoStart 1 + path /usr/local/lsws/lsphp85/bin/lsphp + extUser epict6387 + extGroup epict6387 + memSoftLimit 1024M + memHardLimit 1024M + procSoftLimit 400 + procHardLimit 500 +} + +phpIniOverride { + +} + +module cache { + storagePath /usr/local/lsws/cachedata/$VH_NAME +} + +rewrite { + enable 1 + autoLoadHtaccess 1 +} + +context /.well-known/acme-challenge { + location /usr/local/lsws/Example/html/.well-known/acme-challenge + allowBrowse 1 + + rewrite { + enable 0 + } + addDefaultCharset off + + phpIniOverride { + + } +} + + +vhssl { + keyFile /etc/letsencrypt/live/epictravelexpeditions.com/privkey.pem + certFile /etc/letsencrypt/live/epictravelexpeditions.com/fullchain.pem + certChain 1 + sslProtocol 24 + enableECDHE 1 + renegProtection 1 + sslSessionCache 1 + enableSpdy 15 + enableStapling 1 + ocspRespMaxAge 86400 +} + + AllowOverride All + Require all granted +@ + + +1.2 +log +@Update +@ +text +@d92 4 +@ + + +1.1 +log +@Update +@ +text +@d79 13 +@ diff --git a/db/schema.sql b/db/schema.sql new file mode 100644 index 0000000..062b909 --- /dev/null +++ b/db/schema.sql @@ -0,0 +1,123 @@ +/*M!999999\- enable the sandbox mode */ + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; +/*!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 `admin_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `admin_users` ( + `id` varchar(36) NOT NULL, + `email` varchar(255) NOT NULL, + `password_hash` varchar(255) NOT NULL, + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `email` (`email`), + KEY `idx_email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `contacts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `contacts` ( + `id` varchar(36) NOT NULL, + `name` varchar(255) NOT NULL, + `email` varchar(255) NOT NULL, + `message` text NOT NULL, + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `idx_created_at` (`created_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `destination_categories`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `destination_categories` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `destinations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `destinations` ( + `id` varchar(36) NOT NULL, + `name` varchar(255) NOT NULL, + `location` varchar(255) NOT NULL, + `description` text NOT NULL, + `image` varchar(500) NOT NULL, + `category` varchar(50) NOT NULL, + `rating` decimal(2,1) NOT NULL DEFAULT 4.5, + `price` decimal(10,2) NOT NULL, + `currency` varchar(3) NOT NULL DEFAULT 'USD', + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `idx_category` (`category`), + KEY `idx_name` (`name`), + KEY `idx_location` (`location`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `newsletter_subscribers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `newsletter_subscribers` ( + `id` varchar(36) NOT NULL, + `email` varchar(255) NOT NULL, + `subscribed_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `email` (`email`), + KEY `idx_email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `specials`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `specials` ( + `id` varchar(36) NOT NULL, + `destination_id` varchar(36) NOT NULL, + `discount` decimal(5,2) NOT NULL, + `price` decimal(10,2) DEFAULT NULL, + `end_date` date NOT NULL, + `highlights` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`highlights`)), + `created_at` datetime NOT NULL DEFAULT current_timestamp(), + `image_path` varchar(500) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `idx_destination` (`destination_id`), + KEY `idx_end_date` (`end_date`), + CONSTRAINT `specials_ibfk_1` FOREIGN KEY (`destination_id`) REFERENCES `destinations` (`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 `testimonials`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `testimonials` ( + `id` varchar(36) NOT NULL, + `full_name` varchar(255) NOT NULL, + `location` varchar(255) NOT NULL, + `message` text NOT NULL, + `image_path` varchar(500) DEFAULT NULL, + `status` enum('pending','approved','denied') NOT NULL DEFAULT 'pending', + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!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 */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +