Skip to content

Commit 287d5f6

Browse files
authored
feat: move common model to api-model (#1849)
1 parent f49665e commit 287d5f6

44 files changed

Lines changed: 130 additions & 112 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,6 @@
1-
use clap::Args;
21
use serde::{Deserialize, Serialize};
32
use utoipa::ToSchema;
43

5-
#[derive(Args, Clone, Debug)]
6-
pub struct CommonHttpOptions {
7-
#[arg(long, default_value_t = String::from("127.0.0.1"))]
8-
pub host: String,
9-
10-
#[arg(short = 'p', long, default_value_t = 8000)]
11-
pub port: u16,
12-
}
13-
14-
#[derive(Deserialize, Debug)]
15-
pub struct InfoRefsParams {
16-
pub service: Option<String>,
17-
pub refspec: Option<String>,
18-
}
19-
204
#[derive(PartialEq, Eq, Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
215
pub struct CommonResult<T> {
226
pub req_result: bool,
@@ -75,18 +59,3 @@ pub struct CommonPage<T> {
7559
pub total: u64,
7660
pub items: Vec<T>,
7761
}
78-
79-
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
80-
pub struct DiffItem {
81-
pub path: String,
82-
pub data: String,
83-
}
84-
85-
impl From<git_internal::diff::DiffItem> for DiffItem {
86-
fn from(value: git_internal::diff::DiffItem) -> Self {
87-
Self {
88-
path: value.path,
89-
data: value.data,
90-
}
91-
}
92-
}

api-model/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
pub mod buck2;
2+
pub mod common;
23
pub mod git;

ceres/src/api_service/blob_ops.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use std::{
33
path::{Path, PathBuf},
44
};
55

6-
use common::model::DiffItem;
76
use futures::{StreamExt, stream};
87
use git_internal::{
8+
DiffItem,
99
diff::Diff as GitDiff,
1010
errors::GitError,
1111
hash::ObjectHash,
@@ -157,10 +157,7 @@ pub async fn preview_file_diff<T: ApiHandler + ?Sized>(
157157

158158
let read =
159159
|_: &PathBuf, oid: &ObjectHash| -> Vec<u8> { cache.get(oid).cloned().unwrap_or_default() };
160-
let mut items: Vec<DiffItem> = GitDiff::diff(old_entry, new_entry, Vec::new(), read)
161-
.into_iter()
162-
.map(DiffItem::from)
163-
.collect();
160+
let mut items: Vec<DiffItem> = GitDiff::diff(old_entry, new_entry, Vec::new(), read);
164161
Ok(items.pop())
165162
}
166163

ceres/src/api_service/commit_ops.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ use std::{
44
sync::Arc,
55
};
66

7-
use api_model::git::commit::LatestCommitInfo;
8-
use common::model::{CommonPage, DiffItem, Pagination};
7+
use api_model::{
8+
common::{CommonPage, Pagination},
9+
git::commit::LatestCommitInfo,
10+
};
911
use git_internal::{
12+
DiffItem,
1013
errors::GitError,
1114
hash::ObjectHash,
1215
internal::object::{
@@ -20,7 +23,7 @@ use serde::{Deserialize, Serialize};
2023
use crate::{
2124
api_service::{ApiHandler, history, tree_ops},
2225
model::{
23-
change_list::MuiTreeNode,
26+
change_list::{DiffItemSchema, MuiTreeNode},
2427
commit::{CommitFilesChangedPage, CommitSummary, GpgStatus},
2528
git::{CommitBindingInfo, LatestCommitInfoWrapper},
2629
},
@@ -749,13 +752,13 @@ async fn compute_commit_diff_items<T: ApiHandler + ?Sized>(
749752
merged
750753
};
751754

752-
Ok(diff_results.into_iter().map(Into::into).collect())
755+
Ok(diff_results.into_iter().collect())
753756
}
754757

755758
#[derive(Serialize, Deserialize)]
756759
struct CachedDiff {
757760
filter_paths: Option<Vec<String>>,
758-
items: Vec<DiffItem>,
761+
items: Vec<DiffItemSchema>,
759762
}
760763

761764
async fn load_or_compute_diff_items<T: ApiHandler + ?Sized>(
@@ -764,7 +767,7 @@ async fn load_or_compute_diff_items<T: ApiHandler + ?Sized>(
764767
commit_sha: &str,
765768
cache_key: &str,
766769
filter_paths: Option<&[String]>,
767-
) -> Result<Vec<DiffItem>, GitError> {
770+
) -> Result<Vec<DiffItemSchema>, GitError> {
768771
let requested_filter = filter_paths.map(|paths| {
769772
let mut v: Vec<String> = paths.iter().map(|p| p.to_string()).collect();
770773
v.sort();
@@ -793,6 +796,8 @@ async fn load_or_compute_diff_items<T: ApiHandler + ?Sized>(
793796
compute_commit_diff_items(handler, &commit, filter_paths).await?
794797
};
795798

799+
let diffs: Vec<DiffItemSchema> = diffs.clone().into_iter().map(|x| x.into()).collect();
800+
796801
let cache_value = CachedDiff {
797802
filter_paths: requested_filter,
798803
items: diffs.clone(),

ceres/src/api_service/import_api_service.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::{
55
sync::Arc,
66
};
77

8+
use api_model::common::Pagination;
89
use async_trait::async_trait;
910
use callisto::{git_tag, import_refs};
1011
use common::errors::MegaError;
@@ -215,7 +216,7 @@ impl ApiHandler for ImportApiService {
215216
async fn list_tags(
216217
&self,
217218
_repo_path: Option<String>,
218-
pagination: common::model::Pagination,
219+
pagination: Pagination,
219220
) -> Result<(Vec<TagInfo>, u64), GitError> {
220221
let git_storage = self.storage.git_db_storage();
221222
// annotated tags: fetch paged annotated tags from storage

ceres/src/api_service/mod.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@ use std::{
44
sync::Arc,
55
};
66

7-
use api_model::git::commit::LatestCommitInfo;
7+
use api_model::{common::Pagination, git::commit::LatestCommitInfo};
88
use async_trait::async_trait;
9-
use common::{
10-
config::BlameConfig,
11-
errors::MegaError,
12-
model::{DiffItem, Pagination},
13-
};
9+
use common::{config::BlameConfig, errors::MegaError};
1410
use git_internal::{
11+
DiffItem,
1512
errors::GitError,
1613
internal::object::{
1714
commit::Commit,

ceres/src/api_service/mono_api_service.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ use std::{
4343
time::Duration,
4444
};
4545

46+
use api_model::common::Pagination;
4647
use async_trait::async_trait;
4748
use bytes::Bytes;
4849
use callisto::{
@@ -51,10 +52,10 @@ use callisto::{
5152
};
5253
use common::{
5354
errors::{BuckError, MegaError},
54-
model::{DiffItem, Pagination},
5555
utils::MEGA_BRANCH_NAME,
5656
};
5757
use git_internal::{
58+
DiffItem,
5859
diff::Diff as GitDiff,
5960
errors::GitError,
6061
hash::ObjectHash,
@@ -1823,7 +1824,7 @@ impl MonoApiService {
18231824
// Use the unified diff function with configurable algorithm
18241825
let diff_output = GitDiff::diff(old_blobs, new_blobs, Vec::new(), read_content);
18251826

1826-
Ok(diff_output.into_iter().map(DiffItem::from).collect())
1827+
Ok(diff_output)
18271828
}
18281829

18291830
pub async fn get_sorted_changed_file_list(

ceres/src/model/change_list.rs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use std::{path::PathBuf, str::FromStr};
22

3+
use api_model::common::CommonPage;
34
use callisto::{check_result, sea_orm_active_enums::MergeStatusEnum};
4-
use common::model::{CommonPage, DiffItem};
5-
use git_internal::hash::ObjectHash;
5+
use git_internal::{DiffItem, hash::ObjectHash};
66
use jupiter::model::{cl_dto::CLDetails, common::ListParams};
77
use serde::{Deserialize, Serialize};
88
use utoipa::ToSchema;
@@ -84,7 +84,22 @@ impl From<CLDetails> for CLDetailRes {
8484

8585
#[derive(Serialize, ToSchema)]
8686
pub struct FilesChangedPage {
87-
pub page: CommonPage<DiffItem>,
87+
pub page: CommonPage<DiffItemSchema>,
88+
}
89+
90+
#[derive(Debug, Serialize, Deserialize, ToSchema, Clone)]
91+
pub struct DiffItemSchema {
92+
pub path: String,
93+
pub data: String,
94+
}
95+
96+
impl From<DiffItem> for DiffItemSchema {
97+
fn from(item: DiffItem) -> Self {
98+
Self {
99+
path: item.path,
100+
data: item.data,
101+
}
102+
}
88103
}
89104

90105
#[derive(Serialize, ToSchema)]

ceres/src/model/commit.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
use common::model::{CommonPage, DiffItem};
1+
use api_model::common::CommonPage;
22
use serde::{Deserialize, Serialize};
33
use utoipa::ToSchema;
44

5+
use crate::model::change_list::DiffItemSchema;
6+
57
#[derive(Debug, Serialize, Deserialize, ToSchema, Clone, Default)]
68
#[serde(rename_all = "PascalCase")]
79
pub enum GpgStatus {
@@ -40,7 +42,7 @@ pub struct CommitHistoryParams {
4042
#[derive(Debug, Serialize, Deserialize, ToSchema, Clone)]
4143
pub struct CommitFilesChangedPage {
4244
pub commit: CommitSummary,
43-
pub page: CommonPage<DiffItem>,
45+
pub page: CommonPage<DiffItemSchema>,
4446
}
4547

4648
#[derive(Debug, Serialize, Deserialize, ToSchema)]

ceres/src/model/tag.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use common::model::CommonPage;
1+
use api_model::common::CommonPage;
22
use serde::{Deserialize, Serialize};
33
use utoipa::ToSchema;
44

0 commit comments

Comments
 (0)