fix part 3

This commit is contained in:
Danilo Reyes
2025-11-02 18:31:46 -06:00
parent 209b6d9f18
commit ff1c29c66a
22 changed files with 2226 additions and 74 deletions

View File

@@ -49,25 +49,17 @@ class ImageRepository:
result = await self.db.execute(select(Image).where(Image.id == image_id))
return result.scalar_one_or_none()
async def get_user_images(
self, user_id: UUID, limit: int = 50, offset: int = 0
) -> tuple[Sequence[Image], int]:
async def get_user_images(self, user_id: UUID, limit: int = 50, offset: int = 0) -> tuple[Sequence[Image], int]:
"""Get all images for a user with pagination."""
from sqlalchemy import func
# Get total count efficiently
count_result = await self.db.execute(
select(func.count(Image.id)).where(Image.user_id == user_id)
)
count_result = await self.db.execute(select(func.count(Image.id)).where(Image.user_id == user_id))
total = count_result.scalar_one()
# Get paginated images
result = await self.db.execute(
select(Image)
.where(Image.user_id == user_id)
.order_by(Image.created_at.desc())
.limit(limit)
.offset(offset)
select(Image).where(Image.user_id == user_id).order_by(Image.created_at.desc()).limit(limit).offset(offset)
)
images = result.scalars().all()
return images, total
@@ -126,17 +118,14 @@ class ImageRepository:
async def get_board_images(self, board_id: UUID) -> Sequence[BoardImage]:
"""Get all images for a board, ordered by z-order."""
result = await self.db.execute(
select(BoardImage)
.where(BoardImage.board_id == board_id)
.order_by(BoardImage.z_order.asc())
select(BoardImage).where(BoardImage.board_id == board_id).order_by(BoardImage.z_order.asc())
)
return result.scalars().all()
async def get_board_image(self, board_id: UUID, image_id: UUID) -> BoardImage | None:
"""Get a specific board image."""
result = await self.db.execute(
select(BoardImage)
.where(BoardImage.board_id == board_id, BoardImage.image_id == image_id)
select(BoardImage).where(BoardImage.board_id == board_id, BoardImage.image_id == image_id)
)
return result.scalar_one_or_none()
@@ -151,7 +140,7 @@ class ImageRepository:
) -> BoardImage | None:
"""Update board image position, transformations, z-order, or group."""
board_image = await self.get_board_image(board_id, image_id)
if not board_image:
return None