aboutsummaryrefslogtreecommitdiff
path: root/planetwars-server/src/db
diff options
context:
space:
mode:
authorIlion Beyst <ilion.beyst@gmail.com>2022-05-09 19:41:33 +0200
committerIlion Beyst <ilion.beyst@gmail.com>2022-05-09 19:41:33 +0200
commita7d56ba0f54273920743109fe1a6541030f3c003 (patch)
tree879305f9682d6be538dea522b58ceeb07acbfd16 /planetwars-server/src/db
parent7b142554d808a494df4ba9e616c58861370ccd93 (diff)
downloadplanetwars.dev-a7d56ba0f54273920743109fe1a6541030f3c003.tar.xz
planetwars.dev-a7d56ba0f54273920743109fe1a6541030f3c003.zip
add ratings table
Diffstat (limited to 'planetwars-server/src/db')
-rw-r--r--planetwars-server/src/db/mod.rs1
-rw-r--r--planetwars-server/src/db/ratings.rs27
2 files changed, 28 insertions, 0 deletions
diff --git a/planetwars-server/src/db/mod.rs b/planetwars-server/src/db/mod.rs
index 7a950c6..84ed2a6 100644
--- a/planetwars-server/src/db/mod.rs
+++ b/planetwars-server/src/db/mod.rs
@@ -1,4 +1,5 @@
pub mod bots;
pub mod matches;
+pub mod ratings;
pub mod sessions;
pub mod users;
diff --git a/planetwars-server/src/db/ratings.rs b/planetwars-server/src/db/ratings.rs
new file mode 100644
index 0000000..bee8548
--- /dev/null
+++ b/planetwars-server/src/db/ratings.rs
@@ -0,0 +1,27 @@
+use diesel::{prelude::*, PgConnection, QueryResult};
+use serde::{Deserialize, Serialize};
+
+use crate::schema::{bots, ratings};
+
+#[derive(Queryable, Debug, Insertable, PartialEq, Serialize, Deserialize)]
+pub struct Rating {
+ pub bot_id: i32,
+ pub rating: f64,
+}
+
+pub fn get_rating(bot_id: i32, db_conn: &PgConnection) -> QueryResult<Option<f64>> {
+ ratings::table
+ .filter(ratings::bot_id.eq(bot_id))
+ .select(ratings::rating)
+ .first(db_conn)
+ .optional()
+}
+
+pub fn set_rating(bot_id: i32, rating: f64, db_conn: &PgConnection) -> QueryResult<usize> {
+ diesel::insert_into(ratings::table)
+ .values(Rating { bot_id, rating })
+ .on_conflict(ratings::bot_id)
+ .do_update()
+ .set(ratings::rating.eq(rating))
+ .execute(db_conn)
+}