from typing import List
from abc import ABCMeta, abstractmethod

from dailygoals_services.model import SaleChallenge


class DailyGoalsRepository(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def get_sales_challenge(self, limit):
        # type: (int) -> List[SaleChallenge]

        raise NotImplementedError

    @abstractmethod
    def insert_sales_challenge(self, challenge):
        # type: (SaleChallenge) -> int

        raise NotImplementedError

    @abstractmethod
    def delete_sales_challenge(self, sale_challenge_id):
        # type: (int) -> int

        raise NotImplementedError

    @abstractmethod
    def update_sales_challenge(self, challenge):
        # type: (SaleChallenge) -> int

        raise NotImplementedError
