123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- from sqlmodel import select
- from sqlalchemy.ext.asyncio import AsyncSession
- from sqlalchemy.orm import Session
- from app.exceptions.exception import ResourceNotFoundError
- from app.libs import util
- from app.models.token import Token, TokenCreate, TokenUpdate
- class TokenService:
- @staticmethod
- async def create_token(session: AsyncSession, body: TokenCreate) -> Token:
- db_token = Token.model_validate(body.model_dump(by_alias=True))
- session.add(db_token)
- await session.commit()
- await session.refresh(db_token)
- return db_token
- @staticmethod
- async def get_token(session: AsyncSession, token: str) -> Token:
- statement = select(Token).where(Token.assistant_token == token)
- result = await session.execute(statement)
- token = result.scalars().one_or_none()
- # if token is None:
- # raise ResourceNotFoundError(message="Token not found")
- return token
- @staticmethod
- def get_token_by_id(session: Session, token_id: str) -> Token:
- statement = select(Token).where(Token.id == token_id)
- result = session.execute(statement)
- token = result.scalars().one_or_none()
- # if token is None:
- # raise ResourceNotFoundError(message="Token not found")
- return token
- @staticmethod
- async def refresh_token(session: AsyncSession, token) -> Token:
- db_token = await TokenService.get_token(session=session, token=token)
- db_token.assistant_token = util.random_uuid()
- session.add(db_token)
- await session.commit()
- await session.refresh(db_token)
- return db_token
- @staticmethod
- async def modify_token(
- session: AsyncSession, body: TokenUpdate, token: str
- ) -> Token:
- db_token = await TokenService.get_token(session=session, token=token)
- for key, value in body.model_dump(exclude_unset=True).items():
- setattr(db_token, key, value)
- session.add(db_token)
- await session.commit()
- await session.refresh(db_token)
- return db_token
|