Files
Aislo/B08_wf5_Quantity/B08_wf5_Quantity_Database_Quantity.py
T

27 lines
1.9 KiB
Python

QUANTITY_DDL = (
"""CREATE TABLE IF NOT EXISTS b08_work_breakdown (
id CHAR(36) PRIMARY KEY, project_id CHAR(36) NOT NULL, parent_id CHAR(36) NULL,
wbs_code VARCHAR(50) NOT NULL, name VARCHAR(255) NOT NULL, level_no INT NOT NULL,
sort_order INT NOT NULL DEFAULT 0, UNIQUE KEY uq_b08_wbs(project_id,wbs_code))""",
"""CREATE TABLE IF NOT EXISTS b08_design_quantity_items (
id CHAR(36) PRIMARY KEY, project_id CHAR(36) NOT NULL, wbs_id CHAR(36) NOT NULL,
reference_type VARCHAR(20) NOT NULL, reference_id CHAR(36) NOT NULL,
item_name VARCHAR(255) NOT NULL, specification VARCHAR(255) NOT NULL DEFAULT '', unit VARCHAR(30) NOT NULL,
design_quantity DECIMAL(20,6) NULL, adjusted_quantity DECIMAL(20,6) NULL,
confirmed_quantity DECIMAL(20,6) NULL, adjustment_reason VARCHAR(500) NULL,
procurement_type VARCHAR(20) NOT NULL DEFAULT 'PRIVATE', excluded TINYINT(1) NOT NULL DEFAULT 0,
status VARCHAR(20) NOT NULL DEFAULT 'DRAFT', sort_order INT NOT NULL DEFAULT 0,
updated_by BIGINT NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY ix_b08_design_qty(project_id,wbs_id))""",
"""CREATE TABLE IF NOT EXISTS b08_quantity_revisions (
id BIGINT AUTO_INCREMENT PRIMARY KEY, quantity_item_id CHAR(36) NOT NULL,
revision_no INT NOT NULL, before_json LONGTEXT NOT NULL, after_json LONGTEXT NOT NULL,
change_reason VARCHAR(500) NOT NULL, changed_by BIGINT NULL,
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uq_b08_qty_revision(quantity_item_id,revision_no))""",
"""CREATE TABLE IF NOT EXISTS b08_quantity_confirmations (
id BIGINT AUTO_INCREMENT PRIMARY KEY, project_id CHAR(36) NOT NULL,
quantity_version INT NOT NULL, input_hash CHAR(64) NOT NULL,
confirmed_by BIGINT NULL, confirmed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uq_b08_qty_confirm(project_id,quantity_version))""",
)