Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 19 additions & 16 deletions ceres/src/application/api_service/mono/admin/group.rs
Original file line number Diff line number Diff line change
Expand Up @@ -308,22 +308,25 @@ impl AdminApplicationService {

match resource_type {
ResourceTypeValue::Note => {
let note = self
.ctx
.storage()
.note_storage()
.get_note_by_public_id(normalized_resource_id)
.await?;
match note {
Some(note) => Ok(note.public_id),
None => {
tracing::warn!(
resource_id = normalized_resource_id,
"note resource missing in mono notes table; falling back to raw public_id"
);
Ok(normalized_resource_id.to_string())
}
}
// TODO: mono `notes` is not populated yet (Campsite remains source of truth).
// Re-enable lookup once notes are migrated/synced into mono:
// let note = self
// .ctx
// .storage()
// .note_storage()
// .get_note_by_public_id(normalized_resource_id)
// .await?;
// match note {
// Some(note) => Ok(note.public_id),
// None => {
// tracing::warn!(
// resource_id = normalized_resource_id,
// "note resource missing in mono notes table; falling back to raw public_id"
// );
// Ok(normalized_resource_id.to_string())
// }
// }
Ok(normalized_resource_id.to_string())
}
}
}
Expand Down
38 changes: 38 additions & 0 deletions ceres/src/model/bots.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,52 @@ use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;

use super::serde_snowflake::{deserialize_i64_from_string_or_number, serialize_i64_as_string};

#[derive(Serialize, Deserialize, ToSchema)]
pub struct BotRes {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub id: i64,
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub bot_id: i64,
pub target_type: InstallationTargetType,
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub target_id: i64,
pub status: InstallationBotStatus,
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub installed_by: i64,
}

#[derive(Serialize, Deserialize, ToSchema)]
pub struct InstallBotReq {
pub target_type: InstallationTargetType,
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub target_id: i64,
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub installed_by: i64,
}

Expand Down Expand Up @@ -120,6 +152,8 @@ pub struct CreateBotTokenRequest {
/// Note: `token_plain` is only returned once and is never stored in plaintext.
#[derive(Serialize, ToSchema)]
pub struct CreateBotTokenResponse {
#[serde(serialize_with = "serialize_i64_as_string")]
#[schema(value_type = String)]
pub id: i64,
pub token_name: String,
pub expires_at: Option<DateTime<Utc>>,
Expand All @@ -132,6 +166,8 @@ pub struct CreateBotTokenResponse {
/// `token` is a `bot_` push token returned once; use as Bearer (or Basic password).
#[derive(Serialize, ToSchema)]
pub struct BootstrapInitBotResponse {
#[serde(serialize_with = "serialize_i64_as_string")]
#[schema(value_type = String)]
pub bot_id: i64,
pub bot_name: String,
pub token: String,
Expand All @@ -140,6 +176,8 @@ pub struct BootstrapInitBotResponse {
/// Item in the list bot tokens response.
#[derive(Serialize, ToSchema)]
pub struct ListBotTokenItem {
#[serde(serialize_with = "serialize_i64_as_string")]
#[schema(value_type = String)]
pub id: i64,
pub token_name: String,
pub expires_at: Option<DateTime<Utc>>,
Expand Down
2 changes: 2 additions & 0 deletions ceres/src/model/buck.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,8 @@ pub struct CompletePayload {}
#[derive(Debug, Serialize, ToSchema)]
pub struct CompleteResponse {
/// Change List ID
#[serde(serialize_with = "crate::model::serde_snowflake::serialize_i64_as_string")]
#[schema(value_type = String)]
pub cl_id: i64,
/// CL link (same as session_id)
pub cl_link: String,
Expand Down
23 changes: 22 additions & 1 deletion ceres/src/model/change_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,21 @@ use uuid::Uuid;

use crate::{
merge_checker::{CheckType, ConditionResult},
model::{conversation::ConversationItem, label::LabelItem},
model::{
conversation::ConversationItem,
label::LabelItem,
serde_snowflake::{
deserialize_i64_from_string_or_number,
deserialize_option_vec_i64_from_string_or_number, serialize_i64_as_string,
},
},
};

#[derive(Deserialize, ToSchema)]
pub struct AssigneeUpdatePayload {
pub assignees: Vec<String>,
#[serde(deserialize_with = "deserialize_i64_from_string_or_number")]
#[schema(value_type = String)]
pub item_id: i64,
pub link: String,
}
Expand All @@ -24,6 +33,11 @@ pub struct AssigneeUpdatePayload {
pub struct ListPayload {
pub status: String,
pub author: Option<String>,
#[serde(
default,
deserialize_with = "deserialize_option_vec_i64_from_string_or_number"
)]
#[schema(value_type = Option<Vec<String>>)]
pub labels: Option<Vec<i64>>,
pub assignees: Option<Vec<String>>,
pub sort_by: Option<String>,
Expand All @@ -45,6 +59,8 @@ impl From<ListPayload> for ListParams {

#[derive(Serialize, ToSchema)]
pub struct CLDetailRes {
#[serde(serialize_with = "serialize_i64_as_string")]
#[schema(value_type = String)]
pub id: i64,
pub link: String,
pub title: String,
Expand Down Expand Up @@ -337,6 +353,11 @@ pub struct ChangeReviewerStatePayload {

#[derive(Debug, Clone, serde::Deserialize, serde::Serialize, utoipa::ToSchema)]
pub struct ChangeReviewStatePayload {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub conversation_id: i64,
pub resolved: bool,
}
Expand Down
46 changes: 46 additions & 0 deletions ceres/src/model/code_review.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ use jupiter::model::code_review_dto::{
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;

use super::serde_snowflake::{
deserialize_i64_from_string_or_number, deserialize_option_i64_from_string_or_number,
serialize_i64_as_string, serialize_option_i64_as_string,
};

#[derive(Debug, Deserialize, Serialize, ToSchema)]
pub struct InitializeCommentRequest {
pub file_path: String,
Expand All @@ -22,6 +27,11 @@ pub struct InitializeCommentRequest {

#[derive(Debug, Deserialize, Serialize, ToSchema)]
pub struct CommentReplyRequest {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub parent_comment_id: i64,
pub content: String,
}
Expand Down Expand Up @@ -66,6 +76,11 @@ pub struct FileReviewResponse {

#[derive(Debug, Deserialize, Serialize, ToSchema)]
pub struct ThreadReviewResponse {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub thread_id: i64,
pub status: ThreadStatus,
pub created_at: String,
Expand All @@ -77,13 +92,23 @@ pub struct ThreadReviewResponse {

#[derive(Debug, Deserialize, Serialize, ToSchema)]
pub struct ThreadStatusResponse {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub thread_id: i64,
pub link: String,
pub status: ThreadStatus,
}

#[derive(Debug, Deserialize, Serialize, ToSchema)]
pub struct AnchorResponse {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub anchor_id: i64,
pub file_path: String,
pub diff_side: DiffSide,
Expand All @@ -96,7 +121,17 @@ pub struct AnchorResponse {

#[derive(Debug, Deserialize, Serialize, ToSchema)]
pub struct PositionResponse {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub position_id: i64,
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub anchor_id: i64,
pub commit_sha: String,
pub line_number: i32,
Expand All @@ -106,9 +141,20 @@ pub struct PositionResponse {

#[derive(Debug, Deserialize, Serialize, ToSchema)]
pub struct CommentReviewResponse {
#[serde(
serialize_with = "serialize_i64_as_string",
deserialize_with = "deserialize_i64_from_string_or_number"
)]
#[schema(value_type = String)]
pub comment_id: i64,
pub user_name: String,
pub content: Option<String>,
#[serde(
default,
serialize_with = "serialize_option_i64_as_string",
deserialize_with = "deserialize_option_i64_from_string_or_number"
)]
#[schema(value_type = Option<String>)]
pub parent_id: Option<i64>,
pub created_at: String,
pub updated_at: String,
Expand Down
4 changes: 4 additions & 0 deletions ceres/src/model/conversation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ use callisto::{mega_conversation, reactions, sea_orm_active_enums::ConvTypeEnum}
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;

use super::serde_snowflake::serialize_i64_as_string;

#[derive(Serialize, ToSchema)]
pub struct ConversationItem {
#[serde(serialize_with = "serialize_i64_as_string")]
#[schema(value_type = String)]
pub id: i64,
pub username: String,
/// True when `username` matches a registered bot (or legacy `"system"` actor).
Expand Down
Loading
Loading