From 714e40beca3e9250a2b7d45c41ba91e4a8602d03 Mon Sep 17 00:00:00 2001 From: carlad Date: Wed, 18 Nov 2015 17:43:35 +0100 Subject: [PATCH] more initial work on star/unstar endpoints --- lib/travis/api/v3/models/starred_repository.rb | 5 +++-- lib/travis/api/v3/models/user.rb | 2 +- lib/travis/api/v3/queries/repository.rb | 8 ++++++++ lib/travis/api/v3/queries/starred_repositories.rb | 10 ---------- lib/travis/api/v3/services/repository/star.rb | 11 +++++++---- lib/travis/api/v3/services/repository/unstar.rb | 12 ++++++++---- 6 files changed, 27 insertions(+), 21 deletions(-) delete mode 100644 lib/travis/api/v3/queries/starred_repositories.rb diff --git a/lib/travis/api/v3/models/starred_repository.rb b/lib/travis/api/v3/models/starred_repository.rb index 80d13072..5411d2db 100644 --- a/lib/travis/api/v3/models/starred_repository.rb +++ b/lib/travis/api/v3/models/starred_repository.rb @@ -1,5 +1,6 @@ module Travis::API::V3 class Models::StarredRepository < Model - has_many :repositories + belongs_to :user + belongs_to :repository end -end \ No newline at end of file +end diff --git a/lib/travis/api/v3/models/user.rb b/lib/travis/api/v3/models/user.rb index 36f0a99d..1d638b24 100644 --- a/lib/travis/api/v3/models/user.rb +++ b/lib/travis/api/v3/models/user.rb @@ -6,7 +6,7 @@ module Travis::API::V3 has_many :tokens, dependent: :destroy has_many :organizations, through: :memberships has_many :repositories, as: :owner - has_many :starred_repositories, #TODO + has_many :starred_repositories #TODO has_one :subscription, as: :owner serialize :github_oauth_token, Extensions::EncryptedColumn.new(disable: true) diff --git a/lib/travis/api/v3/queries/repository.rb b/lib/travis/api/v3/queries/repository.rb index a05d1c5b..f4f8b800 100644 --- a/lib/travis/api/v3/queries/repository.rb +++ b/lib/travis/api/v3/queries/repository.rb @@ -8,6 +8,14 @@ module Travis::API::V3 raise WrongParams, 'missing repository.id'.freeze 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 def by_slug diff --git a/lib/travis/api/v3/queries/starred_repositories.rb b/lib/travis/api/v3/queries/starred_repositories.rb deleted file mode 100644 index 6437f3c6..00000000 --- a/lib/travis/api/v3/queries/starred_repositories.rb +++ /dev/null @@ -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 diff --git a/lib/travis/api/v3/services/repository/star.rb b/lib/travis/api/v3/services/repository/star.rb index 6ebf8e05..814b588b 100644 --- a/lib/travis/api/v3/services/repository/star.rb +++ b/lib/travis/api/v3/services/repository/star.rb @@ -1,11 +1,14 @@ module Travis::API::V3 class Services::Repository::Star < Service 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 - def check_access(repository) - access_control.permissions(repository).star! - end + # def check_access(repository) + # access_control.permissions(repository).star! + # end end end diff --git a/lib/travis/api/v3/services/repository/unstar.rb b/lib/travis/api/v3/services/repository/unstar.rb index 3ad92340..d6734f59 100644 --- a/lib/travis/api/v3/services/repository/unstar.rb +++ b/lib/travis/api/v3/services/repository/unstar.rb @@ -1,11 +1,15 @@ module Travis::API::V3 class Services::Repository::Unstar < Service 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 - def check_access(repository) - access_control.permissions(repository).unstar! - end + # def check_access(repository) + # access_control.permissions(repository).unstar! + # end end end