botserver/src/core/shared/schema.rs

306 lines
6.7 KiB
Rust
Raw Normal View History

2025-12-03 19:59:27 -03:00
//! Diesel schema definitions
//!
//! Contains all database table definitions for diesel ORM.
diesel::table! {
organizations (org_id) {
org_id -> Uuid,
name -> Text,
slug -> Text,
created_at -> Timestamptz,
}
}
diesel::table! {
bots (id) {
id -> Uuid,
name -> Varchar,
description -> Nullable<Text>,
llm_provider -> Varchar,
llm_config -> Jsonb,
context_provider -> Varchar,
context_config -> Jsonb,
created_at -> Timestamptz,
updated_at -> Timestamptz,
is_active -> Nullable<Bool>,
tenant_id -> Nullable<Uuid>,
}
}
diesel::table! {
system_automations (id) {
id -> Uuid,
bot_id -> Uuid,
kind -> Int4,
target -> Nullable<Text>,
schedule -> Nullable<Text>,
param -> Text,
is_active -> Bool,
last_triggered -> Nullable<Timestamptz>,
}
}
diesel::table! {
user_sessions (id) {
id -> Uuid,
user_id -> Uuid,
bot_id -> Uuid,
title -> Text,
context_data -> Jsonb,
current_tool -> Nullable<Text>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
message_history (id) {
id -> Uuid,
session_id -> Uuid,
user_id -> Uuid,
role -> Int4,
content_encrypted -> Text,
message_type -> Int4,
message_index -> Int8,
created_at -> Timestamptz,
}
}
diesel::table! {
users (id) {
id -> Uuid,
username -> Text,
email -> Text,
password_hash -> Text,
is_active -> Bool,
is_admin -> Bool,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
clicks (id) {
id -> Uuid,
campaign_id -> Text,
email -> Text,
updated_at -> Timestamptz,
}
}
diesel::table! {
bot_memories (id) {
id -> Uuid,
bot_id -> Uuid,
key -> Text,
value -> Text,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
kb_documents (id) {
id -> Text,
bot_id -> Text,
user_id -> Text,
collection_name -> Text,
file_path -> Text,
file_size -> Integer,
file_hash -> Text,
first_published_at -> Text,
last_modified_at -> Text,
indexed_at -> Nullable<Text>,
metadata -> Text,
created_at -> Text,
updated_at -> Text,
}
}
diesel::table! {
basic_tools (id) {
id -> Text,
bot_id -> Text,
tool_name -> Text,
file_path -> Text,
ast_path -> Text,
file_hash -> Text,
mcp_json -> Nullable<Text>,
tool_json -> Nullable<Text>,
compiled_at -> Text,
is_active -> Integer,
created_at -> Text,
updated_at -> Text,
}
}
diesel::table! {
kb_collections (id) {
id -> Text,
bot_id -> Text,
user_id -> Text,
name -> Text,
folder_path -> Text,
qdrant_collection -> Text,
document_count -> Integer,
is_active -> Integer,
created_at -> Text,
updated_at -> Text,
}
}
diesel::table! {
user_kb_associations (id) {
id -> Text,
user_id -> Text,
bot_id -> Text,
kb_name -> Text,
is_website -> Integer,
website_url -> Nullable<Text>,
created_at -> Text,
updated_at -> Text,
}
}
diesel::table! {
session_tool_associations (id) {
id -> Text,
session_id -> Text,
tool_name -> Text,
added_at -> Text,
}
}
diesel::table! {
bot_configuration (id) {
id -> Uuid,
bot_id -> Uuid,
config_key -> Text,
config_value -> Text,
is_encrypted -> Bool,
config_type -> Text,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
user_email_accounts (id) {
id -> Uuid,
user_id -> Uuid,
email -> Varchar,
display_name -> Nullable<Varchar>,
imap_server -> Varchar,
imap_port -> Int4,
smtp_server -> Varchar,
smtp_port -> Int4,
username -> Varchar,
password_encrypted -> Text,
is_primary -> Bool,
is_active -> Bool,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
email_drafts (id) {
id -> Uuid,
user_id -> Uuid,
account_id -> Uuid,
to_address -> Text,
cc_address -> Nullable<Text>,
bcc_address -> Nullable<Text>,
subject -> Nullable<Varchar>,
body -> Nullable<Text>,
attachments -> Jsonb,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
email_folders (id) {
id -> Uuid,
account_id -> Uuid,
folder_name -> Varchar,
folder_path -> Varchar,
unread_count -> Int4,
total_count -> Int4,
last_synced -> Nullable<Timestamptz>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
user_preferences (id) {
id -> Uuid,
user_id -> Uuid,
preference_key -> Varchar,
preference_value -> Jsonb,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
user_login_tokens (id) {
id -> Uuid,
user_id -> Uuid,
token_hash -> Varchar,
expires_at -> Timestamptz,
created_at -> Timestamptz,
last_used -> Timestamptz,
user_agent -> Nullable<Text>,
ip_address -> Nullable<Varchar>,
is_active -> Bool,
}
}
diesel::table! {
tasks (id) {
id -> Uuid,
title -> Text,
description -> Nullable<Text>,
status -> Text,
priority -> Text,
assignee_id -> Nullable<Uuid>,
reporter_id -> Nullable<Uuid>,
project_id -> Nullable<Uuid>,
due_date -> Nullable<Timestamptz>,
tags -> Array<Text>,
dependencies -> Array<Uuid>,
estimated_hours -> Nullable<Float8>,
actual_hours -> Nullable<Float8>,
progress -> Int4,
created_at -> Timestamptz,
updated_at -> Timestamptz,
completed_at -> Nullable<Timestamptz>,
}
}
// Allow tables to be joined
diesel::allow_tables_to_appear_in_same_query!(
organizations,
bots,
system_automations,
user_sessions,
message_history,
users,
clicks,
bot_memories,
kb_documents,
basic_tools,
kb_collections,
user_kb_associations,
session_tool_associations,
bot_configuration,
user_email_accounts,
email_drafts,
email_folders,
user_preferences,
user_login_tokens,
tasks,
);