Files
gasemi_tier/data/init_sqlite.php
T

212 lines
7.1 KiB
PHP

<?php
// data/init_sqlite.php
$dbPath = __DIR__ . '/database.sqlite';
$pdo = new PDO("sqlite:" . $dbPath);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Create tables
$pdo->exec("
CREATE TABLE IF NOT EXISTS tires (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
brand TEXT NOT NULL,
country TEXT,
category TEXT,
width INTEGER,
aspect_ratio INTEGER,
rim INTEGER,
size_str TEXT,
speed_index TEXT,
load_index TEXT,
season TEXT,
season_fa TEXT,
warranty_months INTEGER,
production_year TEXT,
fuel_efficiency TEXT,
wet_grip TEXT,
noise_level TEXT,
price INTEGER,
discount_percent INTEGER DEFAULT 0,
stock INTEGER DEFAULT 0,
rating REAL DEFAULT 5.0,
reviews_count INTEGER DEFAULT 0,
vehicles TEXT,
description TEXT,
features TEXT,
image TEXT,
is_featured INTEGER DEFAULT 0,
is_best_seller INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS brands (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE NOT NULL,
country TEXT,
logo TEXT,
desc TEXT
);
CREATE TABLE IF NOT EXISTS articles (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
category TEXT,
read_time TEXT,
date TEXT,
summary TEXT,
content TEXT,
icon TEXT
);
CREATE TABLE IF NOT EXISTS pressure_guide (
id INTEGER PRIMARY KEY AUTOINCREMENT,
vehicle TEXT NOT NULL,
front_psi TEXT,
rear_psi TEXT,
standard_tire TEXT
);
CREATE TABLE IF NOT EXISTS consultations (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
phone TEXT NOT NULL,
car TEXT,
message TEXT,
created_at TEXT,
status TEXT DEFAULT 'جدید',
admin_note TEXT DEFAULT ''
);
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY,
value TEXT
);
");
// Check if store.json exists to migrate existing data, else use init.php arrays
$sourceData = [];
if (file_exists(__DIR__ . '/store.json')) {
$sourceData = json_decode(file_get_contents(__DIR__ . '/store.json'), true);
}
if (empty($sourceData['tires'])) {
require __DIR__ . '/init.php';
$sourceData = $data;
}
// Seed tires
$tireStmt = $pdo->prepare("
INSERT OR REPLACE INTO tires (
id, name, brand, country, category, width, aspect_ratio, rim, size_str,
speed_index, load_index, season, season_fa, warranty_months, production_year,
fuel_efficiency, wet_grip, noise_level, price, discount_percent, stock,
rating, reviews_count, vehicles, description, features, image, is_featured, is_best_seller
) VALUES (
:id, :name, :brand, :country, :category, :width, :aspect_ratio, :rim, :size_str,
:speed_index, :load_index, :season, :season_fa, :warranty_months, :production_year,
:fuel_efficiency, :wet_grip, :noise_level, :price, :discount_percent, :stock,
:rating, :reviews_count, :vehicles, :description, :features, :image, :is_featured, :is_best_seller
)
");
foreach ($sourceData['tires'] as $t) {
$tireStmt->execute([
':id' => $t['id'],
':name' => $t['name'],
':brand' => $t['brand'],
':country' => $t['country'] ?? '',
':category' => $t['category'] ?? '',
':width' => intval($t['width'] ?? 0),
':aspect_ratio' => intval($t['aspect_ratio'] ?? 0),
':rim' => intval($t['rim'] ?? 0),
':size_str' => $t['size_str'] ?? '',
':speed_index' => $t['speed_index'] ?? '',
':load_index' => $t['load_index'] ?? '',
':season' => $t['season'] ?? 'four_season',
':season_fa' => $t['season_fa'] ?? 'چهار فصل',
':warranty_months' => intval($t['warranty_months'] ?? 36),
':production_year' => $t['production_year'] ?? '2026',
':fuel_efficiency' => $t['fuel_efficiency'] ?? 'B',
':wet_grip' => $t['wet_grip'] ?? 'A',
':noise_level' => $t['noise_level'] ?? '69 dB',
':price' => intval($t['price'] ?? 0),
':discount_percent' => intval($t['discount_percent'] ?? 0),
':stock' => intval($t['stock'] ?? 0),
':rating' => floatval($t['rating'] ?? 5.0),
':reviews_count' => intval($t['reviews_count'] ?? 0),
':vehicles' => json_encode($t['vehicles'] ?? [], JSON_UNESCAPED_UNICODE),
':description' => $t['description'] ?? '',
':features' => json_encode($t['features'] ?? [], JSON_UNESCAPED_UNICODE),
':image' => $t['image'] ?? '',
':is_featured' => !empty($t['is_featured']) ? 1 : 0,
':is_best_seller' => !empty($t['is_best_seller']) ? 1 : 0
]);
}
// Seed brands
$brandStmt = $pdo->prepare("INSERT OR REPLACE INTO brands (name, country, logo, desc) VALUES (:name, :country, :logo, :desc)");
foreach ($sourceData['brands'] as $b) {
$brandStmt->execute([
':name' => $b['name'],
':country' => $b['country'] ?? '',
':logo' => $b['logo'] ?? '',
':desc' => $b['desc'] ?? ''
]);
}
// Seed articles
$artStmt = $pdo->prepare("INSERT OR REPLACE INTO articles (id, title, category, read_time, date, summary, content, icon) VALUES (:id, :title, :category, :read_time, :date, :summary, :content, :icon)");
foreach ($sourceData['articles'] as $a) {
$artStmt->execute([
':id' => $a['id'],
':title' => $a['title'],
':category' => $a['category'] ?? '',
':read_time' => $a['read_time'] ?? '',
':date' => $a['date'] ?? '',
':summary' => $a['summary'] ?? '',
':content' => $a['content'] ?? '',
':icon' => $a['icon'] ?? 'file-text'
]);
}
// Seed pressure_guide
$pgStmt = $pdo->prepare("INSERT INTO pressure_guide (vehicle, front_psi, rear_psi, standard_tire) VALUES (:vehicle, :front_psi, :rear_psi, :standard_tire)");
$pdo->exec("DELETE FROM pressure_guide");
foreach ($sourceData['pressure_guide'] as $pg) {
$pgStmt->execute([
':vehicle' => $pg['vehicle'],
':front_psi' => $pg['front_psi'] ?? '',
':rear_psi' => $pg['rear_psi'] ?? '',
':standard_tire' => $pg['standard_tire'] ?? ''
]);
}
// Seed consultations
$cStmt = $pdo->prepare("INSERT OR REPLACE INTO consultations (id, name, phone, car, message, created_at, status, admin_note) VALUES (:id, :name, :phone, :car, :message, :created_at, :status, :admin_note)");
foreach ($sourceData['consultations'] ?? [] as $c) {
$cStmt->execute([
':id' => $c['id'],
':name' => $c['name'],
':phone' => $c['phone'],
':car' => $c['car'] ?? '',
':message' => $c['message'] ?? '',
':created_at' => $c['created_at'] ?? date('Y-m-d H:i'),
':status' => $c['status'] ?? 'جدید',
':admin_note' => $c['admin_note'] ?? ''
]);
}
// Seed settings
$settings = $sourceData['settings'] ?? [
"site_phone" => "021-88889900",
"emergency_phone" => "09123456789",
"announcement" => "تضمین اصالت کالا و گارانتی معتبر شرکتی تا ۶۰ ماه | تاریخ تولید روز (2026)",
"central_address" => "تهران، خیابان آزادی، تقاطع یادگار امام، مجتمع تایر قاسمی"
];
$setStmt = $pdo->prepare("INSERT OR REPLACE INTO settings (key, value) VALUES (:key, :value)");
foreach ($settings as $k => $v) {
$setStmt->execute([':key' => $k, ':value' => $v]);
}
echo "SQLite database initialized and seeded successfully.\n";