token_relation.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from sqlmodel import select
  2. from sqlalchemy.ext.asyncio import AsyncSession
  3. from sqlalchemy.orm import Session
  4. from app.models.token_relation import RelationType, TokenRelation, TokenRelationDelete, TokenRelationQuery
  5. class TokenRelationService:
  6. @staticmethod
  7. async def get_relation(session: AsyncSession, query: TokenRelationQuery) -> bool:
  8. statement = select(TokenRelation).where(
  9. TokenRelation.token_id == query.token_id,
  10. TokenRelation.relation_id == query.relation_id,
  11. TokenRelation.relation_type == query.relation_type,
  12. )
  13. result = await session.execute(statement)
  14. record = result.scalars().one_or_none()
  15. return record
  16. @staticmethod
  17. async def get_relation_to_delete(session: AsyncSession, delete: TokenRelationDelete) -> bool:
  18. statement = select(TokenRelation).where(
  19. TokenRelation.relation_id == delete.relation_id, TokenRelation.relation_type == delete.relation_type
  20. )
  21. result = await session.execute(statement)
  22. record = result.scalars().one_or_none()
  23. return record
  24. @staticmethod
  25. def get_token_id_by_relation(session: Session, relation_type: RelationType, relation_id: str) -> bool:
  26. statement = select(TokenRelation.token_id).where(
  27. TokenRelation.relation_id == relation_id, TokenRelation.relation_type == relation_type
  28. )
  29. result = session.execute(statement)
  30. return result.scalars().one_or_none()
  31. @staticmethod
  32. async def verify_relation(session: AsyncSession, verify: TokenRelationQuery) -> bool:
  33. record = await TokenRelationService.get_relation(session, verify)
  34. return record is not None