diff options
Diffstat (limited to 'planetwars-server')
-rw-r--r-- | planetwars-server/src/db/bots.rs | 5 | ||||
-rw-r--r-- | planetwars-server/src/lib.rs | 6 | ||||
-rw-r--r-- | planetwars-server/src/routes/bots.rs | 6 | ||||
-rw-r--r-- | planetwars-server/src/routes/matches.rs | 12 | ||||
-rw-r--r-- | planetwars-server/src/routes/mod.rs | 1 |
5 files changed, 29 insertions, 1 deletions
diff --git a/planetwars-server/src/db/bots.rs b/planetwars-server/src/db/bots.rs index eb66c05..bef69c0 100644 --- a/planetwars-server/src/db/bots.rs +++ b/planetwars-server/src/db/bots.rs @@ -34,6 +34,11 @@ pub fn find_bots_by_owner(owner_id: i32, conn: &PgConnection) -> QueryResult<Vec .get_results(conn) } +pub fn find_all_bots(conn: &PgConnection) -> QueryResult<Vec<Bot>> { + // TODO: filter out bots that cannot be run (have no valid code bundle associated with them) + bots::table.get_results(conn) +} + #[derive(Insertable)] #[table_name = "code_bundles"] pub struct NewCodeBundle<'a> { diff --git a/planetwars-server/src/lib.rs b/planetwars-server/src/lib.rs index 46c1100..01e9041 100644 --- a/planetwars-server/src/lib.rs +++ b/planetwars-server/src/lib.rs @@ -33,13 +33,17 @@ pub async fn api() -> Router { .route("/register", post(routes::users::register)) .route("/login", post(routes::users::login)) .route("/users/me", get(routes::users::current_user)) - .route("/bots", post(routes::bots::create_bot)) + .route( + "/bots", + get(routes::bots::list_bots).post(routes::bots::create_bot), + ) .route("/bots/my_bots", get(routes::bots::get_my_bots)) .route("/bots/:bot_id", get(routes::bots::get_bot)) .route( "/bots/:bot_id/upload", post(routes::bots::upload_code_multipart), ) + .route("/matches", post(routes::matches::play_match)) .layer(AddExtensionLayer::new(pool)); api } diff --git a/planetwars-server/src/routes/bots.rs b/planetwars-server/src/routes/bots.rs index f722e52..8327443 100644 --- a/planetwars-server/src/routes/bots.rs +++ b/planetwars-server/src/routes/bots.rs @@ -58,6 +58,12 @@ pub async fn get_my_bots( .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR) } +pub async fn list_bots(conn: DatabaseConnection) -> Result<Json<Vec<Bot>>, StatusCode> { + bots::find_all_bots(&conn) + .map(Json) + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR) +} + // TODO: currently this only implements the happy flow pub async fn upload_code_multipart( conn: DatabaseConnection, diff --git a/planetwars-server/src/routes/matches.rs b/planetwars-server/src/routes/matches.rs new file mode 100644 index 0000000..7eca6ab --- /dev/null +++ b/planetwars-server/src/routes/matches.rs @@ -0,0 +1,12 @@ +use axum::Json; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug)] +pub struct MatchParams { + // Just bot ids for now + players: Vec<i32>, +} + +pub async fn play_match(params: Json<MatchParams>) { + println!("start match: {:#?}", params); +} diff --git a/planetwars-server/src/routes/mod.rs b/planetwars-server/src/routes/mod.rs index 718d7ef..c2d3c44 100644 --- a/planetwars-server/src/routes/mod.rs +++ b/planetwars-server/src/routes/mod.rs @@ -1,2 +1,3 @@ pub mod bots; +pub mod matches; pub mod users; |