| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -8,8 +8,11 @@ class PostsController < ApplicationController | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    limit = params[:limit].presence&.to_i | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cursor = params[:cursor].presence | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    q = filtered_posts.order(created_at: :desc) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    q = q.where('posts.created_at < ?', Time.iso8601(cursor)) if cursor | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    created_at = ('COALESCE(posts.original_created_before - INTERVAL 1 SECOND,' + | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  'posts.original_created_from,' + | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  'posts.created_at)') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    q = filtered_posts.order(Arel.sql("#{ created_at } DESC")) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    q = q.where("#{ created_at } < ?", Time.iso8601(cursor)) if cursor | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    posts = limit ? q.limit(limit + 1) : q | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -20,14 +23,14 @@ class PostsController < ApplicationController | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    end | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    render json: { posts: posts.map { |post| | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      post.as_json(include: { tags: { only: [:id, :name, :category, :post_count] } }).tap { |json| | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      post.as_json(include: { tags: { only: [:id, :name, :category, :post_count] } }).tap do |json| | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        json['thumbnail'] = | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if post.thumbnail.attached? | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              rails_storage_proxy_url(post.thumbnail, only_path: false) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            else | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              nil | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            end | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      end | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }, next_cursor: } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  end | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -39,7 +42,7 @@ class PostsController < ApplicationController | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    render json: (post | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  .as_json(include: { tags: { only: [:id, :name, :category, :post_count] } }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  .merge(viewed: viewed)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  .merge(viewed:)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  end | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  # GET /posts/1 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -60,7 +63,7 @@ class PostsController < ApplicationController | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return head :forbidden unless current_user.member? | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    # TODO: URL が正規のものがチェック,不正ならエラー | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    # TODO: title、URL は必須にする. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    # TODO: URL は必須にする(タイトルは省略可). | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    # TODO: サイトに応じて thumbnail_base 設定 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    title = params[:title] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    url = params[:url] | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |