diff options
author | Ilion Beyst <ilion.beyst@gmail.com> | 2022-02-27 20:35:22 +0100 |
---|---|---|
committer | Ilion Beyst <ilion.beyst@gmail.com> | 2022-02-27 20:35:22 +0100 |
commit | 22a8f3d619e8ef89eeb9a60ab0a27aed01aa93f7 (patch) | |
tree | 1d6307c96ebd3456e74509203e1155a2c82ffee1 /planetwars-server/src/modules | |
parent | 6ef6a872fe3bbe389e92145b39fd88d864f6a790 (diff) | |
download | planetwars.dev-22a8f3d619e8ef89eeb9a60ab0a27aed01aa93f7.tar.xz planetwars.dev-22a8f3d619e8ef89eeb9a60ab0a27aed01aa93f7.zip |
save all uploaded code bundles in database
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; |