Screwed up with git

This commit is contained in:
Colin Goutte 2023-08-25 15:33:08 +02:00
parent 5bb54cc9dc
commit bcee4fd482
4 changed files with 58 additions and 6 deletions

27
crud.py Normal file
View File

@ -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
View File

@ -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)

0
utests/__init__.py Normal file
View File

View File

@ -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