diff --git a/backend/src/api.rs b/backend/src/api.rs index dcbf0a0..0fa0f44 100644 --- a/backend/src/api.rs +++ b/backend/src/api.rs @@ -24,7 +24,7 @@ pub mod demos { let steam_id = session.data().steam_id.ok_or_else(|| axum::http::StatusCode::UNAUTHORIZED)?; tracing::info!("SteamID: {:?}", steam_id); - let query = crate::schema::demos::dsl::demos.filter(crate::schema::demos::dsl::steam_id.eq(steam_id as i64)); + let query = crate::schema::demos::dsl::demos.filter(crate::schema::demos::dsl::steam_id.eq(steam_id.to_string())); let results: Vec = query.load(&mut crate::db_connection().await).await.unwrap(); Ok(axum::response::Json(results.into_iter().map(|demo| common::BaseDemoInfo { @@ -52,7 +52,7 @@ pub mod demos { let query = diesel::dsl::insert_into(crate::schema::demos::dsl::demos).values(crate::models::Demo { demo_id: timestamp_secs as i64, - steam_id: steam_id as i64, + steam_id: steam_id.to_string(), }); query.execute(&mut crate::db_connection().await).await.unwrap(); diff --git a/backend/src/diesel_sessionstore.rs b/backend/src/diesel_sessionstore.rs index d95f16c..cdd9977 100644 --- a/backend/src/diesel_sessionstore.rs +++ b/backend/src/diesel_sessionstore.rs @@ -42,7 +42,7 @@ impl DieselStore { #[async_trait::async_trait] impl tower_sessions::SessionStore for DieselStore { async fn save(&self,session_record: &tower_sessions::session::Record) -> tower_sessions::session_store::Result<()> { - let db_id = self.id_to_bytes(session_record.id.0); + let db_id = session_record.id.0.to_string(); let data = serde_json::to_value(&session_record.data).unwrap(); let expiry_date = self.expiry_to_string(&session_record.expiry_date); @@ -69,7 +69,7 @@ impl tower_sessions::SessionStore for DieselStore { } async fn load(&self,session_id: &tower_sessions::session::Id) -> tower_sessions::session_store::Result> { - let db_id = self.id_to_bytes(session_id.0); + let db_id = session_id.0.to_string(); let query = crate::schema::sessions::dsl::sessions.filter(crate::schema::sessions::dsl::id.eq(db_id)); @@ -97,14 +97,14 @@ impl tower_sessions::SessionStore for DieselStore { }; Ok(Some(tower_sessions::session::Record { - id: tower_sessions::session::Id(self.bytes_to_id(result.id)), - data: data, + id: tower_sessions::session::Id(result.id.parse().unwrap()), + data, expiry_date: self.string_to_expiry(&result.expiry_date), })) } async fn delete(&self,session_id: &tower_sessions::session::Id) -> tower_sessions::session_store::Result<()> { - let db_id = self.id_to_bytes(session_id.0); + let db_id = session_id.0.to_string(); let query = crate::schema::sessions::dsl::sessions.filter(crate::schema::sessions::dsl::id.eq(db_id)); diff --git a/backend/src/models.rs b/backend/src/models.rs index e26224d..ae82344 100644 --- a/backend/src/models.rs +++ b/backend/src/models.rs @@ -4,7 +4,7 @@ use diesel::prelude::*; #[diesel(table_name = crate::schema::sessions)] #[diesel(check_for_backend(diesel::pg::Pg))] pub struct Session { - pub id: Vec, + pub id: String, pub steamid: Option, pub expiry_date: String, } @@ -13,7 +13,7 @@ pub struct Session { #[diesel(table_name = crate::schema::demos)] #[diesel(check_for_backend(diesel::pg::Pg))] pub struct Demo { - pub steam_id: i64, + pub steam_id: String, pub demo_id: i64, } diff --git a/backend/src/schema.rs b/backend/src/schema.rs index 5a44d66..dd9ec99 100644 --- a/backend/src/schema.rs +++ b/backend/src/schema.rs @@ -1,21 +1,29 @@ +// @generated automatically by Diesel CLI. + +diesel::table! { + demos (steam_id, demo_id) { + steam_id -> Text, + demo_id -> Int8, + } +} + diesel::table! { sessions (id) { - id -> Array, + id -> Text, steamid -> Nullable, expiry_date -> Text, } } diesel::table! { - demos (steam_id, demo_id) { - steam_id -> BigInt, - demo_id -> BigInt + users (steamid) { + steamid -> Text, + name -> Text, } } -diesel::table! { - users (steamid) { - steamid -> Text, - name -> Text - } -} +diesel::allow_tables_to_appear_in_same_query!( + demos, + sessions, + users, +); diff --git a/diesel.toml b/diesel.toml index a56cd53..91d3a5b 100644 --- a/diesel.toml +++ b/diesel.toml @@ -2,8 +2,5 @@ # see https://diesel.rs/guides/configuring-diesel-cli [print_schema] -file = "src/schema.rs" +file = "backend/src/schema.rs" custom_type_derives = ["diesel::query_builder::QueryId", "Clone"] - -[migrations_directory] -dir = "/Users/leon/Documents/coding/rust/knifer/migrations" diff --git a/migrations/2024-09-07-130446_sessions/up.sql b/migrations/2024-09-07-130446_sessions/up.sql index c6914e5..5d40ba5 100644 --- a/migrations/2024-09-07-130446_sessions/up.sql +++ b/migrations/2024-09-07-130446_sessions/up.sql @@ -1,6 +1,6 @@ -- Your SQL goes here CREATE TABLE IF NOT EXISTS sessions ( - id bigint[2] PRIMARY KEY, + id TEXT NOT NULL PRIMARY KEY, steamid TEXT, - expiry_date TEXT + expiry_date TEXT NOT NULL ) diff --git a/migrations/2024-09-07-151517_demos/up.sql b/migrations/2024-09-07-151517_demos/up.sql index 8ac6e34..0575c0f 100644 --- a/migrations/2024-09-07-151517_demos/up.sql +++ b/migrations/2024-09-07-151517_demos/up.sql @@ -1,6 +1,6 @@ -- Your SQL goes here CREATE TABLE IF NOT EXISTS demos ( - steam_id bigint, - demo_id bigint, + steam_id TEXT NOT NULL, + demo_id bigint NOT NULL, PRIMARY KEY(steam_id, demo_id) ) diff --git a/migrations/2024-09-10-123500_users/up.sql b/migrations/2024-09-10-123500_users/up.sql index cb65de2..3673015 100644 --- a/migrations/2024-09-10-123500_users/up.sql +++ b/migrations/2024-09-10-123500_users/up.sql @@ -1,5 +1,5 @@ -- Your SQL goes here CREATE TABLE IF NOT EXISTS users ( steamid TEXT PRIMARY KEY, - name TEXT + name TEXT NOT NULL ) diff --git a/src/schema.rs b/src/schema.rs deleted file mode 100644 index 401442f..0000000 --- a/src/schema.rs +++ /dev/null @@ -1,21 +0,0 @@ -// @generated automatically by Diesel CLI. - -diesel::table! { - demos (steam_id, demo_id) { - steam_id -> Int8, - demo_id -> Int8, - } -} - -diesel::table! { - sessions (id) { - id -> Array>, - data -> Nullable, - expiry_date -> Nullable, - } -} - -diesel::allow_tables_to_appear_in_same_query!( - demos, - sessions, -);