From c59d9eb34a1cf3ace2574affb1eb3b4e3b320d3d Mon Sep 17 00:00:00 2001 From: r0r-5chach Date: Thu, 6 Jun 2024 18:19:27 +0100 Subject: [PATCH] database entities --- src/db.rs | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/db.rs diff --git a/src/db.rs b/src/db.rs new file mode 100644 index 0000000..23724da --- /dev/null +++ b/src/db.rs @@ -0,0 +1,66 @@ +use serde::{Deserialize, Serialize}; +use mongodb::{ + bson::{DateTime, oid::ObjectId}, + Client, + Database, + error::Error, +}; + +pub async fn get_database_client() -> Result { + Ok(Client::with_uri_str("mongodb:://localhost:27017").await?.database("dermy")) +} + +#[derive(Serialize, Deserialize)] +pub struct Mole { + #[serde(rename = "_id", skip_serializing_if = "Option::is_none")] + id: Option, + #[serde(rename="_user_id")] + user_id: ObjectId, + #[serde(rename="_image_path")] + image_path: Option, + location: Location, +} + +#[derive(Serialize, Deserialize)] +pub enum Location { + FrontLocation(FrontLocation), + LeftSideLocation(LeftSideLocation), + RightSideLocation(RightSideLocation), + BackLocation(BackLocation), +} + +#[derive(Serialize, Deserialize)] +pub enum FrontLocation {} //TODO: Add front locations +#[derive(Serialize, Deserialize)] +pub enum LeftSideLocation {} //TODO: Add left side locations +#[derive(Serialize, Deserialize)] +pub enum RightSideLocation {} //TODO: Add right side locations +#[derive(Serialize, Deserialize)] +pub enum BackLocation {} //TODO: Add back locations + +#[derive(Serialize, Deserialize)] +pub struct LogEntry { + #[serde(rename = "_id", skip_serializing_if = "Option::is_none")] + id: Option, + #[serde(rename = "_date_created")] + date_created: DateTime, + contents: String, + #[serde(rename = "_mole_id")] + mole_id: ObjectId +} + +#[derive(Serialize, Deserialize)] +pub struct User { + #[serde(rename = "_id", skip_serializing_if = "Option::is_none")] + id: Option, + #[serde(rename="_auth")] + auth: Auth, + username: String, +} +#[derive(Serialize, Deserialize)] +pub struct Auth { + #[serde(rename = "_hash", skip_serializing_if = "String::is_empty")] + hash: String, + #[serde(rename = "_salt", skip_serializing_if = "String::is_empty")] + salt: String, +}