feat(wcs): persist transport orders and workflows
This commit is contained in:
85
sql/wcs/V001__wcs_task_foundation.sql
Normal file
85
sql/wcs/V001__wcs_task_foundation.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
SET XACT_ABORT ON;
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID('dbo.wcs_transport_order', 'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.wcs_transport_order (
|
||||
order_id varchar(64) NOT NULL PRIMARY KEY,
|
||||
external_request_id varchar(128) NOT NULL,
|
||||
order_type varchar(32) NOT NULL,
|
||||
load_id varchar(128) NULL,
|
||||
source_code varchar(128) NOT NULL,
|
||||
destination_code varchar(128) NOT NULL,
|
||||
priority int NOT NULL,
|
||||
order_state varchar(32) NOT NULL,
|
||||
workflow_id varchar(64) NULL,
|
||||
result_code varchar(64) NULL,
|
||||
state_reason nvarchar(512) NULL,
|
||||
state_version bigint NOT NULL,
|
||||
created_time datetime2(3) NOT NULL,
|
||||
updated_time datetime2(3) NOT NULL,
|
||||
CONSTRAINT uk_wcs_transport_order_external_request
|
||||
UNIQUE (external_request_id)
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID('dbo.wcs_workflow_instance', 'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.wcs_workflow_instance (
|
||||
workflow_id varchar(64) NOT NULL PRIMARY KEY,
|
||||
order_id varchar(64) NOT NULL,
|
||||
workflow_state varchar(32) NOT NULL,
|
||||
state_version bigint NOT NULL,
|
||||
CONSTRAINT fk_wcs_workflow_order FOREIGN KEY (order_id)
|
||||
REFERENCES dbo.wcs_transport_order(order_id),
|
||||
CONSTRAINT uk_wcs_workflow_order UNIQUE (order_id)
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID('dbo.wcs_task_step', 'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.wcs_task_step (
|
||||
step_id varchar(128) NOT NULL PRIMARY KEY,
|
||||
workflow_id varchar(64) NOT NULL,
|
||||
step_key varchar(64) NOT NULL,
|
||||
step_type varchar(32) NOT NULL,
|
||||
required_flag bit NOT NULL,
|
||||
step_state varchar(32) NOT NULL,
|
||||
reason_code varchar(128) NULL,
|
||||
vehicle_id varchar(64) NULL,
|
||||
state_version bigint NOT NULL,
|
||||
CONSTRAINT fk_wcs_task_step_workflow FOREIGN KEY (workflow_id)
|
||||
REFERENCES dbo.wcs_workflow_instance(workflow_id),
|
||||
CONSTRAINT uk_wcs_task_step_key UNIQUE (workflow_id, step_key)
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID('dbo.wcs_task_dependency', 'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.wcs_task_dependency (
|
||||
workflow_id varchar(64) NOT NULL,
|
||||
step_key varchar(64) NOT NULL,
|
||||
depends_on_step_key varchar(64) NOT NULL,
|
||||
CONSTRAINT pk_wcs_task_dependency PRIMARY KEY (
|
||||
workflow_id, step_key, depends_on_step_key),
|
||||
CONSTRAINT fk_wcs_task_dependency_workflow FOREIGN KEY (workflow_id)
|
||||
REFERENCES dbo.wcs_workflow_instance(workflow_id)
|
||||
);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID('dbo.wcs_domain_event', 'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.wcs_domain_event (
|
||||
event_id varchar(128) NOT NULL PRIMARY KEY,
|
||||
aggregate_id varchar(64) NOT NULL,
|
||||
event_sequence bigint NOT NULL,
|
||||
event_type varchar(64) NOT NULL,
|
||||
occurred_time datetime2(3) NOT NULL,
|
||||
payload_json nvarchar(max) NULL,
|
||||
published_flag bit NOT NULL CONSTRAINT df_wcs_domain_event_published DEFAULT (0),
|
||||
CONSTRAINT uk_wcs_domain_event_sequence
|
||||
UNIQUE (aggregate_id, event_sequence)
|
||||
);
|
||||
END;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
19
sql/wcs/verify_V001__wcs_task_foundation.sql
Normal file
19
sql/wcs/verify_V001__wcs_task_foundation.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT name AS table_name
|
||||
FROM sys.tables
|
||||
WHERE name IN (
|
||||
'wcs_transport_order',
|
||||
'wcs_workflow_instance',
|
||||
'wcs_task_step',
|
||||
'wcs_task_dependency',
|
||||
'wcs_domain_event'
|
||||
)
|
||||
ORDER BY name;
|
||||
|
||||
SELECT i.name AS unique_constraint_name
|
||||
FROM sys.indexes i
|
||||
JOIN sys.tables t ON t.object_id = i.object_id
|
||||
WHERE t.name = 'wcs_transport_order'
|
||||
AND i.name = 'uk_wcs_transport_order_external_request'
|
||||
AND i.is_unique = 1;
|
||||
Reference in New Issue
Block a user