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;