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
8 changes: 6 additions & 2 deletions ceres/src/api_service/mono_api_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ impl MonoApiService {
&self,
mr_link: &str,
page: Pagination,
) -> Result<(Vec<DiffItem>, u64), GitError> {
) -> Result<(Vec<DiffItem>, Vec<String>, u64), GitError> {
let per_page = page.per_page as usize;
let page_id = page.page as usize;

Expand All @@ -433,6 +433,10 @@ impl MonoApiService {
let sorted_changed_files = self
.mr_files_list(old_blobs.clone(), new_blobs.clone())
.await?;
let file_paths: Vec<String> = sorted_changed_files
.iter()
.map(|f| f.path().to_string_lossy().to_string())
.collect();

// ensure page_id is within bounds
let start = (page_id.saturating_sub(1)) * per_page;
Expand Down Expand Up @@ -460,7 +464,7 @@ impl MonoApiService {
// calculate total pages
let total = sorted_changed_files.len().div_ceil(per_page);

Ok((diff_output, total as u64))
Ok((diff_output, file_paths, total as u64))
}

async fn get_diff_by_blobs(
Expand Down
2 changes: 1 addition & 1 deletion jupiter/callisto/src/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ pub mod prelude;
pub mod access_token;
pub mod builds;
pub mod check_result;
pub mod entity_ext;
pub mod git_blob;
pub mod git_commit;
pub mod git_issue;
Expand Down Expand Up @@ -43,4 +44,3 @@ pub mod sea_orm_active_enums;
pub mod ssh_keys;
pub mod user;
pub mod vault;
pub mod entity_ext;
30 changes: 20 additions & 10 deletions jupiter/src/storage/gpg_storage.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use crate::storage::base_storage::BaseStorage;
use crate::storage::base_storage::StorageConnector;
use anyhow::anyhow;
use callisto::entity_ext::generate_id;
use callisto::gpg_key;
use common::errors::MegaError;
Expand Down Expand Up @@ -32,7 +33,11 @@ impl GpgStorage {
gpg_content: String,
expires_days: Option<i32>,
) -> Result<gpg_key::Model, MegaError> {
let (pk, _headers) = SignedPublicKey::from_string(&gpg_content)?;
let (pk, _headers) = SignedPublicKey::from_string(&gpg_content).map_err(|e| {
tracing::error!("{:?}", e);
MegaError::new(anyhow!("Failed to parse GPG key, please check format"), 1)
})?;

let key_id = format!("{:016X}", pk.key_id());
let fingerprint = format!("{:?}", pk.fingerprint());
let created_at = chrono::Utc::now().naive_utc();
Expand Down Expand Up @@ -60,13 +65,10 @@ impl GpgStorage {
) -> Result<(), MegaError> {
let key = self.create_key(user_id, gpg_content, expired_at)?;
let a_model = key.into_active_model();
a_model.insert(self.get_connection()).await?;
Ok(())
}

pub async fn save_gpg_key(&self, key: gpg_key::Model) -> Result<(), MegaError> {
let a_model = key.into_active_model();
a_model.insert(self.get_connection()).await?;
a_model.insert(self.get_connection()).await.map_err(|e| {
tracing::error!("{:?}", e);
MegaError::new(anyhow!("Failed to save GPG key"), 1)
})?;
Ok(())
}

Expand All @@ -75,15 +77,23 @@ impl GpgStorage {
.filter(gpg_key::Column::UserId.eq(user_id))
.filter(gpg_key::Column::KeyId.eq(key_id))
.exec(self.get_connection())
.await?;
.await
.map_err(|e| {
tracing::error!("{:?}", e);
MegaError::new(anyhow!("Failed to delete GPG key"), 1)
})?;
Ok(())
}

pub async fn list_user_gpg(&self, user_id: String) -> Result<Vec<gpg_key::Model>, MegaError> {
let res: Vec<gpg_key::Model> = gpg_key::Entity::find()
.filter(gpg_key::Column::UserId.eq(user_id))
.all(self.get_connection())
.await?;
.await
.map_err(|e| {
tracing::error!("{:?}", e);
MegaError::new(anyhow!("Failed to get GPG keys"), 1)
})?;
Ok(res)
}
}
29 changes: 15 additions & 14 deletions mono/src/api/gpg/gpg_router.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,9 @@ async fn remove_gpg(
state: State<MonoApiServiceState>,
Json(req): Json<RemoveGpgRequest>,
) -> Result<Json<CommonResult<String>>, ApiError> {
let _ = state
.gpg_stg()
.remove_gpg_key(user.campsite_user_id, req.key_id)
.await;
// let uid = "exampleid".to_string();
let uid = user.campsite_user_id.clone();
state.gpg_stg().remove_gpg_key(uid, req.key_id).await?;
Ok(Json(CommonResult::success(None)))
}

Expand All @@ -54,18 +53,19 @@ async fn add_gpg(
state: State<MonoApiServiceState>,
Json(req): Json<NewGpgRequest>,
) -> Result<Json<CommonResult<String>>, ApiError> {
let _ = state
// let uid = "exampleid".to_string();
let uid = user.campsite_user_id.clone();
println!("Adding GPG key for user: {}", req.gpg_content.clone());
state
.gpg_stg()
.add_gpg_key(user.campsite_user_id, req.gpg_content, req.expires_days)
.await;
.add_gpg_key(uid, req.gpg_content, req.expires_days)
.await?;

Ok(Json(CommonResult::success(None)))
}
#[utoipa::path(
get,
params(
("id" = i64, description = "The user ID"),
),
path = "/list/{id}",
path = "/list",
responses(
(status = 200, body = CommonResult<Vec<GpgKey>>, content_type="application/json")
),
Expand All @@ -75,14 +75,15 @@ async fn list_gpg(
user: LoginUser,
state: State<MonoApiServiceState>,
) -> Result<Json<CommonResult<Vec<GpgKey>>>, ApiError> {
let user_id = user.campsite_user_id;
let raw_keys = state.gpg_stg().list_user_gpg(user_id.clone()).await;
// let uid = "exampleid".to_string();
let uid = user.campsite_user_id;
let raw_keys = state.gpg_stg().list_user_gpg(uid.clone()).await;

let res: Vec<GpgKey> = raw_keys
.into_iter()
.flatten()
.map(|k: Model| GpgKey {
user_id: user_id.clone(),
user_id: uid.clone(),
key_id: k.key_id,
fingerprint: k.fingerprint,
created_at: k.created_at.and_utc(),
Expand Down
5 changes: 2 additions & 3 deletions mono/src/api/mr/mr_router.rs
Original file line number Diff line number Diff line change
Expand Up @@ -307,13 +307,12 @@ async fn mr_files_changed_by_page(
state: State<MonoApiServiceState>,
Json(json): Json<PageParams<String>>,
) -> Result<Json<CommonResult<FilesChangedPage>>, ApiError> {
let (items, total) = state
let (items, changed_files_path, total) = state
.monorepo()
.paged_content_diff(&link, json.pagination)
.await?;

let paths = items.iter().map(|i| i.path.clone()).collect();
let mui_trees = build_forest(paths);
let mui_trees = build_forest(changed_files_path);
let res = CommonResult::success(Some(FilesChangedPage {
mui_trees,
page: CommonPage { total, items },
Expand Down
Loading