From 0ac827b95c503f54aace3e1e524f08b5fa05a397 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sat, 26 Aug 2023 22:51:05 +0200 Subject: [PATCH] Green: implement custom object for arrays, update is ok --- dev.py | 1 + models.py | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/dev.py b/dev.py index 2e7fe4c..1136b09 100644 --- a/dev.py +++ b/dev.py @@ -104,6 +104,7 @@ async def update_movie( async def get_movie(id_: str, db: Session = Depends(get_db)): try: movie = crud.get_movie_by_id(db, id_) + out = {k: v for (k, v) in movie.__dict__.items() if not k.startswith("_")} except LookupError: raise HTTPException(status_code=404, detail=f"No movie found with id {id_}") diff --git a/models.py b/models.py index 59e1640..ace492e 100644 --- a/models.py +++ b/models.py @@ -1,5 +1,20 @@ -from sqlalchemy import Column, ForeignKey, Integer, String, Float +from sqlalchemy import Column, ForeignKey, Integer, String, Float, types from database import Base +import sqlalchemy.types as types + + +class NaiveStringList(types.TypeDecorator): + impl = types.Unicode + sep = "\n" + + def process_bind_param(self, value, dialect): + return self.sep.join(value) + + def process_result_value(self, value, dialect): + return value.split(self.sep) + + def copy(self, **kw): + return NaiveStringList(self.impl.length) class Movie(Base): @@ -12,6 +27,8 @@ class Movie(Base): vote_count = Column(Integer) vote_average = Column(Float) - genres = Column(String) # String array dimention 1 + genres = Column(NaiveStringList) # LLw + # genres = Column(ARRAY(String, dimensions=1)) # String array dimention 1 + description = Column(String) release_date = Column(String)