CYPHER_UPSERT_CHECKPOINT = '\nMERGE (
t:Thread {thread_id: $thread_id, checkpoint_ns: $checkpoint_ns})\nCREATE (c:Checkpoint {\n checkpoint_id: $checkpoint_id,\n type: $type,\n checkpoint: $checkpoint,\n metadata: $metadata,\n created_at: datetime()\n})\nCREATE (t)-[:HAS_CHECKPOINT]->(c)\nWITH c\nCALL {\n WITH c\n MATCH (parent:Checkpoint {checkpoint_id: $parent_checkpoint_id})\n CREATE (c)-[:PREVIOUS]->(parent
)\n RETURN parent\n UNION ALL\n WITH c\n WHERE $parent_checkpoint_id IS NULL\n RETURN null as parent\n}\nRETURN c.checkpoint_id as checkpoint_id\n'