36587-vm/db/migrations/001_initial_schema.php
Flatlogic Bot f1b278f27d Chep Kart
2025-12-02 15:13:03 +00:00

72 lines
2.4 KiB
PHP

<?php
require_once __DIR__ . '/../config.php';
function migrate_001_initial_schema() {
$pdo = db();
$sql = <<<SQL
CREATE TABLE IF NOT EXISTS `categories` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`slug` VARCHAR(255) NOT NULL UNIQUE,
`icon_url` VARCHAR(255),
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS `products` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`brand` VARCHAR(255),
`category_id` INT,
`subcategory` VARCHAR(255),
`image_url` VARCHAR(255),
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`category_id`) REFERENCES `categories`(`id`) ON DELETE SET NULL,
FULLTEXT KEY `ft_name_brand` (`name`, `brand`)
);
CREATE TABLE IF NOT EXISTS `platforms` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`slug` VARCHAR(255) NOT NULL UNIQUE,
`logo_url` VARCHAR(255),
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS `product_listings` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`product_id` INT NOT NULL,
`platform_id` INT NOT NULL,
`original_price` DECIMAL(10, 2),
`discounted_price` DECIMAL(10, 2),
`coupon_price` DECIMAL(10, 2),
`effective_price` DECIMAL(10, 2),
`rating` FLOAT,
`final_score` FLOAT,
`badge` ENUM('CHEAPEST', 'TOP RATED', 'BEST DEAL'),
`product_url` TEXT,
`last_synced_at` TIMESTAMP NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`platform_id`) REFERENCES `platforms`(`id`) ON DELETE CASCADE,
INDEX `idx_effective_price` (`effective_price`),
INDEX `idx_rating` (`rating`)
);
SQL;
try {
$pdo->exec($sql);
echo "Database schema created successfully." . PHP_EOL;
} catch (PDOException $e) {
die("Error creating schema: " . $e->getMessage());
}
}
// If this script is run directly, execute the migration.
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
migrate_001_initial_schema();
}