feat: GarageManager v1.0 - Gestion entretiens vehicules
- CRUD vehicules (nom, marque, modele, annee, immat, VIN, carburant, couleur, km, photo) - CRUD entretiens (type, date, km, cout, mecanicien, garage, rappels km/date) - CRUD pieces (marque, reference, prix, quantite, photo, fournisseur, categorie) - Dashboard avec stats globales et rappels entretiens - Vue detail par vehicule (tabs Entretiens/Pieces) - Vue globale toutes pieces - Upload photos vehicules et pieces - Dark theme Tailwind-inspired - SQLite via Docker PHP 8.3 Apache - Traefik : garage.nas.percolouco.com
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
define('DB_PATH', __DIR__ . '/data/garage.db');
|
||||
define('UPLOADS_DIR', __DIR__ . '/uploads/');
|
||||
|
||||
function getDB(): PDO {
|
||||
$db = new PDO('sqlite:' . DB_PATH);
|
||||
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
|
||||
$db->exec('PRAGMA foreign_keys = ON');
|
||||
$db->exec('PRAGMA journal_mode = WAL');
|
||||
return $db;
|
||||
}
|
||||
|
||||
function initDB(): void {
|
||||
$db = getDB();
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS vehicles (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
brand TEXT NOT NULL,
|
||||
model TEXT NOT NULL,
|
||||
year INTEGER,
|
||||
license_plate TEXT,
|
||||
vin TEXT,
|
||||
fuel_type TEXT DEFAULT 'Essence',
|
||||
color TEXT,
|
||||
purchase_date TEXT,
|
||||
purchase_price REAL,
|
||||
current_km INTEGER DEFAULT 0,
|
||||
photo TEXT,
|
||||
notes TEXT,
|
||||
created_at TEXT DEFAULT (datetime('now')),
|
||||
updated_at TEXT DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS maintenances (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
vehicle_id INTEGER NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
description TEXT,
|
||||
date TEXT NOT NULL,
|
||||
km INTEGER,
|
||||
cost REAL DEFAULT 0,
|
||||
mechanic TEXT,
|
||||
garage TEXT,
|
||||
next_km INTEGER,
|
||||
next_date TEXT,
|
||||
invoice_photo TEXT,
|
||||
notes TEXT,
|
||||
created_at TEXT DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (vehicle_id) REFERENCES vehicles(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS parts (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
vehicle_id INTEGER,
|
||||
maintenance_id INTEGER,
|
||||
brand TEXT,
|
||||
reference TEXT,
|
||||
name TEXT NOT NULL,
|
||||
category TEXT DEFAULT 'Autre',
|
||||
price REAL DEFAULT 0,
|
||||
quantity INTEGER DEFAULT 1,
|
||||
unit TEXT DEFAULT 'pièce',
|
||||
supplier TEXT,
|
||||
purchase_date TEXT,
|
||||
photo TEXT,
|
||||
notes TEXT,
|
||||
created_at TEXT DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (vehicle_id) REFERENCES vehicles(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (maintenance_id) REFERENCES maintenances(id) ON DELETE SET NULL
|
||||
);
|
||||
");
|
||||
}
|
||||
|
||||
initDB();
|
||||
Reference in New Issue
Block a user