37 lines
948 B
Ruby
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
|