diff options
Diffstat (limited to 'planetwars-server/src/modules')
-rw-r--r-- | planetwars-server/src/modules/bots.rs | 23 | ||||
-rw-r--r-- | planetwars-server/src/modules/mod.rs | 3 |
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; |