示例#1
0
 async def delete_from_aggregates(self, aggregate_identifier: ResId):
     sql = f"delete from Aggregates where aggregateIdentifier = %s"
     return await self.do_upd_sql(sql, aggregate_identifier.id())
示例#2
0
 async def __select_aggregates(self, type_, deleted, limit=None) -> List[ResId]:
     lmit = f"LIMIT {limit}" if limit else ""
     delete = "and deleted is True" if deleted else "and deleted is not True"
     sql = f"select aggregateIdentifier from Aggregates where type = %s {delete} {lmit}"
     type__ = await self.do_sql(sql, [type_])
     return [ResId.of_id(x["aggregateIdentifier"]) for x in type__]
示例#3
0
 async def select_aggregate(self, aggregate_identifier: ResId):
     sql = f"select * from Aggregates where aggregateIdentifier = %s"
     return await self.do_sql(sql, [aggregate_identifier.id()])
示例#4
0
 async def select_events(self, aggregate_identifier: ResId, limit=None):
     limits_str = f"LIMIT {limit}" if limit else ""
     sql = f"select * from MdbDomainEventEntry where aggregateIdentifier=%s order by id {limits_str}"
     return await self.do_sql(sql, [aggregate_identifier.id()])
示例#5
0
 async def select_any_event(self, aggregate_identifier: ResId):
     sql = f"select eventIdentifier from MdbDomainEventEntry where aggregateIdentifier=%s LIMIT 1"
     return await self.do_sql(sql, [aggregate_identifier.id()])
示例#6
0
 async def load_events_of_type(self, aggregate_identifier: ResId,
                               payload_type):
     return await self.do_sql(
         "select * from MdbDomainEventEntry where payloadType=%s and aggregateIdentifier=%s order by id",
         [payload_type, aggregate_identifier.id()])
示例#7
0
 async def load_all_events(self, aggregate_identifier: ResId):
     return await self.do_sql(
         "select * from MdbDomainEventEntry where aggregateIdentifier=%s order by id",
         [aggregate_identifier.id()])
示例#8
0
 async def delete_snapshot(self, aggregate_identifier: ResId):
     sql = "delete from MdbSnapshotEventEntry where aggregateIdentifier = %s;"
     return await self.do_sql(sql, [aggregate_identifier.id()])
示例#9
0
 async def delete_event_with_payload_like(self, agg_id: ResId, payload_type,
                                          payload_like):
     sql = """delete from MdbDomainEventEntry where aggregateIdentifier=%s and payloadType=%s AND payload like %s """
     return await self.do_sql(sql,
                              [agg_id.id(), payload_type, payload_like])
示例#10
0
 async def delete_aggregate(self, agg_id: ResId):
     sql = """delete from MdbDomainEventEntry where aggregateIdentifier=%s"""
     return await self.do_upd_sql(sql, [agg_id.id()])
示例#11
0
 async def delete_event(self, agg_id: ResId, payload_type, id_: int):
     # demand an unusual amount of information :)
     sql = """delete from MdbDomainEventEntry where aggregateIdentifier=%s and payloadType=%s AND id=%s"""
     return await self.do_sql(sql, [agg_id.id(), payload_type, id_])
示例#12
0
 async def catchup_meo(self, last_seen_id) -> List[ResId]:
     res = await self.select_catchup("MasterEOAggregate", last_seen_id)
     res_ = [ResId.of_id(x["aggregateIdentifier"]) for x in res]
     print(f"{len(res_)} items in catchup")
     return res_