Forráskód Böngészése

Create the purchases table file

Lee Morgan 1 hónapja
szülő
commit
e6d7b6d0ef
4 módosított fájl, 21 hozzáadás és 3 törlés
  1. 1 0
      sql/init.sql
  2. 14 0
      sql/purchases.sql
  3. 1 1
      sql/users.sql
  4. 5 2
      src/models/user.rs

+ 1 - 0
sql/init.sql

@@ -3,3 +3,4 @@ CREATE DATABASE chatrpg;
 \c chatrpg
 
 \ir users.sql
+\ir purchases.sql

+ 14 - 0
sql/purchases.sql

@@ -0,0 +1,14 @@
+CREATE TABLE IF NOT EXISTS purchases(
+    id UUID PRIMARY KEY,
+
+    user_id UUID NOT NULL REFERENCES users(id),
+    stripe_id TEXT NOT NULL,
+    status TEXT NOT NULL,
+    token_packs INT NOT NULL,
+    cost_per_token INT NOT NULL,
+    tokens_purchased INT NOT NULL,
+    cost INT NOT NULL,
+    created_at TIMESTAMPTZ NOT NULL
+);
+
+CREATE INDEX idx_token_purchases_user_id ON purchases(user_id);

+ 1 - 1
sql/users.sql

@@ -7,4 +7,4 @@ CREATE TABLE IF NOT EXISTS users(
     pass_hash TEXT NOT NULL,
     tokens BIGINT NOT NULL,
     created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
-)
+);

+ 5 - 2
src/models/user.rs

@@ -73,10 +73,13 @@ impl User {
         )
             .bind(user_id)
             .bind(session_token)
-            .fetch_one(db)
+            .fetch_optional(db)
             .await?;
 
-        Ok(user)
+        match user {
+            Some(u) => Ok(u),
+            _ => Err(HttpError::Auth)
+        }
     }
 
     pub async fn find_one_by_email(db: &PgPool, user_email: String) -> Result<User, HttpError> {