| @@ -11,11 +11,7 @@ class Projects::ListQuery < ApplicationQuery | |||||
| end | end | ||||
| def call | def call | ||||
| collection = Project.visible | |||||
| # 增加私有组织中项目过滤 | |||||
| collection = collection.joins("left join organization_extensions on organization_extensions.organization_id = projects.user_id") | |||||
| .where("organization_extensions.visibility is null or organization_extensions.visibility in (0,1)") | |||||
| .where("projects.user_id > 0") | |||||
| collection = main_collection | |||||
| collection = filter_projects(collection) | collection = filter_projects(collection) | ||||
| sort = params[:sort_by] || "updated_on" | sort = params[:sort_by] || "updated_on" | ||||
| @@ -39,6 +35,15 @@ class Projects::ListQuery < ApplicationQuery | |||||
| collection | collection | ||||
| end | end | ||||
| def main_collection | |||||
| collection = Project.visible | |||||
| # 增加私有组织中项目过滤 | |||||
| collection = collection.joins("left join organization_extensions on organization_extensions.organization_id = projects.user_id") | |||||
| .where("organization_extensions.visibility is null or organization_extensions.visibility in (0,1)") | |||||
| .where("projects.user_id > 0") | |||||
| collection | |||||
| end | |||||
| def by_search(items) | def by_search(items) | ||||
| @ids = Projects::ElasticsearchService.call(params[:search]) | @ids = Projects::ElasticsearchService.call(params[:search]) | ||||
| items = items.where(platform: 'forge') | items = items.where(platform: 'forge') | ||||
| @@ -47,7 +52,7 @@ class Projects::ListQuery < ApplicationQuery | |||||
| else | else | ||||
| items = items.by_name_or_identifier(params[:search]) | items = items.by_name_or_identifier(params[:search]) | ||||
| end | end | ||||
| items.or(items.where(user_id: Owner.like(params[:search]).pluck(:id))) | |||||
| items.or(main_collection.where(user_id: Owner.like(params[:search]).pluck(:id))) | |||||
| end | end | ||||
| def by_project_type(items) | def by_project_type(items) | ||||
| @@ -80,5 +85,14 @@ class Projects::ListQuery < ApplicationQuery | |||||
| relations | relations | ||||
| end | end | ||||
| end | end | ||||
| def by_recommend(items) | |||||
| params[:recommend].to_s == "true" ? items.where(recommend: true) : items | |||||
| end | |||||
| def exclude_fork(items) | |||||
| return items if params[:exclude_forked].blank? | |||||
| params[:exclude_forked].to_s == "true" ? items.where("forked_from_project_id is null") : items.where("forked_from_project_id is not null") | |||||
| end | |||||
| end | end | ||||