mmentClosuresOrRetracts
    :: (PersistEntity val, PersistEntityBackend val ~ SqlBackend)
    => EntityField val CommentId -> CommentId -> DB [val]
commentClosuresOrRetracts comment_field comment_id = fmap (map entityVal) $
    select $
    from $ \(ca `InnerJoin` table) -> do
    on_ (ca ^. CommentAncestorAncestor ==. table ^. comment_field)
    orderBy [asc (table ^. comment_field)]
    where_ (ca ^. CommentAncestorComment ==. val comment_id)
    return table

-- | Get all ancestors, including this comment, that have been closed/retracted.
f
commentClosuresOrRetracts
    :: (PersistEntity val, PersistEntityBackend val ~ SqlBackend)
    => EntityField val CommentId -> CommentId -> DB [val]
commentClosuresOrRetracts comment_field comment_id = fmap (map entityVal) $
    select $
    from $ \(ca `InnerJoin` table) -> do
    on_ (ca ^. CommentAncestorAncestor ==. table ^. comment_field)
    orderBy [asc (table ^. comment_field)]
    where_ (ca ^. CommentAncestorComment ==. val comment_id)
    return table

-- | Get all ancestors, including this comment, that have been closed/retracted.
commentClosuresOrRetracts comment_field comment_id = fmap (map entityVal) $
    select $
    from $ \(ca `InnerJoin` table) -> do
    on_ (ca ^. CommentAncestorAncestor ==. table ^. comment_field)
    orderBy [asc (table ^. comment_field)]
    where_ (ca ^. CommentAncestorComment ==. val comment_id)
    return table

-- | Get all ancestors, including this comment, that have been closed/retracted.