from abc import ABC, abstractmethod from typing import Optional from cpl_query.extension import List from gismo_data.model.user import User class UserRepositoryABC(ABC): @abstractmethod def __init__(self): pass @abstractmethod def get_users(self) -> List[User]: pass @abstractmethod def get_user_by_id(self, id: int) -> User: pass @abstractmethod def get_users_by_discord_id(self, discord_id: int) -> List[User]: pass @abstractmethod def get_user_by_discord_id_and_server_id(self, discord_id: int, server_id: int) -> User: pass @abstractmethod def find_user_by_discord_id_and_server_id(self, discord_id: int, server_id: int) -> Optional[User]: pass @abstractmethod def add_user(self, user: User): pass @abstractmethod def update_user(self, user: User): pass @abstractmethod def delete_user(self, user: User): pass