2026-05-03 02:47:00 -03:00
|
|
|
-- ============================================================
|
2026-05-03 03:51:16 -03:00
|
|
|
-- TopTran — PostgreSQL table creation script
|
|
|
|
|
-- ============================================================
|
|
|
|
|
-- NOTE: The "users" table already exists with the schema below.
|
|
|
|
|
-- Do NOT run the commented block if it already exists.
|
2026-05-03 02:47:00 -03:00
|
|
|
-- ============================================================
|
|
|
|
|
|
2026-05-03 03:51:16 -03:00
|
|
|
-- [EXISTING TABLE — DO NOT RECREATE]
|
|
|
|
|
-- CREATE TABLE IF NOT EXISTS users (
|
|
|
|
|
-- id TEXT PRIMARY KEY,
|
|
|
|
|
-- name TEXT NOT NULL,
|
|
|
|
|
-- email TEXT NOT NULL UNIQUE,
|
|
|
|
|
-- password TEXT NOT NULL,
|
|
|
|
|
-- "createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
|
|
|
-- "updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
|
|
|
|
-- );
|
2026-05-03 02:47:00 -03:00
|
|
|
|
2026-05-03 03:51:16 -03:00
|
|
|
-- ============================================================
|
|
|
|
|
-- Companies
|
|
|
|
|
-- ============================================================
|
|
|
|
|
CREATE TABLE IF NOT EXISTS companies (
|
|
|
|
|
id TEXT PRIMARY KEY,
|
|
|
|
|
name TEXT NOT NULL,
|
|
|
|
|
cost_per_km NUMERIC(10,2) NOT NULL,
|
|
|
|
|
notes TEXT DEFAULT '',
|
|
|
|
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
|
|
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
2026-05-03 02:47:00 -03:00
|
|
|
);
|
|
|
|
|
|
2026-05-03 03:51:16 -03:00
|
|
|
-- ============================================================
|
|
|
|
|
-- Rides
|
|
|
|
|
-- ============================================================
|
|
|
|
|
CREATE TABLE IF NOT EXISTS rides (
|
2026-05-03 02:47:00 -03:00
|
|
|
id TEXT PRIMARY KEY,
|
2026-05-03 03:51:16 -03:00
|
|
|
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
|
company TEXT NOT NULL,
|
2026-05-03 02:47:00 -03:00
|
|
|
km NUMERIC(10,2) NOT NULL,
|
2026-05-03 03:51:16 -03:00
|
|
|
cost_per_km NUMERIC(10,2) NOT NULL,
|
2026-05-03 02:47:00 -03:00
|
|
|
total NUMERIC(10,2) NOT NULL,
|
2026-05-03 03:51:16 -03:00
|
|
|
ride_date TEXT NOT NULL,
|
|
|
|
|
synced SMALLINT DEFAULT 0,
|
|
|
|
|
"createdAt" TIMESTAMPTZ DEFAULT NOW(),
|
|
|
|
|
"updatedAt" TIMESTAMPTZ DEFAULT NOW()
|
2026-05-03 02:47:00 -03:00
|
|
|
);
|
|
|
|
|
|
2026-05-03 03:51:16 -03:00
|
|
|
-- ============================================================
|
|
|
|
|
-- Indexes
|
|
|
|
|
-- ============================================================
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_rides_user_id ON rides(user_id);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_rides_synced ON rides(synced);
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_companies_name ON companies(name);
|