mirror of https://github.com/tiangolo/fastapi.git
🔥 Remove unused Peewee tutorial files (#13158)
This commit is contained in:
parent
924c96bf90
commit
d784a90207
|
|
@ -1,30 +0,0 @@
|
||||||
from . import models, schemas
|
|
||||||
|
|
||||||
|
|
||||||
def get_user(user_id: int):
|
|
||||||
return models.User.filter(models.User.id == user_id).first()
|
|
||||||
|
|
||||||
|
|
||||||
def get_user_by_email(email: str):
|
|
||||||
return models.User.filter(models.User.email == email).first()
|
|
||||||
|
|
||||||
|
|
||||||
def get_users(skip: int = 0, limit: int = 100):
|
|
||||||
return list(models.User.select().offset(skip).limit(limit))
|
|
||||||
|
|
||||||
|
|
||||||
def create_user(user: schemas.UserCreate):
|
|
||||||
fake_hashed_password = user.password + "notreallyhashed"
|
|
||||||
db_user = models.User(email=user.email, hashed_password=fake_hashed_password)
|
|
||||||
db_user.save()
|
|
||||||
return db_user
|
|
||||||
|
|
||||||
|
|
||||||
def get_items(skip: int = 0, limit: int = 100):
|
|
||||||
return list(models.Item.select().offset(skip).limit(limit))
|
|
||||||
|
|
||||||
|
|
||||||
def create_user_item(item: schemas.ItemCreate, user_id: int):
|
|
||||||
db_item = models.Item(**item.dict(), owner_id=user_id)
|
|
||||||
db_item.save()
|
|
||||||
return db_item
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
from contextvars import ContextVar
|
|
||||||
|
|
||||||
import peewee
|
|
||||||
|
|
||||||
DATABASE_NAME = "test.db"
|
|
||||||
db_state_default = {"closed": None, "conn": None, "ctx": None, "transactions": None}
|
|
||||||
db_state = ContextVar("db_state", default=db_state_default.copy())
|
|
||||||
|
|
||||||
|
|
||||||
class PeeweeConnectionState(peewee._ConnectionState):
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
super().__setattr__("_state", db_state)
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
|
|
||||||
def __setattr__(self, name, value):
|
|
||||||
self._state.get()[name] = value
|
|
||||||
|
|
||||||
def __getattr__(self, name):
|
|
||||||
return self._state.get()[name]
|
|
||||||
|
|
||||||
|
|
||||||
db = peewee.SqliteDatabase(DATABASE_NAME, check_same_thread=False)
|
|
||||||
|
|
||||||
db._state = PeeweeConnectionState()
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
import time
|
|
||||||
from typing import List
|
|
||||||
|
|
||||||
from fastapi import Depends, FastAPI, HTTPException
|
|
||||||
|
|
||||||
from . import crud, database, models, schemas
|
|
||||||
from .database import db_state_default
|
|
||||||
|
|
||||||
database.db.connect()
|
|
||||||
database.db.create_tables([models.User, models.Item])
|
|
||||||
database.db.close()
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
sleep_time = 10
|
|
||||||
|
|
||||||
|
|
||||||
async def reset_db_state():
|
|
||||||
database.db._state._state.set(db_state_default.copy())
|
|
||||||
database.db._state.reset()
|
|
||||||
|
|
||||||
|
|
||||||
def get_db(db_state=Depends(reset_db_state)):
|
|
||||||
try:
|
|
||||||
database.db.connect()
|
|
||||||
yield
|
|
||||||
finally:
|
|
||||||
if not database.db.is_closed():
|
|
||||||
database.db.close()
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/users/", response_model=schemas.User, dependencies=[Depends(get_db)])
|
|
||||||
def create_user(user: schemas.UserCreate):
|
|
||||||
db_user = crud.get_user_by_email(email=user.email)
|
|
||||||
if db_user:
|
|
||||||
raise HTTPException(status_code=400, detail="Email already registered")
|
|
||||||
return crud.create_user(user=user)
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/users/", response_model=List[schemas.User], dependencies=[Depends(get_db)])
|
|
||||||
def read_users(skip: int = 0, limit: int = 100):
|
|
||||||
users = crud.get_users(skip=skip, limit=limit)
|
|
||||||
return users
|
|
||||||
|
|
||||||
|
|
||||||
@app.get(
|
|
||||||
"/users/{user_id}", response_model=schemas.User, dependencies=[Depends(get_db)]
|
|
||||||
)
|
|
||||||
def read_user(user_id: int):
|
|
||||||
db_user = crud.get_user(user_id=user_id)
|
|
||||||
if db_user is None:
|
|
||||||
raise HTTPException(status_code=404, detail="User not found")
|
|
||||||
return db_user
|
|
||||||
|
|
||||||
|
|
||||||
@app.post(
|
|
||||||
"/users/{user_id}/items/",
|
|
||||||
response_model=schemas.Item,
|
|
||||||
dependencies=[Depends(get_db)],
|
|
||||||
)
|
|
||||||
def create_item_for_user(user_id: int, item: schemas.ItemCreate):
|
|
||||||
return crud.create_user_item(item=item, user_id=user_id)
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/", response_model=List[schemas.Item], dependencies=[Depends(get_db)])
|
|
||||||
def read_items(skip: int = 0, limit: int = 100):
|
|
||||||
items = crud.get_items(skip=skip, limit=limit)
|
|
||||||
return items
|
|
||||||
|
|
||||||
|
|
||||||
@app.get(
|
|
||||||
"/slowusers/", response_model=List[schemas.User], dependencies=[Depends(get_db)]
|
|
||||||
)
|
|
||||||
def read_slow_users(skip: int = 0, limit: int = 100):
|
|
||||||
global sleep_time
|
|
||||||
sleep_time = max(0, sleep_time - 1)
|
|
||||||
time.sleep(sleep_time) # Fake long processing request
|
|
||||||
users = crud.get_users(skip=skip, limit=limit)
|
|
||||||
return users
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
import peewee
|
|
||||||
|
|
||||||
from .database import db
|
|
||||||
|
|
||||||
|
|
||||||
class User(peewee.Model):
|
|
||||||
email = peewee.CharField(unique=True, index=True)
|
|
||||||
hashed_password = peewee.CharField()
|
|
||||||
is_active = peewee.BooleanField(default=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
database = db
|
|
||||||
|
|
||||||
|
|
||||||
class Item(peewee.Model):
|
|
||||||
title = peewee.CharField(index=True)
|
|
||||||
description = peewee.CharField(index=True)
|
|
||||||
owner = peewee.ForeignKeyField(User, backref="items")
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
database = db
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
from typing import Any, List, Union
|
|
||||||
|
|
||||||
import peewee
|
|
||||||
from pydantic import BaseModel
|
|
||||||
from pydantic.utils import GetterDict
|
|
||||||
|
|
||||||
|
|
||||||
class PeeweeGetterDict(GetterDict):
|
|
||||||
def get(self, key: Any, default: Any = None):
|
|
||||||
res = getattr(self._obj, key, default)
|
|
||||||
if isinstance(res, peewee.ModelSelect):
|
|
||||||
return list(res)
|
|
||||||
return res
|
|
||||||
|
|
||||||
|
|
||||||
class ItemBase(BaseModel):
|
|
||||||
title: str
|
|
||||||
description: Union[str, None] = None
|
|
||||||
|
|
||||||
|
|
||||||
class ItemCreate(ItemBase):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class Item(ItemBase):
|
|
||||||
id: int
|
|
||||||
owner_id: int
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
getter_dict = PeeweeGetterDict
|
|
||||||
|
|
||||||
|
|
||||||
class UserBase(BaseModel):
|
|
||||||
email: str
|
|
||||||
|
|
||||||
|
|
||||||
class UserCreate(UserBase):
|
|
||||||
password: str
|
|
||||||
|
|
||||||
|
|
||||||
class User(UserBase):
|
|
||||||
id: int
|
|
||||||
is_active: bool
|
|
||||||
items: List[Item] = []
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
getter_dict = PeeweeGetterDict
|
|
||||||
Loading…
Reference in New Issue