def search_logs(self, filter={}, sort='', order='', page=0, perpage=None): statement = self.prepare_logs_search_statement(filter) statement = sort_statement( statement, self.logs, sort, order, 'creation_time', True, [ 'creation_time', 'id', ], ) statement = paginate_statement(statement, page, perpage) result = self.connection.execute(statement).fetchall() if 0 == len(result): return IDCollection() logs = IDCollection() for row in result: log = LogEntry( id=row[self.logs.c.id], creation_time=row[self.logs.c.creation_time], scope=row[self.logs.c.scope], remote_origin=row[self.logs.c.remote_origin], subject_id=row[self.logs.c.subject_id], object_id=row[self.logs.c.object_id], ) logs.add(log) return logs
def search_sticker_placements( self, filter={}, sort='', order='', page=0, perpage=None ): statement = self.prepare_sticker_placements_search_statement(filter) statement = sort_statement( statement, self.sticker_placements, sort, order, 'placement_time', True, [ 'placement_time', 'id', ], ) statement = paginate_statement(statement, page, perpage) result = self.connection.execute(statement).fetchall() if 0 == len(result): return IDCollection() sticker_ids = [] for row in result: sticker_ids.append(row[self.sticker_placements.c.sticker_id]) stickers = self.search_stickers(filter={'sticker_ids': sticker_ids}) sticker_placements = IDCollection() for row in result: sticker_placement = StickerPlacement( id=row[self.sticker_placements.c.id], placement_time=row[self.sticker_placements.c.placement_time], subject_id=row[self.sticker_placements.c.subject_id], user_id=row[self.sticker_placements.c.user_id], sticker_id=row[self.sticker_placements.c.sticker_id], position_x=row[self.sticker_placements.c.position_x], position_y=row[self.sticker_placements.c.position_y], rotation=row[self.sticker_placements.c.rotation], scale=row[self.sticker_placements.c.scale], ) if sticker_placement.sticker_id_bytes in stickers: sticker_placement.sticker = stickers.get( sticker_placement.sticker_id_bytes ) sticker_placements.add(sticker_placement) return sticker_placements
def search_members( self, filter={}, sort='', order='', page=0, perpage=None, ): statement = self.prepare_members_search_statement(filter) statement = sort_statement( statement, self.members, sort, order, 'pledge_relationship_start_time', True, [ 'pledge_relationship_start_time', 'id', ], ) statement = paginate_statement(statement, page, perpage) result = self.connection.execute(statement).fetchall() if 0 == len(result): return IDCollection() members = IDCollection() for row in result: member = PatreonMember( id=row[self.members.c.id], client_id=row[self.members.c.client_id], campaign_id=row[self.members.c.campaign_id], tier_id=row[self.members.c.tier_id], user_id=row[self.members.c.user_id], amount_cents=row[self.members.c.amount_cents], last_fulfill_time=row[self.members.c.last_fulfill_time], last_charge_time=row[self.members.c.last_charge_time], last_charge_status=row[self.members.c.last_charge_status], lifetime_support_cents=row[ self.members.c.lifetime_support_cents], pledge_relationship_start_time=row[ self.members.c.pledge_relationship_start_time], name=row[self.members.c.name], ) members.add(member) return members
def search_collected_stickers( self, filter={}, sort='', order='', page=0, perpage=None ): statement = self.prepare_collected_stickers_search_statement(filter) statement = sort_statement( statement, self.collected_stickers, sort, order, 'receive_time', True, [ 'receive_time', 'id', ], ) statement = paginate_statement(statement, page, perpage) result = self.connection.execute(statement).fetchall() if 0 == len(result): return IDCollection() sticker_ids = [] for row in result: sticker_ids.append(row[self.collected_stickers.c.sticker_id]) stickers = self.search_stickers(filter={'sticker_ids': sticker_ids}) collected_stickers = IDCollection() for row in result: collected_sticker = CollectedSticker( id=row[self.collected_stickers.c.id], receive_time=row[self.collected_stickers.c.receive_time], user_id=row[self.collected_stickers.c.user_id], sticker_id=row[self.collected_stickers.c.sticker_id], ) if collected_sticker.sticker_id_bytes in stickers: collected_sticker.sticker = stickers.get( collected_sticker.sticker_id_bytes ) collected_stickers.add(collected_sticker) return collected_stickers
def search_clients( self, filter={}, sort='', order='', page=0, perpage=None, ): statement = self.prepare_clients_search_statement(filter) statement = sort_statement( statement, self.clients, sort, order, 'creation_time', True, [ 'creation_time', 'id', ], ) statement = paginate_statement(statement, page, perpage) result = self.connection.execute(statement).fetchall() if 0 == len(result): return IDCollection() clients = IDCollection() for row in result: client = PatreonClient( id=row[self.clients.c.id], creation_time=row[self.clients.c.creation_time], client_id=row[self.clients.c.client_id], client_secret=row[self.clients.c.client_secret], webhook_secret=row[self.clients.c.webhook_secret], access_token=row[self.clients.c.access_token], access_token_expiration_time=row[ self.clients.c.access_token_expiration_time], refresh_token=row[self.clients.c.refresh_token], campaign_id=row[self.clients.c.campaign_id], creation_name=row[self.clients.c.creation_name], ) clients.add(client) return clients
def search_bans( self, filter={}, sort='', order='', page=0, perpage=None, ): statement = self.prepare_bans_search_statement(filter) statement = sort_statement( statement, self.bans, sort, order, 'creation_time', True, [ 'creation_time', 'id', ], ) statement = paginate_statement(statement, page, perpage) result = self.connection.execute(statement).fetchall() if 0 == len(result): return IDCollection() bans = IDCollection() for row in result: ban = Ban( id=row[self.bans.c.id], creation_time=row[self.bans.c.creation_time], remote_origin=row[self.bans.c.remote_origin], scope=row[self.bans.c.scope], reason=row[self.bans.c.reason], note=row[self.bans.c.note], expiration_time=row[self.bans.c.expiration_time], view_time=row[self.bans.c.view_time], created_by_user_id=row[self.bans.c.created_by_user_id], user_id=row[self.bans.c.user_id], ) bans.add(ban) return bans
def search_stickers( self, filter={}, sort='', order='', page=0, perpage=None ): statement = self.prepare_stickers_search_statement(filter) statement = sort_statement( statement, self.stickers, sort, order, 'creation_time', True, [ 'creation_time', 'id', ], ) statement = paginate_statement(statement, page, perpage) result = self.connection.execute(statement).fetchall() if 0 == len(result): return IDCollection() stickers = IDCollection() for row in result: sticker = Sticker( id=row[self.stickers.c.id], creation_time=row[self.stickers.c.creation_time], name=row[self.stickers.c.name], display=row[self.stickers.c.display], category=row[self.stickers.c.category], category_order=row[self.stickers.c.category_order], group_bits=row[self.stickers.c.group_bits], ) stickers.add(sticker) return stickers