Skip to content

Commit fc0eece

Browse files
committed
Tweaks to the schema
It's a bit ugly that without OAuth client_id's we now can have multiple owner identities with the same name
1 parent df07966 commit fc0eece

File tree

2 files changed

+13
-5
lines changed
  • src/mrmat_python_api_fastapi/apis/platform/v1

2 files changed

+13
-5
lines changed

src/mrmat_python_api_fastapi/apis/platform/v1/api.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
# SOFTWARE.
2222

23+
import uuid
24+
2325
from fastapi import APIRouter, Depends, status, HTTPException
2426
from fastapi.responses import Response
2527
from sqlalchemy.exc import SQLAlchemyError
@@ -93,12 +95,13 @@ async def create_resource(data: ResourceInputSchema,
9395
response: Response,
9496
session: Session = Depends(get_db)):
9597
try:
96-
resource = Resource(name=data.name, owner_uid=data.owner_uid)
98+
resource = Resource(uid=str(uuid.uuid4()), name=data.name, owner_uid=data.owner_uid)
9799
session.add(resource)
98100
session.commit()
99101
response.status_code = 201
100102
return resource
101103
except SQLAlchemyError as e:
104+
session.rollback()
102105
raise HTTPException(status_code=500, detail="A database error occurred") from e
103106

104107

@@ -131,6 +134,7 @@ async def modify_resource(uid: str,
131134
session.commit()
132135
return resource
133136
except SQLAlchemyError as e:
137+
session.rollback()
134138
raise HTTPException(status_code=500, detail="A database error occurred") from e
135139

136140

@@ -161,6 +165,7 @@ async def remove_resource(uid: str,
161165
response.status_code = 204
162166
return {}
163167
except SQLAlchemyError as e:
168+
session.rollback()
164169
raise HTTPException(status_code=500, detail="A database error occurred") from e
165170

166171

@@ -216,12 +221,13 @@ async def create_owner(data: OwnerInputSchema,
216221
response: Response,
217222
session: Session = Depends(get_db)):
218223
try:
219-
owner = Owner(name=data.name, client_id='TODO')
224+
owner = Owner(uid=str(uuid.uuid4()), name=data.name)
220225
session.add(owner)
221226
session.commit()
222227
response.status_code = 201
223228
return owner
224229
except SQLAlchemyError as e:
230+
session.rollback()
225231
# Handle the error appropriately, maybe raise an HTTPException
226232
raise HTTPException(status_code=500, detail="A database error occurred") from e
227233

@@ -255,6 +261,7 @@ async def modify_owner(uid: str,
255261
session.commit()
256262
return owner
257263
except SQLAlchemyError as e:
264+
session.rollback()
258265
raise HTTPException(status_code=500, detail="A database error occurred") from e
259266

260267

@@ -284,4 +291,5 @@ async def remove_owner(uid: str,
284291
session.commit()
285292
response.status_code = status.HTTP_204_NO_CONTENT
286293
except SQLAlchemyError as e:
294+
session.rollback()
287295
raise HTTPException(status_code=500, detail="A database error occurred") from e

src/mrmat_python_api_fastapi/apis/platform/v1/db.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@
3030
class Owner(ORMBase):
3131
__tablename__ = 'owners'
3232
__schema__ = 'mrmat-python-api-fastapi'
33-
uid: Mapped[str] = mapped_column(String, primary_key=True, default=str(uuid.uuid4()))
33+
uid: Mapped[str] = mapped_column(String, primary_key=True)
3434

35-
client_id: Mapped[str] = mapped_column(String(255), nullable=False, unique=True)
35+
client_id: Mapped[str] = mapped_column(String(255), nullable=True, unique=True)
3636
name: Mapped[str] = mapped_column(String(255), nullable=False)
3737
resources: Mapped[list["Resource"]] = relationship('Resource', back_populates='owner')
3838

3939

4040
class Resource(ORMBase):
4141
__tablename__ = 'resources'
4242
__schema__ = 'mrmat-python-api-fastapi'
43-
uid: Mapped[str] = mapped_column(String, primary_key=True, default=str(uuid.uuid4()))
43+
uid: Mapped[str] = mapped_column(String, primary_key=True)
4444
owner_uid: Mapped[str] = mapped_column(String, ForeignKey('owners.uid'), nullable=False)
4545
name: Mapped[str] = mapped_column(String(255), nullable=False)
4646

0 commit comments

Comments
 (0)