Init PercoVitrine — app de gestion de fiches produits
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
$DB_PATH = getenv('DB_PATH') ?: '/data/vitrine.db';
|
||||
$UPLOAD_DIR = getenv('UPLOAD_DIR') ?: '/data/uploads/';
|
||||
|
||||
if (!is_dir($UPLOAD_DIR)) @mkdir($UPLOAD_DIR, 0755, true);
|
||||
if (!is_dir(dirname($DB_PATH))) @mkdir(dirname($DB_PATH), 0755, true);
|
||||
|
||||
$pdo = new PDO('sqlite:' . $DB_PATH, null, null, [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
]);
|
||||
$pdo->exec("PRAGMA journal_mode=WAL; PRAGMA foreign_keys=ON;");
|
||||
|
||||
$pdo->exec("
|
||||
CREATE TABLE IF NOT EXISTS categories (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS products (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT DEFAULT '',
|
||||
price REAL DEFAULT 0,
|
||||
shipping REAL DEFAULT 0,
|
||||
sku TEXT DEFAULT '',
|
||||
category_id INTEGER REFERENCES categories(id) ON DELETE SET NULL,
|
||||
status TEXT DEFAULT 'brouillon' CHECK(status IN ('brouillon','prêt','publié')),
|
||||
etsy_listing_id TEXT DEFAULT '',
|
||||
tags TEXT DEFAULT '',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS product_media (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
product_id INTEGER NOT NULL REFERENCES products(id) ON DELETE CASCADE,
|
||||
type TEXT DEFAULT 'image' CHECK(type IN ('image','video')),
|
||||
filename TEXT,
|
||||
original_name TEXT,
|
||||
video_url TEXT,
|
||||
sort_order INTEGER DEFAULT 0,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT DEFAULT ''
|
||||
);
|
||||
");
|
||||
Reference in New Issue
Block a user