-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(cat-data-service): More wip initial poem integration work
- Loading branch information
Showing
20 changed files
with
526 additions
and
52 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
//mod live_get; | ||
//mod ready_get; | ||
|
||
use crate::service::generic::responses::resp_5xx::ServiceUnavailable; | ||
use crate::service::generic::responses::{resp_2xx::NoContent, resp_5xx::ServerError}; | ||
|
||
use poem_openapi::OpenApi; | ||
|
||
use poem_extensions::{ | ||
response, | ||
UniResponse::{T204, T503}, | ||
}; | ||
|
||
pub(crate) struct HealthApi; | ||
|
||
#[OpenApi] | ||
impl HealthApi { | ||
#[oai(path = "/health/ready", method = "get")] | ||
async fn health_get( | ||
&self, | ||
) -> response! { | ||
204: NoContent, | ||
500: ServerError, | ||
503: ServiceUnavailable, | ||
} { | ||
T204(NoContent) | ||
} | ||
|
||
#[oai(path = "/health/live", method = "get")] | ||
async fn live_get( | ||
&self, | ||
) -> response! { | ||
204: NoContent, | ||
500: ServerError, | ||
503: ServiceUnavailable, | ||
} { | ||
// Return No Content unless any endpoint panics. | ||
// If there are x panics in a time frame, say the service is unavailable to force a restart. | ||
T503(ServiceUnavailable) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
//pub fn endpoint() -> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
//! Define generic reusable api components here. | ||
//! these components should be structured into their own sub modules. | ||
//! | ||
pub(crate) mod responses; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
//! This module contains generic re-usable objects. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
//! Generic Responses are all contained in their own modules, grouped by response codes. | ||
//! | ||
|
||
pub(crate) mod resp_2xx; | ||
pub(crate) mod resp_4xx; | ||
pub(crate) mod resp_5xx; |
12 changes: 12 additions & 0 deletions
12
src/cat-data-service/src/service/generic/responses/resp_2xx.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
//! This module contains generic re-usable responses with a 2xx response code. | ||
//! | ||
|
||
use poem_extensions::OneResponse; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 200)] | ||
pub(crate) struct EmptyOK; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 204)] | ||
pub(crate) struct NoContent; |
37 changes: 37 additions & 0 deletions
37
src/cat-data-service/src/service/generic/responses/resp_4xx.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
//! This module contains generic re-usable responses with a 4xx response code. | ||
//! | ||
|
||
use poem::IntoResponse; | ||
use poem_extensions::OneResponse; | ||
use poem_openapi::payload::Payload; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 400)] | ||
pub(crate) struct BadRequest<T: IntoResponse + Payload>(T); | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 401)] | ||
pub(crate) struct Unauthorized; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 403)] | ||
pub(crate) struct Forbidden; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 404)] | ||
pub(crate) struct NotFound; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 405)] | ||
pub(crate) struct MethodNotAllowed; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 406)] | ||
pub(crate) struct NotAcceptable; | ||
|
||
#[derive(OneResponse)] | ||
#[oai(status = 422)] | ||
/// Common automatically produced validation error for every endpoint. | ||
/// Is generated automatically when any of the OpenAPI validation rules fail. | ||
/// Can also be generated manually. | ||
pub(crate) struct ValidationError; |
Oops, something went wrong.