128 lines
5.0 KiB
SQL
128 lines
5.0 KiB
SQL
SET XACT_ABORT ON;
|
|
BEGIN TRANSACTION;
|
|
|
|
IF OBJECT_ID('dbo.project_device_endpoint', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.project_device_endpoint (
|
|
device_id varchar(64) NOT NULL PRIMARY KEY,
|
|
device_type varchar(32) NOT NULL,
|
|
adapter_type varchar(64) NOT NULL,
|
|
endpoint_ip varchar(128) NOT NULL,
|
|
endpoint_port int NOT NULL,
|
|
protocol_station int NULL,
|
|
enabled_flag bit NOT NULL
|
|
CONSTRAINT df_project_device_endpoint_enabled DEFAULT (0),
|
|
state_version bigint NOT NULL,
|
|
updated_time datetime2(3) NOT NULL,
|
|
CONSTRAINT ck_project_device_endpoint_port CHECK (
|
|
endpoint_port > 0 AND endpoint_port <= 65535),
|
|
CONSTRAINT ck_project_device_endpoint_station CHECK (
|
|
protocol_station IS NULL OR protocol_station >= 0),
|
|
CONSTRAINT ck_project_device_endpoint_version CHECK (state_version >= 0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.project_protocol_profile', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.project_protocol_profile (
|
|
device_id varchar(64) NOT NULL,
|
|
profile_version bigint NOT NULL,
|
|
device_type varchar(32) NOT NULL,
|
|
adapter_type varchar(64) NOT NULL,
|
|
corpus_manifest_hash varchar(128) NOT NULL,
|
|
profile_json nvarchar(max) NOT NULL,
|
|
active_flag bit NOT NULL
|
|
CONSTRAINT df_project_protocol_profile_active DEFAULT (0),
|
|
created_time datetime2(3) NOT NULL,
|
|
activated_time datetime2(3) NULL,
|
|
CONSTRAINT pk_project_protocol_profile PRIMARY KEY (
|
|
device_id, profile_version),
|
|
CONSTRAINT fk_project_protocol_profile_endpoint FOREIGN KEY (device_id)
|
|
REFERENCES dbo.project_device_endpoint(device_id),
|
|
CONSTRAINT ck_project_protocol_profile_version CHECK (
|
|
profile_version > 0)
|
|
);
|
|
END;
|
|
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM sys.indexes
|
|
WHERE object_id = OBJECT_ID('dbo.project_protocol_profile')
|
|
AND name = 'uk_project_protocol_profile_active')
|
|
BEGIN
|
|
CREATE UNIQUE INDEX uk_project_protocol_profile_active
|
|
ON dbo.project_protocol_profile(device_id)
|
|
WHERE active_flag = 1;
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.project_plc_address', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.project_plc_address (
|
|
device_id varchar(64) NOT NULL,
|
|
profile_version bigint NOT NULL,
|
|
register_name varchar(64) NOT NULL,
|
|
plc_address varchar(64) NOT NULL,
|
|
value_type varchar(32) NOT NULL,
|
|
semantic_code varchar(128) NOT NULL,
|
|
write_order int NULL,
|
|
CONSTRAINT pk_project_plc_address PRIMARY KEY (
|
|
device_id, profile_version, register_name),
|
|
CONSTRAINT fk_project_plc_address_profile FOREIGN KEY (
|
|
device_id, profile_version)
|
|
REFERENCES dbo.project_protocol_profile(
|
|
device_id, profile_version),
|
|
CONSTRAINT uk_project_plc_address_owner UNIQUE (
|
|
device_id, profile_version, plc_address),
|
|
CONSTRAINT ck_project_plc_address_order CHECK (
|
|
write_order IS NULL OR write_order > 0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.project_protocol_capability_evidence', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.project_protocol_capability_evidence (
|
|
evidence_id varchar(128) NOT NULL PRIMARY KEY,
|
|
device_id varchar(64) NOT NULL,
|
|
profile_version bigint NOT NULL,
|
|
capability_code varchar(64) NOT NULL,
|
|
corpus_manifest_hash varchar(128) NOT NULL,
|
|
passing_test_run_id varchar(128) NOT NULL,
|
|
git_commit varchar(128) NOT NULL,
|
|
regression_passed_flag bit NOT NULL,
|
|
approved_by varchar(128) NOT NULL,
|
|
approved_time datetime2(3) NOT NULL,
|
|
expires_time datetime2(3) NOT NULL,
|
|
created_time datetime2(3) NOT NULL,
|
|
CONSTRAINT fk_project_capability_evidence_profile FOREIGN KEY (
|
|
device_id, profile_version)
|
|
REFERENCES dbo.project_protocol_profile(
|
|
device_id, profile_version),
|
|
CONSTRAINT uk_project_capability_evidence_binding UNIQUE (
|
|
device_id, profile_version, capability_code,
|
|
corpus_manifest_hash, passing_test_run_id),
|
|
CONSTRAINT ck_project_capability_evidence_expiry CHECK (
|
|
expires_time > approved_time)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.project_wms_mapping', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.project_wms_mapping (
|
|
mapping_id varchar(128) NOT NULL PRIMARY KEY,
|
|
external_operation varchar(64) NOT NULL,
|
|
external_order_type varchar(64) NULL,
|
|
canonical_order_type varchar(32) NOT NULL,
|
|
source_field varchar(128) NOT NULL,
|
|
destination_field varchar(128) NOT NULL,
|
|
callback_url_config_key varchar(128) NULL,
|
|
active_flag bit NOT NULL
|
|
CONSTRAINT df_project_wms_mapping_active DEFAULT (0),
|
|
state_version bigint NOT NULL,
|
|
updated_time datetime2(3) NOT NULL,
|
|
CONSTRAINT uk_project_wms_mapping_operation UNIQUE (
|
|
external_operation, external_order_type),
|
|
CONSTRAINT ck_project_wms_mapping_version CHECK (state_version >= 0)
|
|
);
|
|
END;
|
|
|
|
COMMIT TRANSACTION;
|