aboutsummaryrefslogtreecommitdiff
path: root/planetwars-server/src/modules
diff options
context:
space:
mode:
Diffstat (limited to 'planetwars-server/src/modules')
-rw-r--r--planetwars-server/src/modules/bots.rs23
-rw-r--r--planetwars-server/src/modules/mod.rs3
2 files changed, 26 insertions, 0 deletions
diff --git a/planetwars-server/src/modules/bots.rs b/planetwars-server/src/modules/bots.rs
new file mode 100644
index 0000000..843e48d
--- /dev/null
+++ b/planetwars-server/src/modules/bots.rs
@@ -0,0 +1,23 @@
+use std::path::PathBuf;
+
+use diesel::{PgConnection, QueryResult};
+
+use crate::{db, util::gen_alphanumeric, BOTS_DIR};
+
+pub fn save_code_bundle(
+ bot_code: &str,
+ bot_id: Option<i32>,
+ conn: &PgConnection,
+) -> QueryResult<db::bots::CodeBundle> {
+ let bundle_name = gen_alphanumeric(16);
+
+ let code_bundle_dir = PathBuf::from(BOTS_DIR).join(&bundle_name);
+ std::fs::create_dir(&code_bundle_dir).unwrap();
+ std::fs::write(code_bundle_dir.join("bot.py"), bot_code).unwrap();
+
+ let new_code_bundle = db::bots::NewCodeBundle {
+ bot_id,
+ path: &bundle_name,
+ };
+ db::bots::create_code_bundle(&new_code_bundle, conn)
+}
diff --git a/planetwars-server/src/modules/mod.rs b/planetwars-server/src/modules/mod.rs
new file mode 100644
index 0000000..57c1ef5
--- /dev/null
+++ b/planetwars-server/src/modules/mod.rs
@@ -0,0 +1,3 @@
+// This module implements general domain logic, not directly
+// tied to the database or API layers.
+pub mod bots;