2020# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121# SOFTWARE.
2222
23- from typing import Union
2423from fastapi import APIRouter , Depends , status , HTTPException
25- from fastapi .responses import JSONResponse , Response
24+ from fastapi .responses import Response
2625from sqlalchemy .exc import SQLAlchemyError
2726from sqlalchemy .orm import Session
2827
4948async def get_resources (session : Session = Depends (get_db )) -> ResourceListSchema :
5049 try :
5150 resources = session .query (Resource ).all ()
52- return ResourceListSchema (resources = resources )
51+ return ResourceListSchema (resources = [ResourceSchema (uid = r .uid ,
52+ name = r .name ,
53+ owner_uid = r .owner_uid )
54+ for r in resources ])
5355 except SQLAlchemyError as e :
5456 # Handle the error appropriately, maybe raise an HTTPException
5557 raise HTTPException (status_code = 500 , detail = "A database error occurred" ) from e
@@ -86,12 +88,7 @@ async def get_resource(uid: str,
8688 name = 'create_resource' ,
8789 summary = 'Create a resource' ,
8890 description = 'Create a resource owned by the authenticated user' ,
89- responses = {
90- status .HTTP_201_CREATED : {
91- 'description' : 'The resource was created' ,
92- 'model' : ResourceSchema
93- },
94- })
91+ response_model = ResourceSchema )
9592async def create_resource (data : ResourceInputSchema ,
9693 response : Response ,
9794 session : Session = Depends (get_db )):
@@ -100,9 +97,7 @@ async def create_resource(data: ResourceInputSchema,
10097 session .add (resource )
10198 session .commit ()
10299 response .status_code = 201
103- return ResourceSchema (uid = resource .uid ,
104- owner_uid = resource .owner_uid ,
105- name = resource .name )
100+ return resource
106101 except SQLAlchemyError as e :
107102 raise HTTPException (status_code = 500 , detail = "A database error occurred" ) from e
108103
@@ -120,7 +115,8 @@ async def create_resource(data: ResourceInputSchema,
120115 'description' : 'The resource was not found' ,
121116 'model' : StatusSchema
122117 }
123- })
118+ },
119+ response_model = ResourceSchema )
124120async def modify_resource (uid : str ,
125121 data : ResourceInputSchema ,
126122 response : Response ,
@@ -133,9 +129,7 @@ async def modify_resource(uid: str,
133129 resource .name = data .name
134130 session .add (resource )
135131 session .commit ()
136- return ResourceSchema (uid = resource .uid ,
137- owner_uid = resource .owner_uid ,
138- name = resource .name )
132+ return resource
139133 except SQLAlchemyError as e :
140134 raise HTTPException (status_code = 500 , detail = "A database error occurred" ) from e
141135
@@ -176,10 +170,10 @@ async def remove_resource(uid: str,
176170 summary = 'List all known owners' ,
177171 description = 'Returns all currently known owners and their metadata' ,
178172 response_model = OwnerListSchema )
179- async def get_owners (db : Session = Depends (get_db )):
173+ async def get_owners (session : Session = Depends (get_db )):
180174 try :
181- owners = db .query (Owner ).all ()
182- return OwnerListSchema (owners = owners )
175+ owners = session .query (Owner ).all ()
176+ return OwnerListSchema (owners = [ OwnerSchema ( uid = o . uid , name = o . name ) for o in owners ] )
183177 except SQLAlchemyError as e :
184178 # Handle the error appropriately, maybe raise an HTTPException
185179 raise HTTPException (status_code = 500 , detail = "A database error occurred" ) from e
@@ -196,9 +190,10 @@ async def get_owners(db: Session = Depends(get_db)):
196190 },
197191 status .HTTP_200_OK : {
198192 'description' : 'The requested owner' ,
199- 'model' : ResourceSchema
193+ 'model' : OwnerSchema
200194 }
201- })
195+ },
196+ response_model = OwnerSchema )
202197async def get_owner (uid : str ,
203198 response : Response ,
204199 session : Session = Depends (get_db )):
@@ -216,9 +211,7 @@ async def get_owner(uid: str,
216211 name = 'create_owner' ,
217212 summary = 'Create a owner' ,
218213 description = 'Create a owner' ,
219- responses = {
220- status .HTTP_201_CREATED : {'description' : 'The owner was created' , 'model' : OwnerSchema }
221- })
214+ response_model = OwnerSchema )
222215async def create_owner (data : OwnerInputSchema ,
223216 response : Response ,
224217 session : Session = Depends (get_db )):
@@ -227,7 +220,7 @@ async def create_owner(data: OwnerInputSchema,
227220 session .add (owner )
228221 session .commit ()
229222 response .status_code = 201
230- return OwnerSchema ( uid = owner . uid , name = owner . name )
223+ return owner
231224 except SQLAlchemyError as e :
232225 # Handle the error appropriately, maybe raise an HTTPException
233226 raise HTTPException (status_code = 500 , detail = "A database error occurred" ) from e
@@ -246,7 +239,8 @@ async def create_owner(data: OwnerInputSchema,
246239 'description' : 'The owner was not found' ,
247240 'model' : StatusSchema
248241 }
249- })
242+ },
243+ response_model = OwnerSchema )
250244async def modify_owner (uid : str ,
251245 data : OwnerInputSchema ,
252246 response : Response ,
@@ -259,7 +253,7 @@ async def modify_owner(uid: str,
259253 owner .name = data .name
260254 session .add (owner )
261255 session .commit ()
262- return OwnerSchema ( uid = owner . uid , name = owner . name )
256+ return owner
263257 except SQLAlchemyError as e :
264258 raise HTTPException (status_code = 500 , detail = "A database error occurred" ) from e
265259
0 commit comments