from fastapi import FastAPI, Request, Form from fastapi.responses import HTMLResponse, RedirectResponse import sqlite3 app = FastAPI() conn = sqlite3.connect("chat.db", check_same_thread=False) c = conn.cursor() c.execute(""" CREATE TABLE IF NOT EXISTS users( username TEXT, password TEXT ) """) c.execute(""" CREATE TABLE IF NOT EXISTS messages( username TEXT, message TEXT ) """) conn.commit() @app.get("/", response_class=HTMLResponse) def home(): return """

Emalawi19 Chat

Login
Register """ @app.get("/register", response_class=HTMLResponse) def register_page(): return """

Register



""" @app.post("/register") def register(username: str = Form(...), password: str = Form(...)): c.execute("INSERT INTO users VALUES(?,?)",(username,password)) conn.commit() return RedirectResponse("/login", status_code=302) @app.get("/login", response_class=HTMLResponse) def login_page(): return """

Login



""" @app.post("/login") def login(username: str = Form(...), password: str = Form(...)): user = c.execute( "SELECT * FROM users WHERE username=? AND password=?", (username,password) ).fetchone() if user: return RedirectResponse(f"/chat/{username}", status_code=302) return "Login failed" @app.get("/chat/{username}", response_class=HTMLResponse) def chat(username: str): msgs = c.execute("SELECT username,message FROM messages").fetchall() chat_html = "" for u,m in msgs: chat_html += f"

{u}: {m}

" return f"""

Emalawi19 Chat - {username}

{chat_html}
""" @app.post("/send/{username}") def send(username: str, message: str = Form(...)): c.execute("INSERT INTO messages VALUES(?,?)",(username,message)) conn.commit() return RedirectResponse(f"/chat/{username}", status_code=302) # IMPORTANT: start server if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=7860)