File size: 1,703 Bytes
eb9fb34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from fastapi import FastAPI, Request
import psycopg2
import os

app = FastAPI()

# 🔥 Put your CockroachDB connection string in Hugging Face Secrets
DB_URL = os.getenv("DB_URL")

conn = psycopg2.connect(DB_URL)
conn.autocommit = True


@app.get("/")
def home():
    return {"status": "Backend running 🚀"}


# -----------------------
# SIGNUP
# -----------------------
@app.post("/signup")
async def signup(req: Request):
    data = await req.json()

    name = data.get("name")
    email = data.get("email")
    password = data.get("password")
    country = data.get("country")

    cur = conn.cursor()

    # check user exists
    cur.execute("SELECT email FROM users WHERE email=%s", (email,))
    if cur.fetchone():
        return {"message": "User already exists"}

    # insert user
    cur.execute("""
        INSERT INTO users (name, email, password, country)
        VALUES (%s, %s, %s, %s)
    """, (name, email, password, country))

    return {"message": "User created successfully"}


# -----------------------
# LOGIN
# -----------------------
@app.post("/login")
async def login(req: Request):
    data = await req.json()

    email = data.get("email")
    password = data.get("password")

    cur = conn.cursor()

    cur.execute("""
        SELECT id, name, email, country
        FROM users
        WHERE email=%s AND password=%s
    """, (email, password))

    user = cur.fetchone()

    if user:
        return {
            "message": "Login success",
            "user": {
                "id": user[0],
                "name": user[1],
                "email": user[2],
                "country": user[3]
            }
        }

    return {"message": "Invalid credentials"}