diff --git a/go-backend/internal/repository/post_repository.go b/go-backend/internal/repository/post_repository.go index 40450e9..a866053 100644 --- a/go-backend/internal/repository/post_repository.go +++ b/go-backend/internal/repository/post_repository.go @@ -165,7 +165,20 @@ func (r *PostRepository) GetFeed(ctx context.Context, userID string, categorySlu AND NOT public.has_block_between(p.author_id, CASE WHEN $4::text != '' THEN $4::text::uuid ELSE NULL END) AND ($3 = FALSE OR (COALESCE(p.video_url, '') <> '' OR (COALESCE(p.image_url, '') ILIKE '%.mp4'))) AND ($5 = '' OR c.slug = $5) - AND ($6 = TRUE OR COALESCE(p.is_nsfw, FALSE) = FALSE) + AND ( + COALESCE(p.is_nsfw, FALSE) = FALSE + OR ( + $6 = TRUE + AND ( + p.author_id = CASE WHEN $4::text != '' THEN $4::text::uuid ELSE NULL END + OR EXISTS ( + SELECT 1 FROM public.follows f + WHERE f.follower_id = CASE WHEN $4::text != '' THEN $4::text::uuid ELSE NULL END + AND f.following_id = p.author_id AND f.status = 'accepted' + ) + ) + ) + ) ORDER BY p.created_at DESC LIMIT $1 OFFSET $2 ` @@ -758,6 +771,7 @@ func (r *PostRepository) SearchPosts(ctx context.Context, query string, viewerID OR $1 = ANY(p.tags) ) AND p.deleted_at IS NULL AND p.status = 'active' + AND COALESCE(p.is_nsfw, FALSE) = FALSE AND ( p.author_id = CASE WHEN $3 != '' THEN $3::uuid ELSE NULL END OR pr.is_private = FALSE @@ -1307,6 +1321,7 @@ func (r *PostRepository) GetPopularPublicPosts(ctx context.Context, viewerID str WHERE p.deleted_at IS NULL AND p.status = 'active' AND pr.is_private = FALSE AND p.visibility = 'public' + AND COALESCE(p.is_nsfw, FALSE) = FALSE ORDER BY (COALESCE(m.like_count, 0) * 2 + COALESCE(m.comment_count, 0) * 5) DESC, p.created_at DESC LIMIT $1 ` diff --git a/go-backend/internal/repository/tag_repository.go b/go-backend/internal/repository/tag_repository.go index bd8c10b..75eefbd 100644 --- a/go-backend/internal/repository/tag_repository.go +++ b/go-backend/internal/repository/tag_repository.go @@ -201,6 +201,7 @@ func (r *TagRepository) GetPostsByHashtag(ctx context.Context, hashtagName, view WHERE h.name = $1 AND p.deleted_at IS NULL AND p.status = 'active' + AND COALESCE(p.is_nsfw, FALSE) = FALSE ORDER BY p.created_at DESC LIMIT $4 OFFSET $5 `, normalized, normalized, viewerID, limit, offset)