add ratings table
This commit is contained in:
parent
7b142554d8
commit
a7d56ba0f5
5 changed files with 57 additions and 1 deletions
|
@ -0,0 +1,2 @@
|
|||
-- This file should undo anything in `up.sql`
|
||||
drop table ratings;
|
|
@ -0,0 +1,7 @@
|
|||
-- Your SQL goes here
|
||||
-- this table could later be expanded to include more information,
|
||||
-- such as rating state (eg. number of matches played) or scope (eg. map)
|
||||
create table ratings (
|
||||
bot_id integer PRIMARY KEY REFERENCES bots(id),
|
||||
rating float NOT NULL
|
||||
)
|
|
@ -1,4 +1,5 @@
|
|||
pub mod bots;
|
||||
pub mod matches;
|
||||
pub mod ratings;
|
||||
pub mod sessions;
|
||||
pub mod users;
|
||||
|
|
27
planetwars-server/src/db/ratings.rs
Normal file
27
planetwars-server/src/db/ratings.rs
Normal file
|
@ -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)
|
||||
}
|
|
@ -47,6 +47,16 @@ table! {
|
|||
}
|
||||
}
|
||||
|
||||
table! {
|
||||
use diesel::sql_types::*;
|
||||
use crate::db_types::*;
|
||||
|
||||
ratings (bot_id) {
|
||||
bot_id -> Int4,
|
||||
rating -> Float8,
|
||||
}
|
||||
}
|
||||
|
||||
table! {
|
||||
use diesel::sql_types::*;
|
||||
use crate::db_types::*;
|
||||
|
@ -74,6 +84,15 @@ joinable!(bots -> users (owner_id));
|
|||
joinable!(code_bundles -> bots (bot_id));
|
||||
joinable!(match_players -> code_bundles (code_bundle_id));
|
||||
joinable!(match_players -> matches (match_id));
|
||||
joinable!(ratings -> bots (bot_id));
|
||||
joinable!(sessions -> users (user_id));
|
||||
|
||||
allow_tables_to_appear_in_same_query!(bots, code_bundles, match_players, matches, sessions, users,);
|
||||
allow_tables_to_appear_in_same_query!(
|
||||
bots,
|
||||
code_bundles,
|
||||
match_players,
|
||||
matches,
|
||||
ratings,
|
||||
sessions,
|
||||
users,
|
||||
);
|
||||
|
|
Loading…
Reference in a new issue