add github action
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
use crate::api::add::okapi_add_operation_for_package_add_;
|
||||
use crate::api::add::package_add;
|
||||
use crate::api::list::okapi_add_operation_for_list_builds_;
|
||||
use crate::api::list::{get_build, okapi_add_operation_for_list_builds_};
|
||||
use crate::api::list::okapi_add_operation_for_stats_;
|
||||
use crate::api::list::{build_output, okapi_add_operation_for_package_list_};
|
||||
use crate::api::list::{list_builds, okapi_add_operation_for_search_};
|
||||
@ -8,6 +8,7 @@ use crate::api::list::{okapi_add_operation_for_build_output_, stats};
|
||||
use crate::api::list::{package_list, search};
|
||||
use crate::api::remove::okapi_add_operation_for_package_del_;
|
||||
use crate::api::remove::okapi_add_operation_for_version_del_;
|
||||
use crate::api::list::okapi_add_operation_for_get_build_;
|
||||
use crate::api::remove::{package_del, version_del};
|
||||
use rocket::Route;
|
||||
use rocket_okapi::openapi_get_routes;
|
||||
@ -21,6 +22,7 @@ pub fn build_api() -> Vec<Route> {
|
||||
version_del,
|
||||
build_output,
|
||||
list_builds,
|
||||
stats
|
||||
stats,
|
||||
get_build
|
||||
]
|
||||
}
|
||||
|
@ -32,6 +32,10 @@ impl Handler for CustomHandler {
|
||||
path = path.join("index.html")
|
||||
}
|
||||
|
||||
// if let None = path.extension() {
|
||||
// path = "index.html".into();
|
||||
// }
|
||||
|
||||
match <Asset as RustEmbed>::get(path.to_string_lossy().as_ref()) {
|
||||
None => Outcome::Failure(Status::NotFound),
|
||||
Some(file_content) => {
|
||||
|
@ -9,7 +9,7 @@ use rocket::serde::{Deserialize, Serialize};
|
||||
use rocket::{get, State};
|
||||
use rocket_okapi::okapi::schemars;
|
||||
use rocket_okapi::{openapi, JsonSchema};
|
||||
use sea_orm::PaginatorTrait;
|
||||
use sea_orm::{PaginatorTrait};
|
||||
use sea_orm::{ColumnTrait, QueryFilter};
|
||||
use sea_orm::{DatabaseConnection, EntityTrait, FromQueryResult, QuerySelect, RelationTrait};
|
||||
|
||||
@ -123,10 +123,11 @@ pub struct ListBuildsModel {
|
||||
}
|
||||
|
||||
#[openapi(tag = "test")]
|
||||
#[get("/builds?<pkgid>")]
|
||||
#[get("/builds?<pkgid>&<limit>")]
|
||||
pub async fn list_builds(
|
||||
db: &State<DatabaseConnection>,
|
||||
pkgid: Option<i32>,
|
||||
limit: Option<u64>,
|
||||
) -> Result<Json<Vec<ListBuildsModel>>, NotFound<String>> {
|
||||
let db = db as &DatabaseConnection;
|
||||
|
||||
@ -137,7 +138,8 @@ pub async fn list_builds(
|
||||
.column_as(builds::Column::Id, "id")
|
||||
.column(builds::Column::Status)
|
||||
.column_as(packages::Column::Name, "pkg_name")
|
||||
.column(versions::Column::Version);
|
||||
.column(versions::Column::Version)
|
||||
.limit(limit);
|
||||
|
||||
let build = match pkgid {
|
||||
None => basequery.into_model::<ListBuildsModel>().all(db),
|
||||
@ -152,6 +154,29 @@ pub async fn list_builds(
|
||||
Ok(Json(build))
|
||||
}
|
||||
|
||||
#[openapi(tag = "test")]
|
||||
#[get("/builds/<buildid>")]
|
||||
pub async fn get_build(
|
||||
db: &State<DatabaseConnection>,
|
||||
buildid: i32,
|
||||
) -> Result<Json<ListBuildsModel>, NotFound<String>> {
|
||||
let db = db as &DatabaseConnection;
|
||||
|
||||
let result = Builds::find()
|
||||
.join_rev(JoinType::InnerJoin, packages::Relation::Builds.def())
|
||||
.join_rev(JoinType::InnerJoin, versions::Relation::Builds.def())
|
||||
.filter(builds::Column::Id.eq(buildid))
|
||||
.select_only()
|
||||
.column_as(builds::Column::Id, "id")
|
||||
.column(builds::Column::Status)
|
||||
.column_as(packages::Column::Name, "pkg_name")
|
||||
.column(versions::Column::Version)
|
||||
.into_model::<ListBuildsModel>()
|
||||
.one(db).await.map_err(|e| NotFound(e.to_string()))?.ok_or(NotFound("no item with id found".to_string()))?;
|
||||
|
||||
Ok(Json(result))
|
||||
}
|
||||
|
||||
#[derive(FromQueryResult, Deserialize, JsonSchema, Serialize)]
|
||||
#[serde(crate = "rocket::serde")]
|
||||
pub struct ListStats {
|
||||
|
@ -56,11 +56,11 @@ fn main() {
|
||||
let rock = rocket::custom(config)
|
||||
.manage(db)
|
||||
.manage(tx)
|
||||
.mount("/", backend::build_api())
|
||||
.mount("/api/", backend::build_api())
|
||||
.mount(
|
||||
"/docs/",
|
||||
make_swagger_ui(&SwaggerUIConfig {
|
||||
url: "../openapi.json".to_owned(),
|
||||
url: "../api/openapi.json".to_owned(),
|
||||
..Default::default()
|
||||
}),
|
||||
);
|
||||
|
Reference in New Issue
Block a user