Files
lingniu-vehicle-ingest/vehicle-data-platform/deploy/migrations/012_business_scope_projection.sql

67 lines
2.8 KiB
SQL

CREATE TABLE IF NOT EXISTS business_scope_sync_run (
run_id CHAR(32) NOT NULL PRIMARY KEY,
source_system VARCHAR(32) NOT NULL,
source_version VARCHAR(96) NOT NULL,
status VARCHAR(24) NOT NULL,
candidate_count INT UNSIGNED NOT NULL DEFAULT 0,
accepted_count INT UNSIGNED NOT NULL DEFAULT 0,
rejected_count INT UNSIGNED NOT NULL DEFAULT 0,
source_checksum CHAR(64) NOT NULL,
started_at DATETIME(3) NOT NULL,
finished_at DATETIME(3) NOT NULL,
error_message VARCHAR(512) NOT NULL DEFAULT '',
INDEX idx_business_scope_run_finished (finished_at, status),
INDEX idx_business_scope_run_version (source_version)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS business_customer_vehicle_scope (
source_version VARCHAR(96) NOT NULL,
customer_id BIGINT NOT NULL,
vin VARCHAR(64) NOT NULL,
vehicle_id BIGINT NOT NULL,
contract_id BIGINT NULL,
contract_code VARCHAR(255) NOT NULL DEFAULT '',
plate_number VARCHAR(64) NOT NULL DEFAULT '',
project_name VARCHAR(255) NOT NULL DEFAULT '',
operation_status VARCHAR(32) NOT NULL DEFAULT '',
scope_start_at DATETIME(3) NOT NULL,
source_updated_at DATETIME(3) NULL,
published_at DATETIME(3) NOT NULL,
PRIMARY KEY (source_version, customer_id, vin),
UNIQUE KEY uk_business_scope_version_vehicle (source_version, vehicle_id),
INDEX idx_business_scope_customer (customer_id, source_version, vin),
INDEX idx_business_scope_vin (vin, source_version, customer_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS business_scope_rejection (
run_id CHAR(32) NOT NULL,
row_number INT UNSIGNED NOT NULL,
vehicle_id BIGINT NULL,
vin VARCHAR(64) NOT NULL DEFAULT '',
customer_id BIGINT NULL,
contract_id BIGINT NULL,
reason_code VARCHAR(64) NOT NULL,
created_at DATETIME(3) NOT NULL,
PRIMARY KEY (run_id, row_number),
INDEX idx_business_scope_rejection_reason (reason_code, created_at),
CONSTRAINT fk_business_scope_rejection_run
FOREIGN KEY (run_id) REFERENCES business_scope_sync_run(run_id)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS business_scope_state (
id TINYINT UNSIGNED NOT NULL PRIMARY KEY,
active_version VARCHAR(96) NULL,
source_checksum CHAR(64) NULL,
candidate_count INT UNSIGNED NOT NULL DEFAULT 0,
accepted_count INT UNSIGNED NOT NULL DEFAULT 0,
rejected_count INT UNSIGNED NOT NULL DEFAULT 0,
generated_at DATETIME(3) NULL,
published_at DATETIME(3) NULL,
last_success_at DATETIME(3) NULL,
CONSTRAINT chk_business_scope_singleton CHECK (id = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO business_scope_state(id) VALUES (1)
ON DUPLICATE KEY UPDATE id = VALUES(id);