Screwed up with git
This commit is contained in:
parent
5bb54cc9dc
commit
bcee4fd482
|
@ -0,0 +1,27 @@
|
|||
from sqlalchemy.orm import Session
|
||||
|
||||
import models
|
||||
|
||||
# import schemas
|
||||
|
||||
|
||||
def create_movie(db: Session, name: str = ""):
|
||||
db_movie = models.Movie(name=name)
|
||||
db.add(db_movie)
|
||||
db.commit()
|
||||
db.refresh(db_movie)
|
||||
return db_movie
|
||||
|
||||
|
||||
def get_movie_by_name(db: Session, name: str = ""):
|
||||
db_movie = db.query(models.Movie).filter(models.Movie.name == name)
|
||||
return db.movie.all()
|
||||
|
||||
|
||||
def get_movie_by_id(db: Session, id_: str = ""):
|
||||
try:
|
||||
id_ = int(id_)
|
||||
except ValueError:
|
||||
pass
|
||||
db_movie = db.query(models.Movie).filter(models.Movie.id == id_)
|
||||
return db_movie.one()
|
19
dev.py
19
dev.py
|
@ -1,10 +1,10 @@
|
|||
from fastapi import FastAPI, Depends
|
||||
from fastapi import FastAPI, Depends, Request
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
import uvicorn
|
||||
from database import SessionLocal, engine
|
||||
import models
|
||||
|
||||
import crud
|
||||
|
||||
models.Base.metadata.create_all(bind=engine)
|
||||
|
||||
|
@ -26,19 +26,28 @@ async def root():
|
|||
|
||||
|
||||
@app.post("/movies/")
|
||||
async def create_movie(name: str = "", db: Session = Depends(get_db)):
|
||||
async def create_movie(
|
||||
name: str = "", db: Session = Depends(get_db), request: Request = None
|
||||
):
|
||||
out = {}
|
||||
assert name
|
||||
data = await request.json()
|
||||
name = name or data["name"]
|
||||
movie = models.Movie()
|
||||
movie.name = name
|
||||
db.add(movie)
|
||||
db.flush()
|
||||
db.commit()
|
||||
db.refresh(movie)
|
||||
breakpoint()
|
||||
out = {"message": f"Created {movie.name} XX", "id": movie.id}
|
||||
return out
|
||||
|
||||
|
||||
@app.get("/movies/{id_}")
|
||||
async def get_movie(id_: str, db: Session = Depends(get_db)):
|
||||
movie = crud.get_movie_by_id(db, id_)
|
||||
out = {k: v for (k, v) in movie.__dict__.items() if not k.startswith("_")}
|
||||
return out
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run(app, host="127.0.0.1", port=5000)
|
||||
|
|
|
@ -60,6 +60,22 @@ def test_sample_crud():
|
|||
assert movie.name == name
|
||||
|
||||
|
||||
def test_list_movies():
|
||||
response = client.get("/movies/")
|
||||
assert response.json() == []
|
||||
|
||||
N = 10
|
||||
names = []
|
||||
with db_context() as db:
|
||||
for _ in range(N):
|
||||
name = f"rand_{random.randint(1, 1000)}"
|
||||
names.append(name)
|
||||
crud.create_movie(db, name=name)
|
||||
|
||||
movies = client.get("movies")
|
||||
by_name = {}
|
||||
|
||||
|
||||
def test_create_movie_api():
|
||||
import random
|
||||
|
||||
|
@ -68,5 +84,5 @@ def test_create_movie_api():
|
|||
assert response.status_code == 200
|
||||
movie_id = response.json()["id"]
|
||||
assert f"Created {name}" in response.json()["message"]
|
||||
response = client.get("movie", movie_id)
|
||||
response = client.get(f"/movies/{movie_id}")
|
||||
assert response.json()["name"] == name
|
||||
|
|
Loading…
Reference in New Issue