Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
55 строки
1.2 KiB
Python
55 строки
1.2 KiB
Python
from fastapi import FastAPI
|
|
|
|
|
|
class EventStore:
|
|
|
|
def __init__(self, max_events_per_user=10):
|
|
self.events = {}
|
|
self.max_events_per_user = max_events_per_user
|
|
|
|
|
|
def get(self, user_id):
|
|
"""
|
|
Возвращает события для пользователя
|
|
"""
|
|
|
|
if user_id in self.events:
|
|
user_events = self.events[user_id]
|
|
else:
|
|
user_events = []
|
|
|
|
return user_events
|
|
|
|
|
|
def put(self, user_id, item_id):
|
|
"""
|
|
Сохраняет событие для пользователя
|
|
"""
|
|
user_events = self.get(user_id)
|
|
self.events[user_id] = [item_id] + user_events[: self.max_events_per_user]
|
|
|
|
|
|
events_store = EventStore()
|
|
|
|
app = FastAPI(title="events")
|
|
|
|
@app.post("/put")
|
|
async def put(user_id: int, item_id: int):
|
|
"""
|
|
Сохраняет событие для user_id, item_id
|
|
"""
|
|
events_store.put(user_id, item_id)
|
|
|
|
return {"result": "ok"}
|
|
|
|
|
|
@app.get("/get")
|
|
async def get(user_id: int, k: int = 10):
|
|
"""
|
|
Возвращает список последних k событий для пользователя user_id
|
|
"""
|
|
events = events_store.get(user_id)[:k]
|
|
|
|
return {"events": events}
|
|
|