approval_request

-1 rows


Columns

Column Type Size Nulls Auto Default Children Parents Comments
approval_request_id uuid 2147483647 null
task_id uuid 2147483647 null
task.task_id fk_approval_request_task_company R
company_id uuid 2147483647 null
user_account.company_id fk_approval_request_requester_company R
task.company_id fk_approval_request_task_company R
target_task_version int8 19 null
target_content_revision int8 19 null
approved_task_version int8 19 null
target_fingerprint varchar 64 null
status varchar 20 null
ai_snapshot_json text 2147483647 null
hr_snapshot_json text 2147483647 null
changed_fields_json text 2147483647 null
source_versions_json text 2147483647 null
requested_by uuid 2147483647 null
user_account.user_id fk_approval_request_requester_company R
requested_at timestamptz 35,6 null
decided_by uuid 2147483647 null
user_account.user_id fk_approval_request_decider_company R
decided_at timestamptz 35,6 null
decision_reason varchar 500 null
invalidated_at timestamptz 35,6 null
invalidation_reason varchar 500 null
created_at timestamptz 35,6 null
updated_at timestamptz 35,6 null
version int8 19 0

Indexes

Constraint Name Type Sort Column(s)
pk_approval_request Primary key Asc approval_request_id
idx_approval_request_task_status Performance Asc/Asc/Asc/Asc company_id + task_id + status + requested_at
uq_approval_request_id_task_company Must be unique Asc/Asc/Asc approval_request_id + task_id + company_id

Check Constraints

Constraint Name Constraint
ck_approval_request_updated_at ((updated_at >= created_at))
ck_approval_request_target_version ((target_task_version >= 0))
ck_approval_request_approved_task_version ((((status)::text <> 'APPROVED'::text) OR (approved_task_version IS NOT NULL)))
ck_approval_request_hr_snapshot_not_blank ((char_length(TRIM(BOTH FROM hr_snapshot_json)) > 0))
ck_approval_request_fingerprint_length ((char_length((target_fingerprint)::text) = 64))
ck_approval_request_status (((status)::text = ANY ((ARRAY['PENDING'::character varying, 'APPROVED'::character varying, 'REJECTED'::character varying, 'INVALIDATED'::character varying])::text[])))
ck_approval_request_changed_fields_not_blank ((char_length(TRIM(BOTH FROM changed_fields_json)) > 0))
ck_approval_request_approved_version (((approved_task_version IS NULL) OR (approved_task_version >= target_task_version)))
ck_approval_request_source_versions_not_blank ((char_length(TRIM(BOTH FROM source_versions_json)) > 0))
ck_approval_request_decision (((((status)::text = 'PENDING'::text) AND (decided_by IS NULL) AND (decided_at IS NULL) AND (approved_task_version IS NULL) AND (invalidated_at IS NULL)) OR (((status)::text = ANY ((ARRAY['APPROVED'::character varying, 'REJECTED'::character varying])::text[])) AND (decided_by IS NOT NULL) AND (decided_at IS NOT NULL) AND (invalidated_at IS NULL)) OR (((status)::text = 'INVALIDATED'::text) AND (invalidated_at IS NOT NULL))))
ck_approval_request_target_revision ((target_content_revision >= 0))
ck_approval_request_version ((version >= 0))
ck_approval_request_fingerprint_lowercase (((target_fingerprint)::text = lower((target_fingerprint)::text)))

Relationships