aboutsummaryrefslogtreecommitdiff
path: root/planetwars-server
diff options
context:
space:
mode:
authorIlion Beyst <ilion.beyst@gmail.com>2022-01-01 11:26:49 +0100
committerIlion Beyst <ilion.beyst@gmail.com>2022-01-01 11:26:49 +0100
commite145947d052450618af3ba094e66a27c3c7f86e4 (patch)
tree5aff15f6ffb98710323b0ebadb58f733e75cbead /planetwars-server
parent8d3b8fd8aa9603f5377f1b37963190ac2c01e9dd (diff)
downloadplanetwars.dev-e145947d052450618af3ba094e66a27c3c7f86e4.tar.xz
planetwars.dev-e145947d052450618af3ba094e66a27c3c7f86e4.zip
match form stubs
Diffstat (limited to 'planetwars-server')
-rw-r--r--planetwars-server/src/db/bots.rs5
-rw-r--r--planetwars-server/src/lib.rs6
-rw-r--r--planetwars-server/src/routes/bots.rs6
-rw-r--r--planetwars-server/src/routes/matches.rs12
-rw-r--r--planetwars-server/src/routes/mod.rs1
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;