Skip to content

Commit

Permalink
[api][webui] repository model: Update class method definitions
Browse files Browse the repository at this point in the history
  • Loading branch information
bgeuken committed Apr 12, 2016
1 parent c58df9b commit 1f5df57
Showing 1 changed file with 28 additions and 30 deletions.
58 changes: 28 additions & 30 deletions src/api/app/models/repository.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,34 @@ class Repository < ActiveRecord::Base

validates :db_project_id, presence: true

# FIXME: Don't lie, it's find_or_create_by_project_and_name_if_project_is_remote
def self.find_by_project_and_name( project, repo )
result = not_remote.joins(:project).where(:projects => {:name => project}, :name => repo).first
return result unless result.nil?

# no local repository found, check if remote repo possible

local_project, remote_project = Project.find_remote_project(project)
if local_project
return local_project.repositories.find_or_create_by(name: repo, remote_project_name: remote_project)
end

return nil
end

def self.find_by_project_and_path( project, path )
not_remote.joins(:path_elements).where(:project => project, :path_elements => {:link => path})
end

def self.deleted_instance
repo = Repository.find_by_project_and_name( "deleted", "deleted" )
return repo unless repo.nil?

# does not exist, so let's create it
project = Project.deleted_instance
project.repositories.find_or_create_by!(name: "deleted")
end

def cleanup_before_destroy
# change all linking repository pathes
self.linking_repositories.each do |lrep|
Expand Down Expand Up @@ -71,36 +99,6 @@ def project_name
self.remote_project_name
end

class << self
# FIXME: Don't lie, it's find_or_create_by_project_and_name_if_project_is_remote
def find_by_project_and_name( project, repo )
result = not_remote.joins(:project).where(:projects => {:name => project}, :name => repo).first
return result unless result.nil?

# no local repository found, check if remote repo possible

local_project, remote_project = Project.find_remote_project(project)
if local_project
return local_project.repositories.find_or_create_by(name: repo, remote_project_name: remote_project)
end

return nil
end

def find_by_project_and_path( project, path )
not_remote.joins(:path_elements).where(:project => project, :path_elements => {:link => path})
end

def deleted_instance
repo = Repository.find_by_project_and_name( "deleted", "deleted" )
return repo unless repo.nil?

# does not exist, so let's create it
project = Project.deleted_instance
project.repositories.find_or_create_by!(name: "deleted")
end
end

def expand_all_repositories
repositories = [self]
# add all linked and indirect linked repositories
Expand Down

0 comments on commit 1f5df57

Please sign in to comment.