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