botserver/src/video/schema.rs
Rodrigo Rodriguez (Pragmatismo) 5919aa6bf0 Add video module, RBAC, security features, billing, contacts, dashboards, learn, social, and multiple new modules
Major additions:
- Video editing engine with AI features (transcription, captions, TTS, scene detection)
- RBAC middleware and organization management
- Security enhancements (MFA, passkey, DLP, encryption, audit)
- Billing and subscription management
- Contacts management
- Dashboards module
- Learn/LMS module
- Social features
- Compliance (SOC2, SOP middleware, vulnerability scanner)
- New migrations for RBAC, learn, and video tables
2026-01-08 13:16:17 -03:00

154 lines
3.7 KiB
Rust

diesel::table! {
video_projects (id) {
id -> Uuid,
organization_id -> Nullable<Uuid>,
created_by -> Nullable<Uuid>,
name -> Text,
description -> Nullable<Text>,
resolution_width -> Int4,
resolution_height -> Int4,
fps -> Int4,
total_duration_ms -> Int8,
timeline_json -> Jsonb,
layers_json -> Jsonb,
audio_tracks_json -> Jsonb,
playhead_ms -> Int8,
selection_json -> Jsonb,
zoom_level -> Float4,
thumbnail_url -> Nullable<Text>,
status -> Text,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
video_clips (id) {
id -> Uuid,
project_id -> Uuid,
name -> Text,
source_url -> Text,
start_ms -> Int8,
duration_ms -> Int8,
trim_in_ms -> Int8,
trim_out_ms -> Int8,
volume -> Float4,
clip_order -> Int4,
transition_in -> Nullable<Text>,
transition_out -> Nullable<Text>,
created_at -> Timestamptz,
}
}
diesel::table! {
video_layers (id) {
id -> Uuid,
project_id -> Uuid,
name -> Text,
layer_type -> Text,
track_index -> Int4,
start_ms -> Int8,
end_ms -> Int8,
x -> Float4,
y -> Float4,
width -> Float4,
height -> Float4,
rotation -> Float4,
opacity -> Float4,
properties_json -> Jsonb,
animation_in -> Nullable<Text>,
animation_out -> Nullable<Text>,
locked -> Bool,
keyframes_json -> Nullable<Jsonb>,
created_at -> Timestamptz,
}
}
diesel::table! {
video_audio_tracks (id) {
id -> Uuid,
project_id -> Uuid,
name -> Text,
source_url -> Text,
track_type -> Text,
start_ms -> Int8,
duration_ms -> Int8,
volume -> Float4,
fade_in_ms -> Int8,
fade_out_ms -> Int8,
waveform_json -> Nullable<Jsonb>,
beat_markers_json -> Nullable<Jsonb>,
created_at -> Timestamptz,
}
}
diesel::table! {
video_exports (id) {
id -> Uuid,
project_id -> Uuid,
format -> Text,
quality -> Text,
status -> Text,
progress -> Int4,
output_url -> Nullable<Text>,
gbdrive_path -> Nullable<Text>,
error_message -> Nullable<Text>,
created_at -> Timestamptz,
completed_at -> Nullable<Timestamptz>,
}
}
diesel::table! {
video_command_history (id) {
id -> Uuid,
project_id -> Uuid,
user_id -> Nullable<Uuid>,
command_type -> Text,
command_json -> Jsonb,
executed_at -> Timestamptz,
}
}
diesel::table! {
video_analytics (id) {
id -> Uuid,
project_id -> Uuid,
export_id -> Nullable<Uuid>,
views -> Int8,
unique_viewers -> Int8,
total_watch_time_ms -> Int8,
avg_watch_percent -> Float4,
completions -> Int8,
shares -> Int8,
likes -> Int8,
engagement_score -> Float4,
viewer_retention_json -> Nullable<Jsonb>,
geography_json -> Nullable<Jsonb>,
device_json -> Nullable<Jsonb>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
}
}
diesel::table! {
video_keyframes (id) {
id -> Uuid,
layer_id -> Uuid,
property_name -> Text,
time_ms -> Int8,
value_json -> Jsonb,
easing -> Text,
created_at -> Timestamptz,
}
}
diesel::allow_tables_to_appear_in_same_query!(
video_projects,
video_clips,
video_layers,
video_audio_tracks,
video_exports,
video_command_history,
video_analytics,
video_keyframes,
);