def __init__(self, bot: TTSBot, broadcast: bool, select: str, delete: str, table_name: str, pkey_columns: tuple[str, ...]): self.bot = bot self.pool = bot.pool self.broadcast = broadcast self.select_query = select self.delete_query = delete self.pkey_columns = tuple(sql(pkey) for pkey in pkey_columns) self.default_id = 0 if len( pkey_columns) == 1 else (0, ) * len(pkey_columns) generic_insert_query = """ INSERT INTO {}({{}}) VALUES({{}}) ON CONFLICT ({}) {} """ args = table_name, ", ".join(pkey_columns) self.multi_insert_query = generic_insert_query.format( *args, "DO UPDATE SET ({}) = ({})") self.single_insert_query = generic_insert_query.format( *args, "DO UPDATE SET {} = {}") self.ensure_row_query = generic_insert_query.format( *args, "DO NOTHING{}{}") self._not_fully_fetched: list[_DK] = [] self._cache: dict[_DK, _CACHE_ITEM] = {} self.defaults: Optional[_CACHE_ITEM] = None self._write_tasks: defaultdict[_DK, WriteTask] = defaultdict(WriteTask) bot.add_listener(self.on_invalidate_cache)
def __init__(self, bot: TTSBot): self.bot = bot self.pool = bot.pool bot.add_listener(self.on_invalidate_cache) self._do_not_cache: List[_DK] = [] self._cache: Dict[_DK, Optional[asyncpg.Record]] = {}