Gate_B24YAT/main.py

80 lines
1.9 KiB
Python

from datetime import datetime
from enum import Enum
from fastapi import FastAPI
from pydantic import BaseModel, Field
from typing import List, Optional
app = FastAPI(
title="Trading App"
)
fake_users = [
{"id": 1, "role": "admin", "name": "Bob"},
{"id": 2, "role": "investor", "name": "John"},
{"id": 3, "role": "trader", "name": "Matt"},
{"id": 4, "role": "investor", "name": "Hammer", "degree": [
{"id": 1, "created_at": "2020-01-01T00:00:00", "type_degree": "expert"},
]},
]
class DegreeType(Enum):
newbie = "newbie"
expert = "expert"
class Degree(BaseModel):
id: int
created_at: datetime
type_degree: DegreeType
class User(BaseModel):
id: int
role: str
name: str
degree: Optional[List[Degree]] = 0
@app.get("/users/{user_id}", response_model=List[User])
def get_user(user_id: int):
return [user for user in fake_users if user.get("id") == user_id]
fake_trades = [
{"id": 1, "user_id": 1, "currency": "BTC", "side": "buy", "price": 123},
{"id": 2, "user_id": 1, "currency": "BTC", "side": "sell", "price": 125},
]
@app.get("/trades")
def get_trades(limit: int = 2, offset: int = 1):
return fake_trades[offset:][:limit]
fake_users2 = [
{"id": 1, "role": "admin", "name": "Bob"},
{"id": 2, "role": "investor", "name": "John"},
{"id": 3, "role": "trader", "name": "Matt"},
]
@app.post("/users/{users_id}")
def change_user_name(user_id: int, new_name: str):
current_user = list(filter(lambda user: user.get("id") == user_id, fake_users2))[0]
current_user["name"] = new_name
return {"status": 200, "data": current_user}
class Trade(BaseModel):
id: int
user_id: int
currency: str
side: str
price: float = Field(ge=0)
amount: float
@app.post("/trades")
def add_trades(trades: List[Trade]):
fake_trades.extend(trades)
return {"status": 200, "data": fake_trades}