more initial work on star/unstar endpoints

This commit is contained in:
carlad 2015-11-18 17:43:35 +01:00
parent c96e8e2ff1
commit 714e40beca
6 changed files with 27 additions and 21 deletions

View File

@ -1,5 +1,6 @@
module Travis::API::V3 module Travis::API::V3
class Models::StarredRepository < Model class Models::StarredRepository < Model
has_many :repositories belongs_to :user
belongs_to :repository
end end
end end

View File

@ -6,7 +6,7 @@ module Travis::API::V3
has_many :tokens, dependent: :destroy has_many :tokens, dependent: :destroy
has_many :organizations, through: :memberships has_many :organizations, through: :memberships
has_many :repositories, as: :owner has_many :repositories, as: :owner
has_many :starred_repositories, #TODO has_many :starred_repositories #TODO
has_one :subscription, as: :owner has_one :subscription, as: :owner
serialize :github_oauth_token, Extensions::EncryptedColumn.new(disable: true) serialize :github_oauth_token, Extensions::EncryptedColumn.new(disable: true)

View File

@ -8,6 +8,14 @@ module Travis::API::V3
raise WrongParams, 'missing repository.id'.freeze raise WrongParams, 'missing repository.id'.freeze
end end
def star
Models::StarredRepository.create(repo_id: id, user_id: user_id)
end
def unstar
Models::StarredRepository.where(repo_id: id, user_id: user_id).delete
end
private private
def by_slug def by_slug

View File

@ -1,10 +0,0 @@
module Travis::API::V3
class Queries::StarredRepositories < Query
def for_user(user)
all.where(<<-SQL, 'User'.freeze, user.id)
SQL
end
end
end

View File

@ -1,11 +1,14 @@
module Travis::API::V3 module Travis::API::V3
class Services::Repository::Star < Service class Services::Repository::Star < Service
def run! def run!
super(true) raise LoginRequired unless access_control.logged_in? or access_control.full_access?
raise NotFound unless repository = find(:repository)
Models::StarredRepository.create(repository_id: repository.id, user_id: access_control.user.id)
# repository #TODO what do we want to return???
end end
def check_access(repository) # def check_access(repository)
access_control.permissions(repository).star! # access_control.permissions(repository).star!
end # end
end end
end end

View File

@ -1,11 +1,15 @@
module Travis::API::V3 module Travis::API::V3
class Services::Repository::Unstar < Service class Services::Repository::Unstar < Service
def run! def run!
super(true) raise LoginRequired unless access_control.logged_in? or access_control.full_access?
raise NotFound unless repository = find(:repository)
Models::StarredRepository.where(repository_id: repository.id, user_id: access_control.user.id).delete
# repository #TODO what do we want to return???
end end
def check_access(repository) # def check_access(repository)
access_control.permissions(repository).unstar! # access_control.permissions(repository).unstar!
end # end
end end
end end