from collections.abc import Sequence import sqlalchemy as sa from dmp.adapters.db import ReportingRepository from dmp.rosters.models import CustomList class CustomListRepository(ReportingRepository[CustomList]): def get_allowed_ids( self, vendor_ids: list[int], subaccount_ids: list[int], ) -> list[str]: query = self.db.query_from_template( "custom-list/get-allowed-custom-list-ids.sql", context={ "vendor_ids": vendor_ids, "subaccount_ids": subaccount_ids, }, ) result = self.db.session.execute(query) return list(result.scalars().fetchall()) def find_allowed( self, custom_list_ids: list[str], vendor_ids: list[int], subaccount_ids: list[int], ) -> Sequence[CustomList]: if not custom_list_ids: return [] query = self.db.query_from_template( "custom-list/get-custom-lists.sql", context={ "custom_list_ids": custom_list_ids, "vendor_ids": vendor_ids, "subaccount_ids": subaccount_ids, }, ) result = self.db.session.execute(sa.select(CustomList).from_statement(query)) return result.scalars().all()