r2_data_persistence/models/
session.rs

1use crate::schema::session;
2use diesel::{AsChangeset, Insertable};
3
4pub struct GetSessionModel {
5    pub id: String,
6    pub user_uuid: String,
7    pub map_id: String,
8    pub session_date: chrono::NaiveDateTime,
9    pub difficulty: String,
10    pub accuracy: f32,
11    pub level: i32,
12    pub game_time: i32,
13    pub score_value: i32,
14    pub targets_hit: i32,
15    pub targets_miss: i32,
16    pub average_offset_time: i32,
17    pub personal_best: bool,
18}
19
20#[derive(Insertable, Clone)]
21#[diesel(table_name = session)]
22pub struct CreateSessionModel {
23    pub user_uuid: String,
24    pub map_id: String,
25    pub session_date: chrono::NaiveDateTime,
26    pub difficulty: String,
27    pub accuracy: f32,
28    pub level: i32,
29    pub game_time: i32,
30    pub score_value: i32,
31    pub targets_hit: i32,
32    pub targets_miss: i32,
33    pub average_offset_time: i32,
34    pub personal_best: bool,
35}
36
37#[derive(AsChangeset)]
38#[diesel(table_name = session)]
39pub struct UpdateSessionModel {
40    pub user_uuid: Option<String>,
41    pub map_id: Option<String>,
42    pub session_date: Option<chrono::NaiveDateTime>,
43    pub difficulty: Option<String>,
44    pub accuracy: Option<f32>,
45    pub level: Option<i32>,
46    pub game_time: Option<i32>,
47    pub score_value: Option<i32>,
48    pub targets_hit: Option<i32>,
49    pub targets_miss: Option<i32>,
50    pub average_offset_time: Option<i32>,
51    pub personal_best: Option<bool>,
52}