����JFIF��`�`�����Viewing File: /home/u820193700/domains/thereown.com/public_html/schema.sql
-- ═══════════════════════════════════════════════
-- REOWN · AVAHAN MOTORS — MySQL schema (Hostinger)
-- Import via hPanel → Databases → phpMyAdmin → Import
-- ═══════════════════════════════════════════════
SET NAMES utf8mb4;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(80) NOT NULL,
  phone VARCHAR(20) UNIQUE,
  role ENUM('Executive','Manager','Director') NOT NULL,
  pass_hash VARCHAR(255) NOT NULL,          -- bcrypt, never plain text
  active TINYINT(1) DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE bikes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(60) NOT NULL,
  variant VARCHAR(60),
  reg VARCHAR(20) UNIQUE,
  chassis VARCHAR(30),
  model_year SMALLINT,
  km VARCHAR(20),
  owner_count VARCHAR(20) DEFAULT '1st Owner',
  ins_valid VARCHAR(20),
  cc SMALLINT,
  power VARCHAR(20),
  type VARCHAR(30),
  hue CHAR(7), hue2 CHAR(7),
  asking INT NOT NULL,
  market INT,
  new_price INT,
  new_ref VARCHAR(40),
  status ENUM('available','booked','sold') DEFAULT 'available',
  booked_on DATE NULL,
  approval ENUM('pending','approved','denied') DEFAULT 'pending',
  added_by INT NULL,
  views INT DEFAULT 0,
  shortlisted INT DEFAULT 0,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (added_by) REFERENCES users(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE media (
  id INT AUTO_INCREMENT PRIMARY KEY,
  bike_id INT NOT NULL,
  kind ENUM('gallery','spin','video','hero','delivery') NOT NULL,
  file_path VARCHAR(255) NOT NULL,          -- stored under /uploads, random names
  sort_order INT DEFAULT 0,                 -- 0 = cover for gallery
  uploaded_by INT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (bike_id) REFERENCES bikes(id) ON DELETE CASCADE,
  FOREIGN KEY (uploaded_by) REFERENCES users(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE activity (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT NULL,                         -- NULL = anonymous visitor
  role VARCHAR(20) DEFAULT 'Visitor',
  action VARCHAR(60) NOT NULL,              -- Login / Viewed bike / Approved listing ...
  detail VARCHAR(255),
  ip VARCHAR(45),
  ua VARCHAR(255),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_act (action), INDEX idx_when (created_at),
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE leads (
  id INT AUTO_INCREMENT PRIMARY KEY,
  kind ENUM('test_ride','sell','enquiry','booking') NOT NULL,
  bike_id INT NULL,
  name VARCHAR(80), phone VARCHAR(20),
  payload JSON,                             -- form details
  status ENUM('new','contacted','closed') DEFAULT 'new',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (bike_id) REFERENCES bikes(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE deliveries (
  id INT AUTO_INCREMENT PRIMARY KEY,
  bike_id INT NULL,
  name VARCHAR(80),
  sub VARCHAR(255),
  location VARCHAR(255),
  img LONGTEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (bike_id) REFERENCES bikes(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ── Seed staff (CHANGE PASSWORDS after first login) ──
-- Hashes below = exec2026 / mgr2026 / dir2026 (bcrypt)
INSERT INTO users (name,phone,role,pass_hash) VALUES
('Executive One','9000000001','Executive','$2y$10$REPLACE_ON_SETUP_1'),
('Manager One','9000000002','Manager','$2y$10$REPLACE_ON_SETUP_2'),
('Chandan (Director)','9035045535','Director','$2y$10$REPLACE_ON_SETUP_3');
Back to Directory �������}�!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������������������������������������������������������������������������������� ������w�!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ��?��_��+��?��(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(�����