create reservatoin status getter that returns enum

This commit is contained in:
Akulij 2025-04-07 23:24:18 +09:00
parent 21081c3206
commit 07a10fae0e
3 changed files with 47 additions and 0 deletions

28
Cargo.lock generated
View File

@ -187,6 +187,15 @@ dependencies = [
"crossbeam-utils",
]
[[package]]
name = "convert_case"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
dependencies = [
"unicode-segmentation",
]
[[package]]
name = "core-foundation"
version = "0.9.4"
@ -440,6 +449,18 @@ dependencies = [
"serde",
]
[[package]]
name = "enum_stringify"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9ff9e4dbfa8fb0fd68ff9e4da874ad10774af372f0e2b8d1649c63026434d37"
dependencies = [
"convert_case",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "envconfig"
version = "0.11.0"
@ -714,6 +735,7 @@ dependencies = [
"diesel-async",
"diesel-derive-enum",
"dotenvy",
"enum_stringify",
"envconfig",
"serde",
"teloxide",
@ -2438,6 +2460,12 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0"
[[package]]
name = "unicode-segmentation"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
[[package]]
name = "unicode-xid"
version = "0.2.6"

View File

@ -10,6 +10,7 @@ diesel = { version = "2.2.8", features = ["postgres"] }
diesel-async = { version = "0.5.2", features = ["bb8", "postgres"] }
diesel-derive-enum = "2.1.0"
dotenvy = "0.15.7"
enum_stringify = "0.6.3"
envconfig = "0.11.0"
serde = { version = "1.0.219", features = ["derive", "serde_derive"] }
teloxide = { version = "0.14.0", features = ["macros", "postgres-storage-nativetls"] }

View File

@ -9,6 +9,24 @@ use diesel_async::pooled_connection::bb8::Pool;
use diesel_async::pooled_connection::AsyncDieselConnectionManager;
use diesel_async::AsyncPgConnection;
use diesel_async::RunQueryDsl;
use enum_stringify::EnumStringify;
#[derive(EnumStringify)]
#[enum_stringify(case = "flat")]
pub enum ReservationStatus {
Booked,
Paid,
}
pub trait GetReservationStatus {
fn get_status(&self) -> Option<ReservationStatus>;
}
impl GetReservationStatus for models::Reservation {
fn get_status(&self) -> Option<ReservationStatus> {
ReservationStatus::try_from(self.status.clone()).ok()
}
}
#[derive(Clone)]
pub struct DB {