generalbots/src/core/shared/schema/compliance.rs

312 lines
9.2 KiB
Rust

use crate::core::shared::schema::core::{organizations, bots};
diesel::table! {
legal_documents (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
slug -> Varchar,
title -> Varchar,
content -> Text,
document_type -> Varchar,
version -> Varchar,
effective_date -> Timestamptz,
is_active -> Bool,
requires_acceptance -> Bool,
metadata -> Jsonb,
created_by -> Nullable<Uuid>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
legal_document_versions (id) {
id -> Uuid,
document_id -> Uuid,
version -> Varchar,
content -> Text,
change_summary -> Nullable<Text>,
created_by -> Nullable<Uuid>,
created_at -> Timestamptz,
}
}
diesel::table! {
cookie_consents (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
user_id -> Nullable<Uuid>,
session_id -> Nullable<Varchar>,
ip_address -> Nullable<Varchar>,
user_agent -> Nullable<Text>,
country_code -> Nullable<Varchar>,
consent_necessary -> Bool,
consent_analytics -> Bool,
consent_marketing -> Bool,
consent_preferences -> Bool,
consent_functional -> Bool,
consent_version -> Varchar,
consent_given_at -> Timestamptz,
consent_updated_at -> Timestamptz,
consent_withdrawn_at -> Nullable<Timestamptz>,
created_at -> Timestamptz,
}
}
diesel::table! {
consent_history (id) {
id -> Uuid,
consent_id -> Uuid,
action -> Varchar,
previous_consents -> Jsonb,
new_consents -> Jsonb,
ip_address -> Nullable<Varchar>,
user_agent -> Nullable<Text>,
created_at -> Timestamptz,
}
}
diesel::table! {
legal_acceptances (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
user_id -> Uuid,
document_id -> Uuid,
document_version -> Varchar,
accepted_at -> Timestamptz,
ip_address -> Nullable<Varchar>,
user_agent -> Nullable<Text>,
}
}
diesel::table! {
data_deletion_requests (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
user_id -> Uuid,
request_type -> Varchar,
status -> Varchar,
reason -> Nullable<Text>,
requested_at -> Timestamptz,
scheduled_for -> Nullable<Timestamptz>,
completed_at -> Nullable<Timestamptz>,
confirmation_token -> Varchar,
confirmed_at -> Nullable<Timestamptz>,
processed_by -> Nullable<Uuid>,
notes -> Nullable<Text>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
data_export_requests (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
user_id -> Uuid,
status -> Varchar,
format -> Varchar,
include_sections -> Jsonb,
requested_at -> Timestamptz,
started_at -> Nullable<Timestamptz>,
completed_at -> Nullable<Timestamptz>,
file_url -> Nullable<Text>,
file_size -> Nullable<Int4>,
expires_at -> Nullable<Timestamptz>,
error_message -> Nullable<Text>,
created_at -> Timestamptz,
}
}
diesel::table! {
compliance_checks (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
framework -> Varchar,
control_id -> Varchar,
control_name -> Varchar,
status -> Varchar,
score -> Numeric,
checked_at -> Timestamptz,
checked_by -> Nullable<Uuid>,
evidence -> Jsonb,
notes -> Nullable<Text>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
compliance_issues (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
check_id -> Nullable<Uuid>,
severity -> Varchar,
title -> Varchar,
description -> Text,
remediation -> Nullable<Text>,
due_date -> Nullable<Timestamptz>,
assigned_to -> Nullable<Uuid>,
status -> Varchar,
resolved_at -> Nullable<Timestamptz>,
resolved_by -> Nullable<Uuid>,
resolution_notes -> Nullable<Text>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
compliance_audit_log (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
event_type -> Varchar,
user_id -> Nullable<Uuid>,
resource_type -> Varchar,
resource_id -> Varchar,
action -> Varchar,
result -> Varchar,
ip_address -> Nullable<Varchar>,
user_agent -> Nullable<Text>,
metadata -> Jsonb,
created_at -> Timestamptz,
}
}
diesel::table! {
compliance_evidence (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
check_id -> Nullable<Uuid>,
issue_id -> Nullable<Uuid>,
evidence_type -> Varchar,
title -> Varchar,
description -> Nullable<Text>,
file_url -> Nullable<Text>,
file_name -> Nullable<Varchar>,
file_size -> Nullable<Int4>,
mime_type -> Nullable<Varchar>,
metadata -> Jsonb,
collected_at -> Timestamptz,
collected_by -> Nullable<Uuid>,
created_at -> Timestamptz,
}
}
diesel::table! {
compliance_risk_assessments (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
title -> Varchar,
assessor_id -> Uuid,
methodology -> Varchar,
overall_risk_score -> Numeric,
status -> Varchar,
started_at -> Timestamptz,
completed_at -> Nullable<Timestamptz>,
next_review_date -> Nullable<Date>,
notes -> Nullable<Text>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
compliance_risks (id) {
id -> Uuid,
assessment_id -> Uuid,
title -> Varchar,
description -> Nullable<Text>,
category -> Varchar,
likelihood_score -> Int4,
impact_score -> Int4,
risk_score -> Int4,
risk_level -> Varchar,
current_controls -> Jsonb,
treatment_strategy -> Varchar,
status -> Varchar,
owner_id -> Nullable<Uuid>,
due_date -> Nullable<Date>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
compliance_training_records (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
user_id -> Uuid,
training_type -> Varchar,
training_name -> Varchar,
provider -> Nullable<Varchar>,
score -> Nullable<Int4>,
passed -> Bool,
completion_date -> Timestamptz,
valid_until -> Nullable<Timestamptz>,
certificate_url -> Nullable<Text>,
metadata -> Jsonb,
created_at -> Timestamptz,
}
}
diesel::table! {
compliance_access_reviews (id) {
id -> Uuid,
org_id -> Uuid,
bot_id -> Uuid,
user_id -> Uuid,
reviewer_id -> Uuid,
review_date -> Timestamptz,
permissions_reviewed -> Jsonb,
anomalies -> Jsonb,
recommendations -> Jsonb,
status -> Varchar,
approved_at -> Nullable<Timestamptz>,
notes -> Nullable<Text>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::joinable!(legal_documents -> organizations (org_id));
diesel::joinable!(legal_documents -> bots (bot_id));
diesel::joinable!(legal_document_versions -> legal_documents (document_id));
diesel::joinable!(cookie_consents -> organizations (org_id));
diesel::joinable!(cookie_consents -> bots (bot_id));
diesel::joinable!(consent_history -> cookie_consents (consent_id));
diesel::joinable!(legal_acceptances -> organizations (org_id));
diesel::joinable!(legal_acceptances -> bots (bot_id));
diesel::joinable!(legal_acceptances -> legal_documents (document_id));
diesel::joinable!(data_deletion_requests -> organizations (org_id));
diesel::joinable!(data_deletion_requests -> bots (bot_id));
diesel::joinable!(data_export_requests -> organizations (org_id));
diesel::joinable!(data_export_requests -> bots (bot_id));
diesel::joinable!(compliance_checks -> organizations (org_id));
diesel::joinable!(compliance_checks -> bots (bot_id));
diesel::joinable!(compliance_issues -> organizations (org_id));
diesel::joinable!(compliance_issues -> bots (bot_id));
diesel::joinable!(compliance_issues -> compliance_checks (check_id));
diesel::joinable!(compliance_audit_log -> organizations (org_id));
diesel::joinable!(compliance_audit_log -> bots (bot_id));
diesel::joinable!(compliance_evidence -> organizations (org_id));
diesel::joinable!(compliance_evidence -> bots (bot_id));
diesel::joinable!(compliance_risk_assessments -> organizations (org_id));
diesel::joinable!(compliance_risk_assessments -> bots (bot_id));
diesel::joinable!(compliance_risks -> compliance_risk_assessments (assessment_id));
diesel::joinable!(compliance_training_records -> organizations (org_id));
diesel::joinable!(compliance_training_records -> bots (bot_id));
diesel::joinable!(compliance_access_reviews -> organizations (org_id));
diesel::joinable!(compliance_access_reviews -> bots (bot_id));