Skip to main content

args_api/resource/
review.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5use crate::resource::common::AuthorResource;
6
7#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub struct ReviewResource {
9    pub id: Uuid,
10    pub number: i32,
11    pub author_id: Uuid,
12    pub repository_id: Uuid,
13    pub title: String,
14    pub description: String,
15    pub target_branch: String,
16    pub status: String,
17    pub created_at: DateTime<Utc>,
18    pub updated_at: DateTime<Utc>,
19    pub author: Option<AuthorResource>,
20    pub diffs: Vec<DiffResource>,
21    pub reviewers: Vec<ReviewerResource>,
22    pub comments: Vec<ReviewCommentResource>,
23}
24
25#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub struct DiffResource {
27    pub id: Uuid,
28    pub review_id: Uuid,
29    pub position: i32,
30    pub message: String,
31    pub status: String,
32    pub created_at: DateTime<Utc>,
33    pub updated_at: DateTime<Utc>,
34    pub revisions: Vec<RevisionResource>,
35}
36
37#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
38pub struct RevisionResource {
39    pub id: Uuid,
40    pub diff_id: Uuid,
41    pub number: i32,
42    pub commit_hash: String,
43    pub parent_hash: String,
44    pub created_at: DateTime<Utc>,
45    pub verdicts: Vec<ReviewVerdictResource>,
46}
47
48#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
49pub struct ReviewVerdictResource {
50    pub id: Uuid,
51    pub diff_id: Uuid,
52    pub revision_id: Uuid,
53    pub reviewer_id: Uuid,
54    pub verdict: String,
55    pub created_at: DateTime<Utc>,
56}
57
58#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
59pub struct ReviewerResource {
60    pub id: Uuid,
61    pub review_id: Uuid,
62    pub reviewer_id: Uuid,
63    pub created_at: DateTime<Utc>,
64    pub user: Option<AuthorResource>,
65}
66
67#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
68pub struct ReviewCommentResource {
69    pub id: Uuid,
70    pub review_id: Uuid,
71    pub diff_id: Uuid,
72    pub revision_id: Uuid,
73    pub author_id: Uuid,
74    pub parent_id: Option<Uuid>,
75    pub body: String,
76    pub file_path: Option<String>,
77    pub line_number_start: Option<i32>,
78    pub line_number_end: Option<i32>,
79    pub start_character: Option<i32>,
80    pub end_character: Option<i32>,
81    pub side: Option<String>,
82    pub resolved: bool,
83    pub created_at: DateTime<Utc>,
84    pub updated_at: DateTime<Utc>,
85    pub author: Option<AuthorResource>,
86}