@@ -15700,145 +15700,4 @@ ALTER TABLE customizablefieldvalue_history OWNER TO sormas_user;
1570015700
1570115701INSERT INTO schema_version (version_number, comment) VALUES (619, '#13828 - Add history tables for customizable fields');
1570215702
15703-
15704- -- #13828 - Customizable Fields
15705-
15706- CREATE TABLE IF NOT EXISTS customizablefieldmetadata (
15707- id bigint NOT NULL,
15708- uuid character varying(36) NOT NULL UNIQUE,
15709- changeDate timestamp without time zone NOT NULL DEFAULT NOW(),
15710- creationDate timestamp without time zone NOT NULL DEFAULT NOW(),
15711- deleted boolean NOT NULL DEFAULT false,
15712- deletionreason varchar(255),
15713- otherdeletionreason text,
15714-
15715- -- Core field metadata
15716- name character varying(512) NOT NULL,
15717- description text,
15718- fieldType character varying(50) NOT NULL, -- TEXT, DATE, COMBOBOX, YES_NO_UNKNOWN, CHECKBOX_LIST, RADIO_BUTTON_LIST
15719- defaultValue text,
15720-
15721- -- Constraints
15722- mandatory boolean NOT NULL DEFAULT false,
15723- readOnly boolean NOT NULL DEFAULT false,
15724- active boolean NOT NULL DEFAULT true,
15725-
15726- -- Context and UI placement
15727- contextClass character varying(256) NOT NULL,
15728- uiGroup character varying(256),
15729- uiLinePosition integer,
15730- uiLineWeight float4,
15731-
15732- -- Complex JSON-serialized properties
15733- visibilityRestrictions jsonb,
15734- customProperties jsonb,
15735- translations jsonb,
15736-
15737- change_user_id bigint,
15738- sys_period tstzrange NOT NULL,
15739-
15740- PRIMARY KEY (id),
15741- UNIQUE(name, contextClass)
15742- );
15743-
15744- CREATE INDEX idx_customizablefieldmetadata_uuid
15745- ON customizablefieldmetadata (uuid);
15746- CREATE INDEX idx_customizablefieldmetadata_contextClass
15747- ON customizablefieldmetadata (contextClass);
15748- CREATE INDEX idx_customizablefieldmetadata_uiGroup
15749- ON customizablefieldmetadata (uiGroup);
15750- CREATE INDEX idx_customizablefieldmetadata_active
15751- ON customizablefieldmetadata (active);
15752- CREATE INDEX idx_customizablefieldmetadata_deleted
15753- ON customizablefieldmetadata (deleted);
15754-
15755- ALTER TABLE customizablefieldmetadata OWNER TO sormas_user;
15756- ALTER TABLE customizablefieldmetadata ADD CONSTRAINT fk_change_user_id FOREIGN KEY (change_user_id) REFERENCES users (id);
15757- ALTER INDEX idx_customizablefieldmetadata_uuid OWNER TO sormas_user;
15758- ALTER INDEX idx_customizablefieldmetadata_contextClass OWNER TO sormas_user;
15759- ALTER INDEX idx_customizablefieldmetadata_uiGroup OWNER TO sormas_user;
15760- ALTER INDEX idx_customizablefieldmetadata_active OWNER TO sormas_user;
15761- ALTER INDEX idx_customizablefieldmetadata_deleted OWNER TO sormas_user;
15762-
15763- -- CustomizableFieldMetadata history tables
15764- CREATE TABLE customizablefieldmetadata_history (LIKE customizablefieldmetadata);
15765- CREATE TRIGGER versioning_trigger
15766- BEFORE INSERT OR UPDATE OR DELETE ON customizablefieldmetadata
15767- FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'customizablefieldmetadata_history', true);
15768- ALTER TABLE customizablefieldmetadata_history OWNER TO sormas_user;
15769-
15770- DROP TRIGGER IF EXISTS delete_history_trigger_customizablefieldmetadata ON customizablefieldmetadata;
15771- CREATE TRIGGER delete_history_trigger_customizablefieldmetadata
15772- AFTER DELETE ON customizablefieldmetadata
15773- FOR EACH ROW EXECUTE PROCEDURE delete_history_trigger('customizablefieldmetadata_history', 'id');
15774-
15775- -- Create CustomizableFieldValue table
15776- CREATE TABLE IF NOT EXISTS customizablefieldvalue (
15777- id bigint NOT NULL,
15778- uuid character varying(36) NOT NULL UNIQUE,
15779- changeDate timestamp(3) NOT NULL DEFAULT NOW(),
15780- creationDate timestamp(3) NOT NULL DEFAULT NOW(),
15781- deleted boolean NOT NULL DEFAULT false,
15782- deletionreason varchar(255),
15783- otherdeletionreason text,
15784-
15785- -- Fkey to metadata
15786- customizablefieldmetadata_id bigint NOT NULL REFERENCES customizablefieldmetadata(id) ON DELETE CASCADE,
15787-
15788- -- Generic entity reference
15789- entityUuid character varying(36) NOT NULL,
15790- contextClass character varying(256) NOT NULL,
15791-
15792- -- Value storage (text for all types, type conversion happens in service)
15793- value text,
15794-
15795- change_user_id bigint,
15796- sys_period tstzrange NOT NULL,
15797-
15798- PRIMARY KEY (id),
15799- UNIQUE(customizablefieldmetadata_id, entityUuid, contextClass)
15800- );
15801-
15802- CREATE INDEX idx_customizablefieldvalue_uuid
15803- ON customizablefieldvalue (uuid);
15804- CREATE INDEX idx_customizablefieldvalue_entityUuid
15805- ON customizablefieldvalue (entityUuid);
15806- CREATE INDEX idx_customizablefieldvalue_contextEntity
15807- ON customizablefieldvalue (contextClass, entityUuid);
15808- CREATE INDEX idx_customizablefieldvalue_fieldMetadata
15809- ON customizablefieldvalue (customizablefieldmetadata_id);
15810- CREATE INDEX idx_customizablefieldvalue_deleted
15811- ON customizablefieldvalue (deleted);
15812-
15813- ALTER TABLE customizablefieldvalue OWNER TO sormas_user;
15814-
15815- ALTER TABLE customizablefieldvalue
15816- ADD CONSTRAINT fk_customizablefieldvalue_metadata
15817- FOREIGN KEY (customizablefieldmetadata_id)
15818- REFERENCES customizablefieldmetadata(id)
15819- ON DELETE CASCADE;
15820-
15821- ALTER TABLE customizablefieldvalue ADD CONSTRAINT fk_change_user_id FOREIGN KEY (change_user_id) REFERENCES users (id);
15822-
15823- ALTER INDEX idx_customizablefieldvalue_uuid OWNER TO sormas_user;
15824- ALTER INDEX idx_customizablefieldvalue_entityUuid OWNER TO sormas_user;
15825- ALTER INDEX idx_customizablefieldvalue_contextEntity OWNER TO sormas_user;
15826- ALTER INDEX idx_customizablefieldvalue_fieldMetadata OWNER TO sormas_user;
15827- ALTER INDEX idx_customizablefieldvalue_deleted OWNER TO sormas_user;
15828-
15829- -- CustomizableFieldValue history tables
15830- CREATE TABLE customizablefieldvalue_history (LIKE customizablefieldvalue);
15831- CREATE TRIGGER versioning_trigger
15832- BEFORE INSERT OR UPDATE OR DELETE ON customizablefieldvalue
15833- FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'customizablefieldvalue_history', true);
15834-
15835- DROP TRIGGER IF EXISTS delete_history_trigger_customizablefieldvalue ON customizablefieldvalue;
15836- CREATE TRIGGER delete_history_trigger_customizablefieldvalue
15837- AFTER DELETE ON customizablefieldvalue
15838- FOR EACH ROW EXECUTE PROCEDURE delete_history_trigger('customizablefieldvalue_history', 'id');
15839-
15840- ALTER TABLE customizablefieldvalue_history OWNER TO sormas_user;
15841-
15842- INSERT INTO schema_version (version_number, comment) VALUES (619, '#13828 - Add history tables for customizable fields');
15843-
1584415703-- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. ***
0 commit comments