SELECT
  id,
  uuid,
  parent_id,
  parent_uuid,
  content,
  notetype,
  creation_date,
  updated_date,
  lastview_date,
  deleted_date

FROM (

  WITH RECURSIVE parents (
    id,
    uuid,
    parent_id,
    parent_uuid,
    content,
    notetype,
    creation_date,
    updated_date,
    lastview_date,
    deleted_date,
    cycle
  )

  AS (

    SELECT
           notes.id,
           notes.uuid,
           note_parents.id,
           note_parents.uuid,
           notes.content,
           notes.notetype,
           notes.creation_date,
           notes.updated_date,
           notes.lastview_date,
           notes.deleted_date,
           ','||notes.id||','
      FROM notes
        INNER JOIN note_relationships
          ON notes.id = note_relationships.note_id
          AND notes.notetype = 'note'
        INNER JOIN notes as note_parents
          ON note_parents.id = note_relationships.parent_id
      WHERE notes.id = ?  -- IMPORTANT: THIS IS THE PARAMETER
  
    UNION
	SELECT DISTINCT
	       notes.id,
		   notes.uuid,
		   next_parent.id,
      	   next_parent.uuid,
      	   notes.content,
      	   notes.creation_date,
      	   notes.updated_date,
      	   notes.lastview_date,
      	   notes.deleted_date,
      	   parents.cycle||notes.id||','
      FROM notes
      INNER JOIN parents
	    ON parents.parent_id = notes.id
	  LEFT JOIN note_relationships
	    ON note_relationships.note_id = notes.id
	  LEFT JOIN notes as next_parent
	    ON next_parent.id = note_relationships.parent_id
      WHERE parents.cycle NOT LIKE '%,'||notes.id||',%'
  )
  SELECT * from parents);
