Skip to content

Commit fd1bc04

Browse files
Added sqllite db to store messages
1 parent 36dcf82 commit fd1bc04

2 files changed

Lines changed: 39 additions & 1 deletion

File tree

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
fastapi
22
uvicorn
3-
websockets
3+
websockets
4+
sqlite3

server.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,24 @@
22
from typing import List
33
import uvicorn
44
import json
5+
import sqlite3
56

67
app = FastAPI()
78

9+
conn = sqlite3.connect("chat.db", check_same_thread=False)
10+
cursor = conn.cursor()
11+
12+
cursor.execute("""
13+
CREATE TABLE IF NOT EXISTS messages (
14+
id INTEGER PRIMARY KEY AUTOINCREMENT,
15+
name TEXT,
16+
text TEXT,
17+
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
18+
)
19+
""")
20+
21+
conn.commit()
22+
823

924
class ConnectionManager:
1025

@@ -32,6 +47,18 @@ async def websocket_endpoint(websocket: WebSocket):
3247

3348
await manager.connect(websocket)
3449

50+
cursor.execute(
51+
"SELECT name, text FROM messages ORDER BY id DESC LIMIT 50"
52+
)
53+
54+
rows = cursor.fetchall()
55+
56+
for name, text in reversed(rows):
57+
await websocket.send_text(json.dumps({
58+
"name": name,
59+
"text": text
60+
}))
61+
3562
try:
3663

3764
while True:
@@ -40,6 +67,16 @@ async def websocket_endpoint(websocket: WebSocket):
4067

4168
message = json.loads(data)
4269

70+
name = message.get("name")
71+
text = message.get("text")
72+
73+
cursor.execute(
74+
"INSERT INTO messages (name, text) VALUES (?, ?)",
75+
(name, text)
76+
)
77+
78+
conn.commit()
79+
4380
await manager.broadcast(json.dumps(message))
4481

4582
except WebSocketDisconnect:

0 commit comments

Comments
 (0)