forked from wangziqi/ruoyi-vue-pro
fix(education): control content node visibility
This commit is contained in:
@@ -6,14 +6,18 @@ ALTER TABLE education_content_node
|
||||
ADD COLUMN authoring_version INTEGER NOT NULL DEFAULT 0;
|
||||
|
||||
UPDATE education_content_node
|
||||
SET publication_status = CASE WHEN is_active THEN 'ACTIVE' ELSE 'ARCHIVED' END;
|
||||
SET publication_status = CASE WHEN is_active AND NOT is_hidden THEN 'ACTIVE' ELSE 'ARCHIVED' END,
|
||||
is_active = is_active AND NOT is_hidden,
|
||||
is_hidden = NOT (is_active AND NOT is_hidden);
|
||||
|
||||
ALTER TABLE education_content_node
|
||||
ADD CONSTRAINT ck_education_content_node_publication_status
|
||||
CHECK (publication_status IN ('DRAFT', 'ACTIVE', 'ARCHIVED')),
|
||||
ADD CONSTRAINT ck_education_content_node_authoring_version CHECK (authoring_version >= 0),
|
||||
ADD CONSTRAINT ck_education_content_node_lifecycle_consistent
|
||||
CHECK (is_active = (publication_status = 'ACTIVE'));
|
||||
ADD CONSTRAINT ck_education_content_node_lifecycle_consistent CHECK (
|
||||
(publication_status = 'ACTIVE' AND is_active AND NOT is_hidden) OR
|
||||
(publication_status IN ('DRAFT', 'ARCHIVED') AND NOT is_active AND is_hidden)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN education_content_node.publication_status IS '内容节点发布状态:DRAFT、ACTIVE、ARCHIVED';
|
||||
COMMENT ON COLUMN education_content_node.authoring_version IS '内容节点创作和生命周期共用的乐观锁版本';
|
||||
@@ -47,11 +51,13 @@ RETURNS TRIGGER LANGUAGE plpgsql SET search_path = pg_catalog, pg_temp AS $$
|
||||
BEGIN
|
||||
IF TG_OP = 'INSERT' THEN
|
||||
IF NEW.scope = 'PUBLIC' THEN
|
||||
IF NEW.publication_status <> 'ACTIVE' OR NOT NEW.is_active OR NEW.authoring_version <> 0 THEN
|
||||
IF NEW.publication_status <> 'ACTIVE' OR NOT NEW.is_active OR NEW.is_hidden
|
||||
OR NEW.authoring_version <> 0 THEN
|
||||
RAISE EXCEPTION 'PUBLIC content node writes are not managed by tenant authoring' USING ERRCODE = '23514';
|
||||
END IF;
|
||||
ELSIF NEW.scope = 'TENANT_OWNED' AND
|
||||
(NEW.publication_status <> 'DRAFT' OR NEW.is_active OR NEW.authoring_version <> 0) THEN
|
||||
(NEW.publication_status <> 'DRAFT' OR NEW.is_active OR NOT NEW.is_hidden
|
||||
OR NEW.authoring_version <> 0) THEN
|
||||
RAISE EXCEPTION 'tenant content nodes must start in DRAFT' USING ERRCODE = '23514';
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
|
||||
Reference in New Issue
Block a user