[ADD]organization add num_teams
This commit is contained in:
parent
1e70764d63
commit
ddaca5bafc
|
@ -70,7 +70,7 @@ class Organization < Owner
|
||||||
validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, case_sensitive: false
|
validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, case_sensitive: false
|
||||||
|
|
||||||
delegate :description, :website, :location, :repo_admin_change_team_access,
|
delegate :description, :website, :location, :repo_admin_change_team_access,
|
||||||
:visibility, :max_repo_creation, :num_projects, :num_users, to: :organization_extension, allow_nil: true
|
:visibility, :max_repo_creation, :num_projects, :num_users, :num_teams, to: :organization_extension, allow_nil: true
|
||||||
|
|
||||||
scope :with_visibility, ->(visibility) { joins(:organization_extension).where(organization_extensions: {visibility: visibility}) if visibility.present? }
|
scope :with_visibility, ->(visibility) { joins(:organization_extension).where(organization_extensions: {visibility: visibility}) if visibility.present? }
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
# num_projects :integer default("0")
|
# num_projects :integer default("0")
|
||||||
# num_users :integer default("0")
|
# num_users :integer default("0")
|
||||||
|
# num_teams :integer default("0")
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
|
@ -25,6 +26,7 @@ class OrganizationExtension < ApplicationRecord
|
||||||
belongs_to :organization
|
belongs_to :organization
|
||||||
has_many :organization_users, foreign_key: :organization_id, primary_key: :organization_id
|
has_many :organization_users, foreign_key: :organization_id, primary_key: :organization_id
|
||||||
has_many :projects, foreign_key: :user_id, primary_key: :organization_id
|
has_many :projects, foreign_key: :user_id, primary_key: :organization_id
|
||||||
|
has_many :teams, foreign_key: :organization_id, primary_key: :organization_id
|
||||||
|
|
||||||
enum visibility: {common: 0, limited: 1, privacy: 2}
|
enum visibility: {common: 0, limited: 1, privacy: 2}
|
||||||
|
|
||||||
|
|
|
@ -1,72 +1,73 @@
|
||||||
# == Schema Information
|
# == Schema Information
|
||||||
#
|
#
|
||||||
# Table name: projects
|
# Table name: projects
|
||||||
#
|
#
|
||||||
# id :integer not null, primary key
|
# id :integer not null, primary key
|
||||||
# name :string(255) default(""), not null
|
# name :string(255) default(""), not null
|
||||||
# description :text(4294967295)
|
# description :text(4294967295)
|
||||||
# homepage :string(255) default("")
|
# homepage :string(255) default("")
|
||||||
# is_public :boolean default("1"), not null
|
# is_public :boolean default("1"), not null
|
||||||
# parent_id :integer
|
# parent_id :integer
|
||||||
# created_on :datetime
|
# created_on :datetime
|
||||||
# updated_on :datetime
|
# updated_on :datetime
|
||||||
# identifier :string(255)
|
# identifier :string(255)
|
||||||
# status :integer default("1"), not null
|
# status :integer default("1"), not null
|
||||||
# lft :integer
|
# lft :integer
|
||||||
# rgt :integer
|
# rgt :integer
|
||||||
# inherit_members :boolean default("0"), not null
|
# inherit_members :boolean default("0"), not null
|
||||||
# project_type :integer default("0")
|
# project_type :integer default("0")
|
||||||
# hidden_repo :boolean default("0"), not null
|
# hidden_repo :boolean default("0"), not null
|
||||||
# attachmenttype :integer default("1")
|
# attachmenttype :integer default("1")
|
||||||
# user_id :integer
|
# user_id :integer
|
||||||
# dts_test :integer default("0")
|
# dts_test :integer default("0")
|
||||||
# enterprise_name :string(255)
|
# enterprise_name :string(255)
|
||||||
# organization_id :integer
|
# organization_id :integer
|
||||||
# project_new_type :integer
|
# project_new_type :integer
|
||||||
# gpid :integer
|
# gpid :integer
|
||||||
# forked_from_project_id :integer
|
# forked_from_project_id :integer
|
||||||
# forked_count :integer default("0")
|
# forked_count :integer default("0")
|
||||||
# publish_resource :integer default("0")
|
# publish_resource :integer default("0")
|
||||||
# visits :integer default("0")
|
# visits :integer default("0")
|
||||||
# hot :integer default("0")
|
# hot :integer default("0")
|
||||||
# invite_code :string(255)
|
# invite_code :string(255)
|
||||||
# qrcode :string(255)
|
# qrcode :string(255)
|
||||||
# qrcode_expiretime :integer default("0")
|
# qrcode_expiretime :integer default("0")
|
||||||
# script :text(65535)
|
# script :text(65535)
|
||||||
# training_status :integer default("0")
|
# training_status :integer default("0")
|
||||||
# rep_identifier :string(255)
|
# rep_identifier :string(255)
|
||||||
# project_category_id :integer
|
# project_category_id :integer
|
||||||
# project_language_id :integer
|
# project_language_id :integer
|
||||||
# license_id :integer
|
# license_id :integer
|
||||||
# ignore_id :integer
|
# ignore_id :integer
|
||||||
# praises_count :integer default("0")
|
# praises_count :integer default("0")
|
||||||
# watchers_count :integer default("0")
|
# watchers_count :integer default("0")
|
||||||
# issues_count :integer default("0")
|
# issues_count :integer default("0")
|
||||||
# pull_requests_count :integer default("0")
|
# pull_requests_count :integer default("0")
|
||||||
# language :string(255)
|
# language :string(255)
|
||||||
# versions_count :integer default("0")
|
# versions_count :integer default("0")
|
||||||
# issue_tags_count :integer default("0")
|
# issue_tags_count :integer default("0")
|
||||||
# closed_issues_count :integer default("0")
|
# closed_issues_count :integer default("0")
|
||||||
# open_devops :boolean default("0")
|
# open_devops :boolean default("0")
|
||||||
# gitea_webhook_id :integer
|
# gitea_webhook_id :integer
|
||||||
# open_devops_count :integer default("0")
|
# open_devops_count :integer default("0")
|
||||||
# recommend :boolean default("0")
|
# recommend :boolean default("0")
|
||||||
# platform :integer default("0")
|
# platform :integer default("0")
|
||||||
#
|
#
|
||||||
# Indexes
|
# Indexes
|
||||||
#
|
#
|
||||||
# index_projects_on_forked_from_project_id (forked_from_project_id)
|
# index_projects_on_forked_from_project_id (forked_from_project_id)
|
||||||
# index_projects_on_identifier (identifier)
|
# index_projects_on_identifier (identifier)
|
||||||
# index_projects_on_is_public (is_public)
|
# index_projects_on_is_public (is_public)
|
||||||
# index_projects_on_lft (lft)
|
# index_projects_on_lft (lft)
|
||||||
# index_projects_on_name (name)
|
# index_projects_on_name (name)
|
||||||
# index_projects_on_platform (platform)
|
# index_projects_on_platform (platform)
|
||||||
# index_projects_on_project_type (project_type)
|
# index_projects_on_project_type (project_type)
|
||||||
# index_projects_on_recommend (recommend)
|
# index_projects_on_recommend (recommend)
|
||||||
# index_projects_on_rgt (rgt)
|
# index_projects_on_rgt (rgt)
|
||||||
# index_projects_on_status (status)
|
# index_projects_on_status (status)
|
||||||
# index_projects_on_updated_on (updated_on)
|
# index_projects_on_updated_on (updated_on)
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
class Project < ApplicationRecord
|
class Project < ApplicationRecord
|
||||||
include Matchable
|
include Matchable
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
class Team < ApplicationRecord
|
class Team < ApplicationRecord
|
||||||
|
|
||||||
belongs_to :organization
|
belongs_to :organization
|
||||||
|
belongs_to :organization_extension, foreign_key: :organization_id, primary_key: :organization_id, counter_cache: :num_teams
|
||||||
has_many :team_projects, dependent: :destroy
|
has_many :team_projects, dependent: :destroy
|
||||||
has_many :team_units, dependent: :destroy
|
has_many :team_units, dependent: :destroy
|
||||||
has_many :team_users, dependent: :destroy
|
has_many :team_users, dependent: :destroy
|
||||||
|
|
|
@ -8,5 +8,6 @@ json.visibility organization.visibility
|
||||||
json.max_repo_creation organization.max_repo_creation
|
json.max_repo_creation organization.max_repo_creation
|
||||||
json.num_projects organization.num_projects
|
json.num_projects organization.num_projects
|
||||||
json.num_user organization.num_users
|
json.num_user organization.num_users
|
||||||
|
json.num_teams organization.num_teams
|
||||||
json.avatar_url url_to_avatar(organization)
|
json.avatar_url url_to_avatar(organization)
|
||||||
json.created_at organization.created_on.strftime("%Y-%m-%d")
|
json.created_at organization.created_on.strftime("%Y-%m-%d")
|
|
@ -2,5 +2,12 @@ class AddColumnsToOrganizationExtension < ActiveRecord::Migration[5.2]
|
||||||
def change
|
def change
|
||||||
add_column :organization_extensions, :num_projects, :integer, default: 0
|
add_column :organization_extensions, :num_projects, :integer, default: 0
|
||||||
add_column :organization_extensions, :num_users, :integer, default: 0
|
add_column :organization_extensions, :num_users, :integer, default: 0
|
||||||
|
add_column :organization_extensions, :num_teams, :integer, default: 0
|
||||||
|
|
||||||
|
OrganizationExtension.find_each do |e|
|
||||||
|
OrganizationExtension.reset_counters(e.id, :organization_users)
|
||||||
|
OrganizationExtension.reset_counters(e.id, :projects)
|
||||||
|
OrganizationExtension.reset_counters(e.id, :teams)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue