travis-api/lib/travis/api/v3/queries/repository.rb
2015-12-01 17:25:09 +01:00

37 lines
948 B
Ruby

module Travis::API::V3
class Queries::Repository < Query
params :id, :slug
def find
@find ||= find!
end
def star(current_user)
repository = find
starred = Models::Star.where(repository_id: repository.id, user_id: current_user.id).first
Models::Star.create(repository_id: repository.id, user_id: current_user.id) unless starred
repository
end
def unstar(current_user)
repository = find
starred = Models::Star.where(repository_id: repository.id, user_id: current_user.id).first
starred.delete if starred
repository
end
private
def find!
return by_slug if slug
return Models::Repository.find_by_id(id) if id
raise WrongParams, 'missing repository.id'.freeze
end
def by_slug
owner_name, name = slug.split('/')
Models::Repository.where(owner_name: owner_name, name: name, invalidated_at: nil).first
end
end
end