201 lines
6.2 KiB
SQL
201 lines
6.2 KiB
SQL
-- Reset schema: drop tables first (children → parents), then recreate.
|
|
|
|
BEGIN TRANSACTION;
|
|
PRAGMA foreign_keys=OFF;
|
|
|
|
-- Drop child tables first to avoid FK constraints
|
|
DROP TABLE IF EXISTS order_in_points;
|
|
DROP TABLE IF EXISTS order_out_points;
|
|
DROP TABLE IF EXISTS orders_in;
|
|
DROP TABLE IF EXISTS orders_out;
|
|
DROP TABLE IF EXISTS email;
|
|
DROP TABLE IF EXISTS subscriptions;
|
|
DROP TABLE IF EXISTS company_user_access;
|
|
DROP TABLE IF EXISTS destinations;
|
|
DROP TABLE IF EXISTS transporters;
|
|
DROP TABLE IF EXISTS clients;
|
|
DROP TABLE IF EXISTS currency;
|
|
DROP TABLE IF EXISTS users;
|
|
|
|
PRAGMA foreign_keys=ON;
|
|
COMMIT;
|
|
|
|
-- Users table
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
contact_name TEXT,
|
|
email TEXT UNIQUE NOT NULL,
|
|
password_hash TEXT NOT NULL,
|
|
phone TEXT,
|
|
register_number TEXT,
|
|
vat TEXT,
|
|
address TEXT,
|
|
logo_filename TEXT,
|
|
terms TEXT,
|
|
first_order_number INTEGER DEFAULT 1,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
otp_code TEXT,
|
|
otp_expiration TIMESTAMPTZ,
|
|
user_role TEXT NOT NULL DEFAULT 'user' CHECK (user_role IN ('user', 'admin', 'company_user')),
|
|
company_id INTEGER DEFAULT 0,
|
|
active INTEGER DEFAULT 1,
|
|
temporary_password INTEGER DEFAULT 0
|
|
);
|
|
|
|
-- Clients table
|
|
CREATE TABLE IF NOT EXISTS clients (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
name TEXT NOT NULL,
|
|
address TEXT,
|
|
register_number TEXT,
|
|
contact_person TEXT,
|
|
phone TEXT,
|
|
email TEXT,
|
|
vat TEXT,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Transporters table
|
|
CREATE TABLE IF NOT EXISTS transporters (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
name TEXT NOT NULL,
|
|
address TEXT,
|
|
register_number TEXT,
|
|
contact_person TEXT,
|
|
phone TEXT,
|
|
email TEXT,
|
|
vat TEXT,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Destinations table
|
|
CREATE TABLE IF NOT EXISTS destinations (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
name TEXT NOT NULL,
|
|
address TEXT,
|
|
latitude TEXT,
|
|
longitude TEXT,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Orders out table
|
|
CREATE TABLE IF NOT EXISTS orders_out (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
order_number TEXT NOT NULL,
|
|
user_id INTEGER NOT NULL,
|
|
client_id INTEGER NOT NULL,
|
|
transporter_id INTEGER NOT NULL,
|
|
products_description TEXT,
|
|
ldb_quantity DOUBLE PRECISION,
|
|
kg_quantity DOUBLE PRECISION,
|
|
track_reg_number TEXT,
|
|
trailer_reg_number TEXT,
|
|
received_price DOUBLE PRECISION,
|
|
paid_price DOUBLE PRECISION,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
order_status TEXT NOT NULL DEFAULT 'active' CHECK (order_status IN ('active', 'inactive', 'cancelled')),
|
|
order_in_number TEXT,
|
|
currency_received TEXT,
|
|
currency_paid TEXT,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(client_id) REFERENCES clients(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(transporter_id) REFERENCES transporters(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Orders in table
|
|
CREATE TABLE IF NOT EXISTS orders_in (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
order_number TEXT NOT NULL,
|
|
user_id INTEGER NOT NULL,
|
|
client_id INTEGER NOT NULL,
|
|
products_description TEXT,
|
|
ldb_quantity DOUBLE PRECISION,
|
|
kg_quantity DOUBLE PRECISION,
|
|
track_reg_number TEXT,
|
|
trailer_reg_number TEXT,
|
|
received_price DOUBLE PRECISION,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
file_name TEXT,
|
|
expenses DOUBLE PRECISION,
|
|
currency_received TEXT,
|
|
currency_expenses TEXT,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(client_id) REFERENCES clients(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Order In Points (loading/unloading) table
|
|
CREATE TABLE IF NOT EXISTS order_in_points (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
order_id INTEGER NOT NULL,
|
|
destination_id INTEGER NOT NULL,
|
|
informatins TEXT,
|
|
point_data TEXT,
|
|
point_hour TEXT,
|
|
point_type TEXT NOT NULL CHECK (point_type IN ('loading', 'unloading')),
|
|
FOREIGN KEY(order_id) REFERENCES orders_in(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Order In Points (loading/unloading) table
|
|
CREATE TABLE IF NOT EXISTS order_out_points (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
order_id INTEGER NOT NULL,
|
|
destination_id INTEGER NOT NULL,
|
|
informatins TEXT,
|
|
point_data TEXT,
|
|
point_hour TEXT,
|
|
point_type TEXT NOT NULL CHECK (point_type IN ('loading', 'unloading')),
|
|
FOREIGN KEY(order_id) REFERENCES orders_out(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Subscriptions table
|
|
CREATE TABLE IF NOT EXISTS subscriptions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
plan TEXT NOT NULL CHECK (plan IN ('first_2_months', 'monthly', 'yearly')),
|
|
start_date TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
end_date TIMESTAMPTZ NOT NULL,
|
|
status TEXT NOT NULL CHECK (status IN ('active', 'expired', 'cancelled')),
|
|
register_number TEXT,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS email (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
smtp_host TEXT,
|
|
smtp_port TEXT,
|
|
smtp_user TEXT,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS company_user_access (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
company_user_id INTEGER NOT NULL,
|
|
clients INTEGER,
|
|
transporters INTEGER,
|
|
destinations INTEGER,
|
|
orders_in INTEGER,
|
|
orders_out INTEGER,
|
|
report INTEGER,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(company_user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS currency (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
name TEXT,
|
|
value DOUBLE PRECISION,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
); |