diff options
Diffstat (limited to 'server/src')
| -rw-r--r-- | server/src/api_model.rs | 240 | ||||
| -rw-r--r-- | server/src/main.rs | 25 |
2 files changed, 1 insertions, 264 deletions
diff --git a/server/src/api_model.rs b/server/src/api_model.rs deleted file mode 100644 index dbb42d8..0000000 --- a/server/src/api_model.rs +++ /dev/null @@ -1,240 +0,0 @@ -use rocket::serde::{Deserialize, Serialize}; -use utoipa::ToSchema; - -#[derive(Copy, Clone, Deserialize, Serialize, ToSchema)] -pub enum ReviewState { - Draft, - Open, - Dropped, - Closed, -} - -impl TryFrom<u8> for ReviewState { - type Error = &'static str; - - fn try_from(value: u8) -> Result<Self, Self::Error> { - match value { - 0 => Ok(ReviewState::Draft), - 1 => Ok(ReviewState::Open), - 2 => Ok(ReviewState::Dropped), - 3 => Ok(ReviewState::Closed), - _ => Err("Invalid review state"), - } - } -} - -#[derive(Copy, Clone, Deserialize, Serialize, ToSchema)] -pub enum Rewrite { - Disabled, - History, - Rebase, -} - -impl TryFrom<u8> for Rewrite { - type Error = &'static str; - - fn try_from(value: u8) -> Result<Self, Self::Error> { - match value { - 0 => Ok(Rewrite::Disabled), - 1 => Ok(Rewrite::History), - 2 => Ok(Rewrite::Rebase), - _ => Err("Invalid review state"), - } - } -} - -#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize, ToSchema)] -pub enum UserReviewRole { - Reviewer, - Watcher, - None, -} - -#[derive(Debug, Deserialize, Serialize, PartialEq, ToSchema)] -pub struct User { - #[schema(example = "jsmith")] - pub id: String, - #[schema(example = "John Smith")] - pub name: String, - #[schema(example = true)] - pub active: bool, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct Users { - #[schema(example = 0u32)] - pub offset: u32, - #[schema(example = 10u32)] - pub limit: u32, - #[schema(example = 42u32)] - pub total_count: u32, - #[schema(example = true)] - pub more: bool, - pub users: Vec<User>, -} - -#[derive(Serialize, ToSchema)] -pub struct ReviewUserEntry { - pub user: User, - #[schema(example = UserReviewRole::Reviewer)] - pub role: UserReviewRole, -} - -#[derive(Serialize, ToSchema)] -pub struct Review { - #[schema(example = 1000u64)] - pub id: u64, - #[schema(example = "FAKE-512: Add more features")] - pub title: String, - #[schema(example = "We're adding more features because features are what we want.")] - pub description: String, - pub owner: User, - pub users: Vec<ReviewUserEntry>, - #[schema(example = ReviewState::Open)] - pub state: ReviewState, - #[schema(example = 37.5)] - pub progress: f32, - #[schema(example = "r/user/TASK-123456")] - pub branch: String, - #[schema(example = false)] - pub archived: bool, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct ReviewEntry { - #[schema(example = 1000u64)] - pub id: u64, - #[schema(example = "FAKE-512: Add more features")] - pub title: String, - pub owner: User, - #[schema(example = ReviewState::Open)] - pub state: ReviewState, - #[schema(example = 37.5)] - pub progress: f32, - #[schema(example = "r/user/TASK-123456")] - pub branch: String, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct Reviews { - #[schema(example = 0u32)] - pub offset: u32, - #[schema(example = 10u32)] - pub limit: u32, - #[schema(example = 42u32)] - pub total_count: u32, - #[schema(example = true)] - pub more: bool, - pub reviews: Vec<ReviewEntry>, -} - -#[derive(Debug, Deserialize, PartialEq, Serialize, ToSchema)] -pub struct ProjectUserEntry { - pub user: User, - #[schema(example = UserReviewRole::Reviewer)] - pub default_role: UserReviewRole, - #[schema(example = false)] - pub maintainer: bool, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct ProjectUserEntryData { - #[schema(example = UserReviewRole::Reviewer)] - pub default_role: Option<UserReviewRole>, - #[schema(example = false)] - pub maintainer: Option<bool>, -} - -#[derive(Debug, Deserialize, PartialEq, Serialize, ToSchema)] -pub struct Project { - #[schema(example = "fake")] - pub id: String, - #[schema(example = "FAKE: Features All Kids Erase")] - pub title: String, - #[schema(example = "Example project")] - pub description: String, - #[schema(example = "ssh://git.example.org/srv/git/")] - pub remote: String, - #[schema(example = "main")] - pub main_branch: String, - pub users: Vec<ProjectUserEntry>, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct ProjectData<'r> { - #[schema(example = "FAKE: Features All Kids Erase")] - pub title: Option<&'r str>, - #[schema(example = "Example project")] - pub description: Option<&'r str>, - #[schema(example = "ssh://git.example.org/srv/git/")] - pub remote: Option<&'r str>, - #[schema(example = "main")] - pub main_branch: Option<&'r str>, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct ProjectEntry { - #[schema(example = "fake")] - pub id: String, - #[schema(example = "FAKE: Features All Kids Erase")] - pub title: String, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct Projects { - #[schema(example = 0u32)] - pub offset: u32, - #[schema(example = 10u32)] - pub limit: u32, - #[schema(example = 1u32)] - pub total_count: u32, - #[schema(example = false)] - pub more: bool, - pub projects: Vec<ProjectEntry>, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct StatusResponse { - pub ok: bool, - #[serde( - skip_serializing_if = "Option::is_none", - // &'static str is problematic for serde, only used in tests anyway. - skip_deserializing, - )] - pub error: Option<&'static str>, -} - -#[derive(Debug, Deserialize, PartialEq, Serialize, ToSchema)] -pub struct UserKey { - #[schema(example = 1u64)] - pub id: u64, - #[schema(example = "ssh-rsa")] - pub kind: String, - #[schema(example = "AAAAfoobar==")] - pub data: String, - #[schema(example = "user@host 1970-01-01")] - pub comment: String, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct UserKeyData<'r> { - #[schema(example = "ssh-rsa")] - pub kind: &'r str, - #[schema(example = "AAAAfoobar==")] - pub data: &'r str, - #[schema(example = "user@host 1970-01-01")] - pub comment: Option<&'r str>, -} - -#[derive(Deserialize, Serialize, ToSchema)] -pub struct UserKeys { - #[schema(example = 0u32)] - pub offset: u32, - #[schema(example = 10u32)] - pub limit: u32, - #[schema(example = 2u32)] - pub total_count: u32, - #[schema(example = false)] - pub more: bool, - pub keys: Vec<UserKey>, -} diff --git a/server/src/main.rs b/server/src/main.rs index f07c372..9bdfeaf 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -14,6 +14,7 @@ use std::path::PathBuf; use utoipa::OpenApi; use utoipa_swagger_ui::SwaggerUi; +use eyeballs_api::api_model; use eyeballs_common::fs_utils; use eyeballs_common::git; use eyeballs_common::git_socket; @@ -21,7 +22,6 @@ use eyeballs_common::git_socket; #[cfg(test)] mod tests; -mod api_model; mod auth; mod authorized_keys; mod db_utils; @@ -58,29 +58,6 @@ struct Db(sqlx::MySqlPool); )] pub struct MainApi; -impl TryFrom<u8> for api_model::UserReviewRole { - type Error = &'static str; - - fn try_from(value: u8) -> Result<Self, Self::Error> { - match value { - 0 => Ok(api_model::UserReviewRole::None), - 1 => Ok(api_model::UserReviewRole::Reviewer), - 2 => Ok(api_model::UserReviewRole::Watcher), - _ => Err("Invalid role"), - } - } -} - -impl From<api_model::UserReviewRole> for u8 { - fn from(value: api_model::UserReviewRole) -> u8 { - match value { - api_model::UserReviewRole::None => 0, - api_model::UserReviewRole::Reviewer => 1, - api_model::UserReviewRole::Watcher => 2, - } - } -} - #[utoipa::path( responses( (status = 200, description = "Get all projects", body = api_model::Projects), |
