From 66d8144a03fe2b4ce6a53000271f8ba61ede68ee Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 11 May 2025 20:16:42 -0700 Subject: [PATCH] add: schema, add user but no middleware --- Cargo.toml | 19 +++++++++++ schema.sql | 29 +++++++++++++++++ src/app.rs | 4 +++ src/app/user.rs | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ src/common.rs | 23 +++++++++---- src/lib.rs | 2 ++ src/main.rs | 43 +++++++++++++++++++++--- src/pool.rs | 1 + 8 files changed, 198 insertions(+), 10 deletions(-) create mode 100644 schema.sql create mode 100644 src/app/user.rs create mode 100644 src/pool.rs diff --git a/Cargo.toml b/Cargo.toml index 3326466..6767ef0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,13 @@ tokio = { version = "1", features = ["rt-multi-thread"], optional = true } wasm-bindgen = { version = "=0.2.100", optional = true } serde = { version = "1.0.219", features = ["derive"] } +tokio-postgres = { version = "0.7.13", optional = true } +clap = { version = "4.5.37", features = ["derive"], optional = true } +anyhow = { version = "1.0.98", optional = true } +log = { version = "0.4.27", optional = true } +env_logger = { version = "0.11.8", optional = true } +rand = { version = "0.9.1", optional = true} + [features] hydrate = [ "leptos/hydrate", @@ -27,10 +34,22 @@ ssr = [ "dep:axum", "dep:tokio", "dep:leptos_axum", + "dep:tokio-postgres", + "dep:clap", + "dep:anyhow", + "dep:log", + "dep:env_logger", + "dep:rand", "leptos/ssr", "leptos_meta/ssr", "leptos_router/ssr", ] +env_logger = ["dep:env_logger"] +log = ["dep:log"] +anyhow = ["dep:anyhow"] +clap = ["dep:clap"] +tokio-postgres = ["dep:tokio-postgres"] +rand = ["dep:rand"] # Defines a size-optimized profile for the WASM bundle in release mode [profile.wasm-release] diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..517fc49 --- /dev/null +++ b/schema.sql @@ -0,0 +1,29 @@ +CREATE TABLE IF NOT EXISTS Users ( + -- for foreign key relations + user_id SERIAL PRIMARY KEY, + -- Public key posted next to display name; never changes + pub VARCHAR(255), + -- Private key used by user to login + priv VARCHAR(4096), + display_name VARCHAR(255) +); + +CREATE TABLE IF NOT EXISTS UserRooms ( + user_id INTEGER, + room_id INTEGER +); + +CREATE TABLE IF NOT EXISTS Rooms ( + room_id SERIAL PRIMARY KEY, + + display_name VARCHAR(255) +); + +CREATE UNIQUE INDEX IF NOT EXISTS display_name_idx ON Rooms (display_name); + +CREATE TABLE IF NOT EXISTS UserVote ( + user_id INTEGER, + imdb_title VARCHAR(255), + + rank INTEGER +); \ No newline at end of file diff --git a/src/app.rs b/src/app.rs index 849adc9..cbb5131 100644 --- a/src/app.rs +++ b/src/app.rs @@ -4,9 +4,12 @@ use leptos_router::{ components::{Route, Router, Routes}, StaticSegment, }; + +use user::User; use movies::Movies; mod movies; +mod user; pub fn shell(options: LeptosOptions) -> impl IntoView { view! { @@ -89,6 +92,7 @@ fn HomePage() -> impl IntoView { view! {

"Welcome to Wiseau movie picker"

+