mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 05:21:57 +00:00
235 lines
8.1 KiB
SQL
235 lines
8.1 KiB
SQL
-- USERS
|
|
CREATE TABLE users (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
id_user BIGINT NOT NULL,
|
|
name VARCHAR NOT NULL,
|
|
email VARCHAR NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE UNIQUE INDEX users_id_user_unique ON users (id_user) WHERE deleted_at IS NULL;
|
|
CREATE UNIQUE INDEX users_email_unique ON users (email) WHERE deleted_at IS NULL;
|
|
|
|
-- FLAGS
|
|
CREATE TABLE flags (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
flagable_id BIGINT NOT NULL,
|
|
flagable_type VARCHAR(50) NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE UNIQUE INDEX flags_unique_flagable ON flags (name, flagable_id, flagable_type);
|
|
CREATE INDEX flags_flagable_lookup ON flags (flagable_type, flagable_id);
|
|
|
|
-- PRODUCT CATEGORIES
|
|
CREATE TABLE product_categories (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
code VARCHAR(10) NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX product_categories_name_unique ON product_categories (name) WHERE deleted_at IS NULL;
|
|
CREATE UNIQUE INDEX product_categories_code_unique ON product_categories (code) WHERE deleted_at IS NULL;
|
|
|
|
-- UOM
|
|
CREATE TABLE uoms (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX uoms_name_unique ON uoms (name) WHERE deleted_at IS NULL;
|
|
|
|
-- BANKS
|
|
CREATE TABLE banks (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
alias VARCHAR(5) NOT NULL,
|
|
owner VARCHAR,
|
|
account_number VARCHAR(50) NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX banks_name_unique ON banks (name) WHERE deleted_at IS NULL;
|
|
|
|
-- AREAS
|
|
CREATE TABLE areas (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX areas_name_unique ON areas (name) WHERE deleted_at IS NULL;
|
|
|
|
-- LOCATIONS
|
|
CREATE TABLE locations (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
address TEXT NOT NULL,
|
|
area_id BIGINT NOT NULL REFERENCES areas(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX locations_name_unique ON locations (name) WHERE deleted_at IS NULL;
|
|
|
|
-- KANDANG
|
|
CREATE TABLE kandangs (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
location_id BIGINT NOT NULL REFERENCES locations(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
pic_id BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX kandangs_name_unique ON kandangs (name) WHERE deleted_at IS NULL;
|
|
|
|
-- WAREHOUSES
|
|
CREATE TABLE warehouses (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
type VARCHAR(50) NOT NULL,
|
|
area_id BIGINT NOT NULL REFERENCES areas(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
location_id BIGINT REFERENCES locations(id) ON DELETE SET NULL ON UPDATE CASCADE,
|
|
kandang_id BIGINT REFERENCES kandangs(id) ON DELETE SET NULL ON UPDATE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX warehouses_name_unique ON warehouses (name) WHERE deleted_at IS NULL;
|
|
|
|
-- CUSTOMERS
|
|
CREATE TABLE customers (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
pic_id BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE,
|
|
type VARCHAR(50) NOT NULL,
|
|
address TEXT NOT NULL,
|
|
phone VARCHAR(20) NOT NULL,
|
|
email VARCHAR NOT NULL,
|
|
account_number VARCHAR(50) NOT NULL,
|
|
balance NUMERIC(15,3) DEFAULT 0,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX customers_name_unique ON customers (name) WHERE deleted_at IS NULL;
|
|
|
|
-- NONSTOCK
|
|
CREATE TABLE nonstocks (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
uom_id BIGINT NOT NULL REFERENCES uoms(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX nonstocks_name_unique ON nonstocks (name) WHERE deleted_at IS NULL;
|
|
|
|
-- FCR
|
|
CREATE TABLE fcrs (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX fcrs_name_unique ON fcrs (name) WHERE deleted_at IS NULL;
|
|
|
|
CREATE TABLE fcr_standards (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
fcr_id BIGINT NOT NULL REFERENCES fcrs(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
weight NUMERIC(15,3) NOT NULL,
|
|
fcr_number NUMERIC(15,3) NOT NULL,
|
|
mortality NUMERIC(15,3) NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
|
|
-- SUPPLIERS
|
|
CREATE TABLE suppliers (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
alias VARCHAR(5) NOT NULL,
|
|
pic VARCHAR NOT NULL,
|
|
type VARCHAR(50) NOT NULL,
|
|
category VARCHAR(20) NOT NULL,
|
|
hatchery VARCHAR,
|
|
phone VARCHAR(20) NOT NULL,
|
|
email VARCHAR NOT NULL,
|
|
address TEXT NOT NULL,
|
|
npwp VARCHAR(50),
|
|
account_number VARCHAR(50),
|
|
balance NUMERIC(15,3) DEFAULT 0,
|
|
due_date INT NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX suppliers_name_unique ON suppliers (name) WHERE deleted_at IS NULL;
|
|
|
|
CREATE TABLE nonstock_suppliers (
|
|
nonstock_id BIGINT NOT NULL REFERENCES nonstocks(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
supplier_id BIGINT NOT NULL REFERENCES suppliers(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
PRIMARY KEY (nonstock_id, supplier_id)
|
|
);
|
|
|
|
-- PRODUCTS
|
|
CREATE TABLE products (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
brand VARCHAR NOT NULL,
|
|
sku VARCHAR(100),
|
|
uom_id BIGINT NOT NULL REFERENCES uoms(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
product_category_id BIGINT NOT NULL REFERENCES product_categories(id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
product_price NUMERIC(15,3) NOT NULL,
|
|
selling_price NUMERIC(15,3),
|
|
tax NUMERIC(15,3),
|
|
expiry_period INT,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
CREATE UNIQUE INDEX products_name_unique ON products (name) WHERE deleted_at IS NULL;
|
|
CREATE UNIQUE INDEX products_sku_unique ON products (sku) WHERE deleted_at IS NULL;
|
|
|
|
CREATE TABLE product_suppliers (
|
|
product_id BIGINT NOT NULL REFERENCES products(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
supplier_id BIGINT NOT NULL REFERENCES suppliers(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
PRIMARY KEY (product_id, supplier_id)
|
|
);
|
|
|
|
-- PROJECTS
|
|
CREATE TABLE projects (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|