code: async def persist_event(topic, event, pool):
      
      # Event to json
      json_event = json.dumps(event.__dict__)
  
      # Connect to database or create and connect if non existent
      conn = await pool.acquire()
  
      # Insert event if not processed
      try:
          query = """
              CREATE TABLE IF NOT EXISTS public."topic_placeholder"
              (
                id SERIAL PRIMARY KEY,
                event json NOT NULL,
                issued_at timestamp without time zone NOT NULL
              )
              WITH (
                OIDS=FALSE
              );
              ALTER TABLE public."topic_placeholder"
                OWNER TO root;
          """
          query = query.replace('topic_placeholder', topic)
          await conn.execute(query)
          issued_at = datetime.utcnow()
          query = 'INSERT INTO "%s" (event, issued_at) VALUES ($1, $2)' % topic
          await conn.execute(query, json_event, issued_at)
      finally:
          await pool.release(conn)
docs: Track event to prevent duplication of work
      and potential loss of event
      :param topic: The event topic
      :param event: The event object