diff --git a/gns3server/db/models/pools.py b/gns3server/db/models/pools.py index d8c011cbc..c22cab2f0 100644 --- a/gns3server/db/models/pools.py +++ b/gns3server/db/models/pools.py @@ -15,8 +15,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +import uuid + from sqlalchemy import Table, Column, String, ForeignKey -from sqlalchemy.orm import relationship +from sqlalchemy.orm import Mapped, mapped_column, relationship from .base import Base, BaseTable, generate_uuid, GUID @@ -36,7 +38,7 @@ resource_pool_map = Table( class Resource(BaseTable): __tablename__ = "resources" - resource_id = Column(GUID, primary_key=True) + resource_id: Mapped[uuid.UUID] = mapped_column(GUID, primary_key=True) name = Column(String, unique=True, index=True) resource_type = Column(String) resource_pools = relationship("ResourcePool", secondary=resource_pool_map, back_populates="resources") diff --git a/gns3server/db/repositories/pools.py b/gns3server/db/repositories/pools.py index 90615ee68..a9144166e 100644 --- a/gns3server/db/repositories/pools.py +++ b/gns3server/db/repositories/pools.py @@ -16,8 +16,9 @@ # along with this program. If not, see . from uuid import UUID -from typing import Optional, List, Union +from typing import Optional, List, Union, cast from sqlalchemy import select, update, delete +from sqlalchemy.engine import CursorResult from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload @@ -52,7 +53,7 @@ class ResourcePoolsRepository(BaseRepository): query = select(models.Resource) result = await self._db_session.execute(query) - return result.scalars().all() + return list(result.scalars().all()) async def create_resource(self, resource: schemas.ResourceCreate) -> models.Resource: """ @@ -75,7 +76,7 @@ class ResourcePoolsRepository(BaseRepository): query = delete(models.Resource).where(models.Resource.resource_id == resource_id) result = await self._db_session.execute(query) await self._db_session.commit() - return result.rowcount > 0 + return cast(CursorResult, result).rowcount > 0 async def get_resource_memberships(self, resource_id: UUID) -> List[models.ResourcePool]: """ @@ -89,7 +90,7 @@ class ResourcePoolsRepository(BaseRepository): ) result = await self._db_session.execute(query) - return result.scalars().all() + return list(result.scalars().all()) async def get_resource_pool(self, resource_pool_id: UUID) -> Optional[models.ResourcePool]: """ @@ -116,7 +117,7 @@ class ResourcePoolsRepository(BaseRepository): query = select(models.ResourcePool) result = await self._db_session.execute(query) - return result.scalars().all() + return list(result.scalars().all()) async def create_resource_pool(self, resource_pool: schemas.ResourcePoolCreate) -> models.ResourcePool: """ @@ -166,7 +167,7 @@ class ResourcePoolsRepository(BaseRepository): query = delete(models.ResourcePool).where(models.ResourcePool.resource_pool_id == resource_pool_id) result = await self._db_session.execute(query) await self._db_session.commit() - return result.rowcount > 0 + return cast(CursorResult, result).rowcount > 0 async def add_resource_to_pool( self, resource_pool_id: UUID, resource: models.Resource @@ -225,4 +226,4 @@ class ResourcePoolsRepository(BaseRepository): ) result = await self._db_session.execute(query) - return result.scalars().all() + return list(result.scalars().all())