mirror of https://github.com/buster-so/buster.git
feat: Add file junction table and update database schema
- Created `messages_to_files` junction table to link messages with dashboard and metric files - Added foreign key constraints and indexes for efficient file-message relationships - Updated Diesel schema to include new `messages_to_files`, `dashboard_files`, and `metric_files` tables - Removed unnecessary timestamp triggers from migration files
This commit is contained in:
parent
f1879dc15c
commit
9624bc33ad
|
@ -1,7 +1,4 @@
|
||||||
-- This file should undo anything in `up.sql`
|
-- This file should undo anything in `up.sql`
|
||||||
-- Drop trigger
|
|
||||||
DROP TRIGGER IF EXISTS set_timestamp ON metric_files;
|
|
||||||
|
|
||||||
-- Drop indexes
|
-- Drop indexes
|
||||||
DROP INDEX IF EXISTS metric_files_deleted_at_idx;
|
DROP INDEX IF EXISTS metric_files_deleted_at_idx;
|
||||||
DROP INDEX IF EXISTS metric_files_created_by_idx;
|
DROP INDEX IF EXISTS metric_files_created_by_idx;
|
||||||
|
|
|
@ -19,9 +19,3 @@ CREATE TABLE metric_files (
|
||||||
CREATE INDEX metric_files_organization_id_idx ON metric_files(organization_id);
|
CREATE INDEX metric_files_organization_id_idx ON metric_files(organization_id);
|
||||||
CREATE INDEX metric_files_created_by_idx ON metric_files(created_by);
|
CREATE INDEX metric_files_created_by_idx ON metric_files(created_by);
|
||||||
CREATE INDEX metric_files_deleted_at_idx ON metric_files(deleted_at);
|
CREATE INDEX metric_files_deleted_at_idx ON metric_files(deleted_at);
|
||||||
|
|
||||||
-- Add trigger to update updated_at timestamp
|
|
||||||
CREATE TRIGGER set_timestamp
|
|
||||||
BEFORE UPDATE ON metric_files
|
|
||||||
FOR EACH ROW
|
|
||||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
-- This file should undo anything in `up.sql`
|
-- This file should undo anything in `up.sql`
|
||||||
-- Drop trigger first
|
|
||||||
DROP TRIGGER IF EXISTS set_timestamp ON dashboard_files;
|
|
||||||
|
|
||||||
-- Drop indexes
|
-- Drop indexes
|
||||||
DROP INDEX IF EXISTS dashboard_files_deleted_at_idx;
|
DROP INDEX IF EXISTS dashboard_files_deleted_at_idx;
|
||||||
|
|
|
@ -16,9 +16,3 @@ CREATE TABLE dashboard_files (
|
||||||
CREATE INDEX dashboard_files_organization_id_idx ON dashboard_files(organization_id);
|
CREATE INDEX dashboard_files_organization_id_idx ON dashboard_files(organization_id);
|
||||||
CREATE INDEX dashboard_files_created_by_idx ON dashboard_files(created_by);
|
CREATE INDEX dashboard_files_created_by_idx ON dashboard_files(created_by);
|
||||||
CREATE INDEX dashboard_files_deleted_at_idx ON dashboard_files(deleted_at);
|
CREATE INDEX dashboard_files_deleted_at_idx ON dashboard_files(deleted_at);
|
||||||
|
|
||||||
-- Add trigger to update updated_at timestamp
|
|
||||||
CREATE TRIGGER set_timestamp
|
|
||||||
BEFORE UPDATE ON dashboard_files
|
|
||||||
FOR EACH ROW
|
|
||||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
|
||||||
|
|
|
@ -1 +1,14 @@
|
||||||
-- This file should undo anything in `up.sql`
|
-- This file should undo anything in `up.sql`
|
||||||
|
-- Drop indexes
|
||||||
|
DROP INDEX IF EXISTS messages_files_file_id_idx;
|
||||||
|
DROP INDEX IF EXISTS messages_files_message_id_idx;
|
||||||
|
|
||||||
|
-- Drop foreign key constraints
|
||||||
|
ALTER TABLE messages_to_files
|
||||||
|
DROP CONSTRAINT IF EXISTS fk_dashboard_files;
|
||||||
|
|
||||||
|
ALTER TABLE messages_to_files
|
||||||
|
DROP CONSTRAINT IF EXISTS fk_metric_files;
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
DROP TABLE IF EXISTS messages_to_files;
|
||||||
|
|
|
@ -1 +1,24 @@
|
||||||
|
CREATE TABLE messages_to_files (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
message_id UUID NOT NULL REFERENCES messages(id),
|
||||||
|
file_id UUID NOT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
UNIQUE(message_id, file_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Index for faster lookups by message_id
|
||||||
|
CREATE INDEX messages_files_message_id_idx ON messages_to_files(message_id);
|
||||||
|
|
||||||
|
-- Add foreign key constraints for file_id to both metric_files and dashboard_files
|
||||||
|
ALTER TABLE messages_to_files
|
||||||
|
ADD CONSTRAINT fk_metric_files
|
||||||
|
FOREIGN KEY (file_id)
|
||||||
|
REFERENCES metric_files(id);
|
||||||
|
|
||||||
|
ALTER TABLE messages_to_files
|
||||||
|
ADD CONSTRAINT fk_dashboard_files
|
||||||
|
FOREIGN KEY (file_id)
|
||||||
|
REFERENCES dashboard_files(id);
|
||||||
|
|
||||||
|
-- Index for faster lookups by file_id
|
||||||
|
CREATE INDEX messages_files_file_id_idx ON messages_to_files(file_id);
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
-- This file should undo anything in `up.sql`
|
|
@ -0,0 +1 @@
|
||||||
|
-- Your SQL goes here
|
|
@ -112,6 +112,21 @@ diesel::table! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
diesel::table! {
|
||||||
|
dashboard_files (id) {
|
||||||
|
id -> Uuid,
|
||||||
|
name -> Varchar,
|
||||||
|
file_name -> Varchar,
|
||||||
|
content -> Jsonb,
|
||||||
|
filter -> Nullable<Varchar>,
|
||||||
|
organization_id -> Uuid,
|
||||||
|
created_by -> Uuid,
|
||||||
|
created_at -> Timestamptz,
|
||||||
|
updated_at -> Timestamptz,
|
||||||
|
deleted_at -> Nullable<Timestamptz>,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
diesel::table! {
|
diesel::table! {
|
||||||
dashboard_versions (id) {
|
dashboard_versions (id) {
|
||||||
id -> Uuid,
|
id -> Uuid,
|
||||||
|
@ -315,6 +330,33 @@ diesel::table! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
diesel::table! {
|
||||||
|
messages_to_files (id) {
|
||||||
|
id -> Int4,
|
||||||
|
message_id -> Uuid,
|
||||||
|
file_id -> Uuid,
|
||||||
|
created_at -> Timestamp,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diesel::table! {
|
||||||
|
metric_files (id) {
|
||||||
|
id -> Uuid,
|
||||||
|
name -> Varchar,
|
||||||
|
file_name -> Varchar,
|
||||||
|
content -> Jsonb,
|
||||||
|
verification -> Nullable<Bool>,
|
||||||
|
evaluation_obj -> Nullable<Jsonb>,
|
||||||
|
evaluation_summary -> Nullable<Text>,
|
||||||
|
evaluation_score -> Nullable<Float8>,
|
||||||
|
organization_id -> Uuid,
|
||||||
|
created_by -> Uuid,
|
||||||
|
created_at -> Timestamptz,
|
||||||
|
updated_at -> Timestamptz,
|
||||||
|
deleted_at -> Nullable<Timestamptz>,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
diesel::table! {
|
diesel::table! {
|
||||||
organizations (id) {
|
organizations (id) {
|
||||||
id -> Uuid,
|
id -> Uuid,
|
||||||
|
@ -534,6 +576,9 @@ diesel::joinable!(datasets_to_permission_groups -> permission_groups (permission
|
||||||
diesel::joinable!(messages -> datasets (dataset_id));
|
diesel::joinable!(messages -> datasets (dataset_id));
|
||||||
diesel::joinable!(messages -> threads (thread_id));
|
diesel::joinable!(messages -> threads (thread_id));
|
||||||
diesel::joinable!(messages -> users (sent_by));
|
diesel::joinable!(messages -> users (sent_by));
|
||||||
|
diesel::joinable!(messages_to_files -> dashboard_files (file_id));
|
||||||
|
diesel::joinable!(messages_to_files -> messages (message_id));
|
||||||
|
diesel::joinable!(messages_to_files -> metric_files (file_id));
|
||||||
diesel::joinable!(permission_groups -> organizations (organization_id));
|
diesel::joinable!(permission_groups -> organizations (organization_id));
|
||||||
diesel::joinable!(permission_groups_to_users -> permission_groups (permission_group_id));
|
diesel::joinable!(permission_groups_to_users -> permission_groups (permission_group_id));
|
||||||
diesel::joinable!(permission_groups_to_users -> users (user_id));
|
diesel::joinable!(permission_groups_to_users -> users (user_id));
|
||||||
|
@ -556,6 +601,7 @@ diesel::allow_tables_to_appear_in_same_query!(
|
||||||
asset_permissions,
|
asset_permissions,
|
||||||
collections,
|
collections,
|
||||||
collections_to_assets,
|
collections_to_assets,
|
||||||
|
dashboard_files,
|
||||||
dashboard_versions,
|
dashboard_versions,
|
||||||
dashboards,
|
dashboards,
|
||||||
data_sources,
|
data_sources,
|
||||||
|
@ -568,6 +614,8 @@ diesel::allow_tables_to_appear_in_same_query!(
|
||||||
datasets_to_permission_groups,
|
datasets_to_permission_groups,
|
||||||
entity_relationship,
|
entity_relationship,
|
||||||
messages,
|
messages,
|
||||||
|
messages_to_files,
|
||||||
|
metric_files,
|
||||||
organizations,
|
organizations,
|
||||||
permission_groups,
|
permission_groups,
|
||||||
permission_groups_to_identities,
|
permission_groups_to_identities,
|
||||||
|
|
Loading…
Reference in New Issue