fix: projects load by invite code slowly
This commit is contained in:
		
							parent
							
								
									7c43f2d8fc
								
							
						
					
					
						commit
						818317c292
					
				| 
						 | 
				
			
			@ -1,76 +1,78 @@
 | 
			
		|||
# == Schema Information
 | 
			
		||||
#
 | 
			
		||||
# Table name: projects
 | 
			
		||||
#
 | 
			
		||||
#  id                     :integer          not null, primary key
 | 
			
		||||
#  name                   :string(255)      default(""), not null
 | 
			
		||||
#  description            :text(4294967295)
 | 
			
		||||
#  homepage               :string(255)      default("")
 | 
			
		||||
#  is_public              :boolean          default("1"), not null
 | 
			
		||||
#  parent_id              :integer
 | 
			
		||||
#  created_on             :datetime
 | 
			
		||||
#  updated_on             :datetime
 | 
			
		||||
#  identifier             :string(255)
 | 
			
		||||
#  status                 :integer          default("1"), not null
 | 
			
		||||
#  lft                    :integer
 | 
			
		||||
#  rgt                    :integer
 | 
			
		||||
#  inherit_members        :boolean          default("0"), not null
 | 
			
		||||
#  project_type           :integer          default("0")
 | 
			
		||||
#  hidden_repo            :boolean          default("0"), not null
 | 
			
		||||
#  attachmenttype         :integer          default("1")
 | 
			
		||||
#  user_id                :integer
 | 
			
		||||
#  dts_test               :integer          default("0")
 | 
			
		||||
#  enterprise_name        :string(255)
 | 
			
		||||
#  organization_id        :integer
 | 
			
		||||
#  project_new_type       :integer
 | 
			
		||||
#  gpid                   :integer
 | 
			
		||||
#  forked_from_project_id :integer
 | 
			
		||||
#  forked_count           :integer          default("0")
 | 
			
		||||
#  publish_resource       :integer          default("0")
 | 
			
		||||
#  visits                 :integer          default("0")
 | 
			
		||||
#  hot                    :integer          default("0")
 | 
			
		||||
#  invite_code            :string(255)
 | 
			
		||||
#  qrcode                 :string(255)
 | 
			
		||||
#  qrcode_expiretime      :integer          default("0")
 | 
			
		||||
#  script                 :text(65535)
 | 
			
		||||
#  training_status        :integer          default("0")
 | 
			
		||||
#  rep_identifier         :string(255)
 | 
			
		||||
#  project_category_id    :integer
 | 
			
		||||
#  project_language_id    :integer
 | 
			
		||||
#  license_id             :integer
 | 
			
		||||
#  ignore_id              :integer
 | 
			
		||||
#  praises_count          :integer          default("0")
 | 
			
		||||
#  watchers_count         :integer          default("0")
 | 
			
		||||
#  issues_count           :integer          default("0")
 | 
			
		||||
#  pull_requests_count    :integer          default("0")
 | 
			
		||||
#  language               :string(255)
 | 
			
		||||
#  versions_count         :integer          default("0")
 | 
			
		||||
#  issue_tags_count       :integer          default("0")
 | 
			
		||||
#  closed_issues_count    :integer          default("0")
 | 
			
		||||
#  open_devops            :boolean          default("0")
 | 
			
		||||
#  gitea_webhook_id       :integer
 | 
			
		||||
#  open_devops_count      :integer          default("0")
 | 
			
		||||
#  recommend              :boolean          default("0")
 | 
			
		||||
#  platform               :integer          default("0")
 | 
			
		||||
#  default_branch         :string(255)      default("master")
 | 
			
		||||
#  website                :string(255)
 | 
			
		||||
#  order_index            :integer          default("0")
 | 
			
		||||
#  lesson_url             :string(255)
 | 
			
		||||
#
 | 
			
		||||
# Indexes
 | 
			
		||||
#
 | 
			
		||||
#  index_projects_on_forked_from_project_id  (forked_from_project_id)
 | 
			
		||||
#  index_projects_on_identifier              (identifier)
 | 
			
		||||
#  index_projects_on_is_public               (is_public)
 | 
			
		||||
#  index_projects_on_lft                     (lft)
 | 
			
		||||
#  index_projects_on_name                    (name)
 | 
			
		||||
#  index_projects_on_platform                (platform)
 | 
			
		||||
#  index_projects_on_project_type            (project_type)
 | 
			
		||||
#  index_projects_on_recommend               (recommend)
 | 
			
		||||
#  index_projects_on_rgt                     (rgt)
 | 
			
		||||
#  index_projects_on_status                  (status)
 | 
			
		||||
#  index_projects_on_updated_on              (updated_on)
 | 
			
		||||
#
 | 
			
		||||
# == Schema Information
 | 
			
		||||
#
 | 
			
		||||
# Table name: projects
 | 
			
		||||
#
 | 
			
		||||
#  id                     :integer          not null, primary key
 | 
			
		||||
#  name                   :string(255)      default(""), not null
 | 
			
		||||
#  description            :text(4294967295)
 | 
			
		||||
#  homepage               :string(255)      default("")
 | 
			
		||||
#  is_public              :boolean          default("1"), not null
 | 
			
		||||
#  parent_id              :integer
 | 
			
		||||
#  created_on             :datetime
 | 
			
		||||
#  updated_on             :datetime
 | 
			
		||||
#  identifier             :string(255)
 | 
			
		||||
#  status                 :integer          default("1"), not null
 | 
			
		||||
#  lft                    :integer
 | 
			
		||||
#  rgt                    :integer
 | 
			
		||||
#  inherit_members        :boolean          default("0"), not null
 | 
			
		||||
#  project_type           :integer          default("0")
 | 
			
		||||
#  hidden_repo            :boolean          default("0"), not null
 | 
			
		||||
#  attachmenttype         :integer          default("1")
 | 
			
		||||
#  user_id                :integer
 | 
			
		||||
#  dts_test               :integer          default("0")
 | 
			
		||||
#  enterprise_name        :string(255)
 | 
			
		||||
#  organization_id        :integer
 | 
			
		||||
#  project_new_type       :integer
 | 
			
		||||
#  gpid                   :integer
 | 
			
		||||
#  forked_from_project_id :integer
 | 
			
		||||
#  forked_count           :integer          default("0")
 | 
			
		||||
#  publish_resource       :integer          default("0")
 | 
			
		||||
#  visits                 :integer          default("0")
 | 
			
		||||
#  hot                    :integer          default("0")
 | 
			
		||||
#  invite_code            :string(255)
 | 
			
		||||
#  qrcode                 :string(255)
 | 
			
		||||
#  qrcode_expiretime      :integer          default("0")
 | 
			
		||||
#  script                 :text(65535)
 | 
			
		||||
#  training_status        :integer          default("0")
 | 
			
		||||
#  rep_identifier         :string(255)
 | 
			
		||||
#  project_category_id    :integer
 | 
			
		||||
#  project_language_id    :integer
 | 
			
		||||
#  license_id             :integer
 | 
			
		||||
#  ignore_id              :integer
 | 
			
		||||
#  praises_count          :integer          default("0")
 | 
			
		||||
#  watchers_count         :integer          default("0")
 | 
			
		||||
#  issues_count           :integer          default("0")
 | 
			
		||||
#  pull_requests_count    :integer          default("0")
 | 
			
		||||
#  language               :string(255)
 | 
			
		||||
#  versions_count         :integer          default("0")
 | 
			
		||||
#  issue_tags_count       :integer          default("0")
 | 
			
		||||
#  closed_issues_count    :integer          default("0")
 | 
			
		||||
#  open_devops            :boolean          default("0")
 | 
			
		||||
#  gitea_webhook_id       :integer
 | 
			
		||||
#  open_devops_count      :integer          default("0")
 | 
			
		||||
#  recommend              :boolean          default("0")
 | 
			
		||||
#  platform               :integer          default("0")
 | 
			
		||||
#  default_branch         :string(255)      default("master")
 | 
			
		||||
#  website                :string(255)
 | 
			
		||||
#  order_index            :integer          default("0")
 | 
			
		||||
#  lesson_url             :string(255)
 | 
			
		||||
#
 | 
			
		||||
# Indexes
 | 
			
		||||
#
 | 
			
		||||
#  index_projects_on_forked_from_project_id  (forked_from_project_id)
 | 
			
		||||
#  index_projects_on_identifier              (identifier)
 | 
			
		||||
#  index_projects_on_invite_code             (invite_code)
 | 
			
		||||
#  index_projects_on_is_public               (is_public)
 | 
			
		||||
#  index_projects_on_lft                     (lft)
 | 
			
		||||
#  index_projects_on_name                    (name)
 | 
			
		||||
#  index_projects_on_platform                (platform)
 | 
			
		||||
#  index_projects_on_project_type            (project_type)
 | 
			
		||||
#  index_projects_on_recommend               (recommend)
 | 
			
		||||
#  index_projects_on_rgt                     (rgt)
 | 
			
		||||
#  index_projects_on_status                  (status)
 | 
			
		||||
#  index_projects_on_updated_on              (updated_on)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ class Projects::ApplyJoinService < ApplicationService
 | 
			
		|||
  private
 | 
			
		||||
 | 
			
		||||
  def project
 | 
			
		||||
    @_project ||= Project.find_by('binary(invite_code) = ? ',"#{params[:code].to_s.strip}")
 | 
			
		||||
    @_project ||= Project.find_by(invite_code: params[:code].to_s.strip)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def role_value
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
class AddInviteCodeIndexToProjects < ActiveRecord::Migration[5.2]
 | 
			
		||||
  def change
 | 
			
		||||
    add_index :projects, :invite_code
 | 
			
		||||
    execute <<-SQL
 | 
			
		||||
      ALTER TABLE projects MODIFY COLUMN invite_code VARCHAR(255) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
 | 
			
		||||
    SQL
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
		Reference in New Issue