mirror of https://github.com/buster-so/buster.git
Merge pull request #1172 from buster-so/dallin-bus-1953-three-dot-duplicate-doesnt-duplicate-the-chat
fix rust asset type enum issues
This commit is contained in:
commit
e621149030
|
@ -143,7 +143,7 @@ pub struct Chat {
|
||||||
pub publicly_enabled_by: Option<Uuid>,
|
pub publicly_enabled_by: Option<Uuid>,
|
||||||
pub public_expiry_date: Option<DateTime<Utc>>,
|
pub public_expiry_date: Option<DateTime<Utc>>,
|
||||||
pub most_recent_file_id: Option<Uuid>,
|
pub most_recent_file_id: Option<Uuid>,
|
||||||
pub most_recent_file_type: Option<String>,
|
pub most_recent_file_type: Option<AssetType>,
|
||||||
pub most_recent_version_number: Option<i32>,
|
pub most_recent_version_number: Option<i32>,
|
||||||
pub workspace_sharing: WorkspaceSharing,
|
pub workspace_sharing: WorkspaceSharing,
|
||||||
pub workspace_sharing_enabled_by: Option<Uuid>,
|
pub workspace_sharing_enabled_by: Option<Uuid>,
|
||||||
|
|
|
@ -89,6 +89,7 @@ diesel::table! {
|
||||||
diesel::table! {
|
diesel::table! {
|
||||||
use diesel::sql_types::*;
|
use diesel::sql_types::*;
|
||||||
use super::sql_types::WorkspaceSharingEnum;
|
use super::sql_types::WorkspaceSharingEnum;
|
||||||
|
use super::sql_types::AssetTypeEnum;
|
||||||
|
|
||||||
chats (id) {
|
chats (id) {
|
||||||
id -> Uuid,
|
id -> Uuid,
|
||||||
|
@ -103,8 +104,7 @@ diesel::table! {
|
||||||
publicly_enabled_by -> Nullable<Uuid>,
|
publicly_enabled_by -> Nullable<Uuid>,
|
||||||
public_expiry_date -> Nullable<Timestamptz>,
|
public_expiry_date -> Nullable<Timestamptz>,
|
||||||
most_recent_file_id -> Nullable<Uuid>,
|
most_recent_file_id -> Nullable<Uuid>,
|
||||||
#[max_length = 255]
|
most_recent_file_type -> Nullable<AssetTypeEnum>,
|
||||||
most_recent_file_type -> Nullable<Varchar>,
|
|
||||||
most_recent_version_number -> Nullable<Int4>,
|
most_recent_version_number -> Nullable<Int4>,
|
||||||
workspace_sharing -> WorkspaceSharingEnum,
|
workspace_sharing -> WorkspaceSharingEnum,
|
||||||
workspace_sharing_enabled_by -> Nullable<Uuid>,
|
workspace_sharing_enabled_by -> Nullable<Uuid>,
|
||||||
|
|
|
@ -277,10 +277,9 @@ pub async fn create_message_file_association(
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
if let Ok(chat_id) = message_result {
|
if let Ok(chat_id) = message_result {
|
||||||
// Determine file type string
|
// Check if this is a supported file type
|
||||||
let file_type = match asset_type {
|
let file_type = match asset_type {
|
||||||
AssetType::MetricFile => "metric_file".to_string(),
|
AssetType::MetricFile | AssetType::DashboardFile | AssetType::ReportFile => asset_type,
|
||||||
AssetType::DashboardFile => "dashboard".to_string(),
|
|
||||||
_ => return Ok(()),
|
_ => return Ok(()),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ pub async fn duplicate_chat_handler(
|
||||||
publicly_enabled_by: None,
|
publicly_enabled_by: None,
|
||||||
public_expiry_date: None,
|
public_expiry_date: None,
|
||||||
most_recent_file_id: source_chat.most_recent_file_id,
|
most_recent_file_id: source_chat.most_recent_file_id,
|
||||||
most_recent_file_type: source_chat.most_recent_file_type.clone(),
|
most_recent_file_type: source_chat.most_recent_file_type,
|
||||||
most_recent_version_number: source_chat.most_recent_version_number,
|
most_recent_version_number: source_chat.most_recent_version_number,
|
||||||
workspace_sharing: WorkspaceSharing::None,
|
workspace_sharing: WorkspaceSharing::None,
|
||||||
workspace_sharing_enabled_at: None,
|
workspace_sharing_enabled_at: None,
|
||||||
|
|
|
@ -59,7 +59,7 @@ struct ChatWithUser {
|
||||||
pub updated_at: DateTime<Utc>,
|
pub updated_at: DateTime<Utc>,
|
||||||
pub created_by: Uuid,
|
pub created_by: Uuid,
|
||||||
pub most_recent_file_id: Option<Uuid>,
|
pub most_recent_file_id: Option<Uuid>,
|
||||||
pub most_recent_file_type: Option<String>,
|
pub most_recent_file_type: Option<database::enums::AssetType>,
|
||||||
pub most_recent_version_number: Option<i32>,
|
pub most_recent_version_number: Option<i32>,
|
||||||
// User fields
|
// User fields
|
||||||
pub user_name: Option<String>,
|
pub user_name: Option<String>,
|
||||||
|
@ -265,7 +265,7 @@ pub async fn list_chats_handler(
|
||||||
created_by_avatar: chat.user_avatar_url,
|
created_by_avatar: chat.user_avatar_url,
|
||||||
last_edited: chat.updated_at.to_rfc3339(),
|
last_edited: chat.updated_at.to_rfc3339(),
|
||||||
latest_file_id: chat.most_recent_file_id.map(|id| id.to_string()),
|
latest_file_id: chat.most_recent_file_id.map(|id| id.to_string()),
|
||||||
latest_file_type: chat.most_recent_file_type,
|
latest_file_type: chat.most_recent_file_type.map(|t| t.to_string().to_string()),
|
||||||
latest_version_number: chat.most_recent_version_number,
|
latest_version_number: chat.most_recent_version_number,
|
||||||
is_shared: chat.created_by != user.id, // Mark as shared if the user is not the creator
|
is_shared: chat.created_by != user.id, // Mark as shared if the user is not the creator
|
||||||
});
|
});
|
||||||
|
@ -287,7 +287,7 @@ pub async fn list_chats_handler(
|
||||||
created_by_avatar: chat.user_avatar_url,
|
created_by_avatar: chat.user_avatar_url,
|
||||||
last_edited: chat.updated_at.to_rfc3339(),
|
last_edited: chat.updated_at.to_rfc3339(),
|
||||||
latest_file_id: chat.most_recent_file_id.map(|id| id.to_string()),
|
latest_file_id: chat.most_recent_file_id.map(|id| id.to_string()),
|
||||||
latest_file_type: chat.most_recent_file_type,
|
latest_file_type: chat.most_recent_file_type.map(|t| t.to_string().to_string()),
|
||||||
latest_version_number: chat.most_recent_version_number,
|
latest_version_number: chat.most_recent_version_number,
|
||||||
is_shared: true, // Always true for workspace-shared chats
|
is_shared: true, // Always true for workspace-shared chats
|
||||||
});
|
});
|
||||||
|
|
|
@ -319,26 +319,25 @@ pub async fn post_chat_handler(
|
||||||
|
|
||||||
// Explicitly update the chat in the database with most_recent_file information
|
// Explicitly update the chat in the database with most_recent_file information
|
||||||
// to ensure it behaves like files generated in a chat
|
// to ensure it behaves like files generated in a chat
|
||||||
let asset_type_string = match asset_type_value {
|
let asset_type_for_db = match asset_type_value {
|
||||||
AssetType::MetricFile => Some("metric_file".to_string()),
|
AssetType::MetricFile | AssetType::DashboardFile | AssetType::ReportFile => Some(asset_type_value),
|
||||||
AssetType::DashboardFile => Some("dashboard".to_string()),
|
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Some(file_type) = asset_type_string {
|
if let Some(file_type) = asset_type_for_db {
|
||||||
// Update the chat directly to ensure it has the most_recent_file information
|
// Update the chat directly to ensure it has the most_recent_file information
|
||||||
let mut conn = get_pg_pool().get().await?;
|
let mut conn = get_pg_pool().get().await?;
|
||||||
diesel::update(chats::table.find(chat_id))
|
diesel::update(chats::table.find(chat_id))
|
||||||
.set((
|
.set((
|
||||||
chats::most_recent_file_id.eq(Some(asset_id_value)),
|
chats::most_recent_file_id.eq(Some(asset_id_value)),
|
||||||
chats::most_recent_file_type.eq(Some(file_type.clone())),
|
chats::most_recent_file_type.eq(Some(file_type)),
|
||||||
chats::updated_at.eq(Utc::now()),
|
chats::updated_at.eq(Utc::now()),
|
||||||
))
|
))
|
||||||
.execute(&mut conn)
|
.execute(&mut conn)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
tracing::info!(
|
tracing::info!(
|
||||||
"Updated chat {} with most_recent_file_id: {}, most_recent_file_type: {}",
|
"Updated chat {} with most_recent_file_id: {}, most_recent_file_type: {:?}",
|
||||||
chat_id,
|
chat_id,
|
||||||
asset_id_value,
|
asset_id_value,
|
||||||
file_type
|
file_type
|
||||||
|
@ -1118,8 +1117,9 @@ async fn process_completed_files(
|
||||||
|
|
||||||
// Determine file type for chat update
|
// Determine file type for chat update
|
||||||
let file_type_for_chat = match file_content.file_type.as_str() {
|
let file_type_for_chat = match file_content.file_type.as_str() {
|
||||||
"dashboard" => Some("dashboard".to_string()),
|
"dashboard" | "dashboard_file" => Some(AssetType::DashboardFile),
|
||||||
"metric_file" => Some("metric_file".to_string()),
|
"metric" | "metric_file" => Some(AssetType::MetricFile),
|
||||||
|
"report" | "report_file" => Some(AssetType::ReportFile),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -297,7 +297,7 @@ pub async fn restore_chat_handler(
|
||||||
.set((
|
.set((
|
||||||
chats::most_recent_file_id.eq(Some(file_id_clone)),
|
chats::most_recent_file_id.eq(Some(file_id_clone)),
|
||||||
chats::most_recent_version_number.eq(Some(version_number)), // version_number is Copy
|
chats::most_recent_version_number.eq(Some(version_number)), // version_number is Copy
|
||||||
chats::most_recent_file_type.eq(Some(request_asset_type_clone.to_string())),
|
chats::most_recent_file_type.eq(Some(request_asset_type_clone)),
|
||||||
chats::updated_at.eq(now), // now is Copy
|
chats::updated_at.eq(now), // now is Copy
|
||||||
))
|
))
|
||||||
.execute(&mut conn)
|
.execute(&mut conn)
|
||||||
|
|
|
@ -51,7 +51,7 @@ struct ChatWithUser {
|
||||||
pub updated_at: DateTime<Utc>,
|
pub updated_at: DateTime<Utc>,
|
||||||
pub created_by: Uuid,
|
pub created_by: Uuid,
|
||||||
pub most_recent_file_id: Option<Uuid>,
|
pub most_recent_file_id: Option<Uuid>,
|
||||||
pub most_recent_file_type: Option<String>,
|
pub most_recent_file_type: Option<database::enums::AssetType>,
|
||||||
pub most_recent_version_number: Option<i32>,
|
pub most_recent_version_number: Option<i32>,
|
||||||
// User fields
|
// User fields
|
||||||
pub user_name: Option<String>,
|
pub user_name: Option<String>,
|
||||||
|
@ -141,7 +141,7 @@ pub async fn list_logs_handler(
|
||||||
created_by_avatar: chat.user_avatar_url,
|
created_by_avatar: chat.user_avatar_url,
|
||||||
last_edited: chat.updated_at.to_rfc3339(),
|
last_edited: chat.updated_at.to_rfc3339(),
|
||||||
latest_file_id: chat.most_recent_file_id.map(|id| id.to_string()),
|
latest_file_id: chat.most_recent_file_id.map(|id| id.to_string()),
|
||||||
latest_file_type: chat.most_recent_file_type,
|
latest_file_type: chat.most_recent_file_type.map(|t| t.to_string().to_string()),
|
||||||
latest_version_number: chat.most_recent_version_number,
|
latest_version_number: chat.most_recent_version_number,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue