diff options
| author | mo khan <mo@mokhan.ca> | 2014-10-16 20:13:58 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2014-10-16 20:13:58 -0600 |
| commit | d124c46292aaeb2e300d677915be2df5c48d1b9b (patch) | |
| tree | 17998c038e2296089b89a0455a7c185e0097ccef /app | |
| parent | 7a941ff842d54d1f5e39f7751ec2bb9ef695eaa4 (diff) | |
create a creations repository.
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/admin/users_controller.rb | 10 | ||||
| -rw-r--r-- | app/controllers/creation_tags_controller.rb | 8 | ||||
| -rw-r--r-- | app/models/creation.rb | 4 | ||||
| -rw-r--r-- | app/models/creation/repository.rb | 18 | ||||
| -rw-r--r-- | app/models/user/repository.rb | 7 |
5 files changed, 32 insertions, 15 deletions
diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index f2386854..abc33286 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -1,20 +1,20 @@ module Admin class UsersController < AdminController - def initialize(users_repository = Spank::IOC.resolve(:users)) - @users_repository = users_repository + def initialize(repository = Spank::IOC.resolve(:users)) + @repository = repository super() end def index - @users = users_repository.search_by(params[:q]) + @users = repository.search_by(params[:q]) end def show - @user = users_repository.includes(creations: :photos).find(params[:id]) + @user = repository.includes(creations: :photos).find(params[:id]) end private - attr_reader :users_repository + attr_reader :repository end end diff --git a/app/controllers/creation_tags_controller.rb b/app/controllers/creation_tags_controller.rb index b11ff867..8b71d8ab 100644 --- a/app/controllers/creation_tags_controller.rb +++ b/app/controllers/creation_tags_controller.rb @@ -1,10 +1,14 @@ class CreationTagsController < ApplicationController + def initialize(repository = Spank::IOC.resolve(:cakes)) + @repository = repository + end + def index - @tags = Creation.tag_counts_on(:tags) + @tags = @repository.tag_counts_on(:tags) end def show @tag = params[:id].downcase.parameterize - @creations = Creation.tagged(@tag).page(params[:page]).per(12) + @creations = @repository.tagged(@tag).page(params[:page]).per(12) end end diff --git a/app/models/creation.rb b/app/models/creation.rb index 4b4821e2..4ebe67b0 100644 --- a/app/models/creation.rb +++ b/app/models/creation.rb @@ -30,8 +30,4 @@ class Creation < ActiveRecord::Base def liked_by(user) favorites.find_or_create_by(user: user) end - - def self.tagged(tag) - includes([:user, :photos]).tagged_with([tag]).where('photos_count > 0') - end end diff --git a/app/models/creation/repository.rb b/app/models/creation/repository.rb new file mode 100644 index 00000000..35bc7a93 --- /dev/null +++ b/app/models/creation/repository.rb @@ -0,0 +1,18 @@ +class Creation + scope :tagged, ->(tag) { tagged_with([tag]).where('photos_count > 0') } + + class Repository < SimpleDelegator + def initialize(connection = Creation) + @connection = connection + super(connection) + end + + def tagged(tag) + connection.includes([:user, :photos]).tagged(tag) + end + + private + + attr_reader :connection + end +end diff --git a/app/models/user/repository.rb b/app/models/user/repository.rb index e59c9fde..3210134a 100644 --- a/app/models/user/repository.rb +++ b/app/models/user/repository.rb @@ -1,14 +1,13 @@ class User scope :artists, ->{ where('creations_count > 0').order(creations_count: :desc) } - scope :search_by, ->(query) { query.blank? ? self.scoped : where('name like :query or email like :query', query: "#{query}%") } + scope :search_by, ->(query) { query.blank? ? self.all : where('name like :query or email like :query', query: "#{query}%") } - class Repository + class Repository < SimpleDelegator def initialize(connection = User) @connection = connection + super(connection) end - delegate :all, :includes, :find, :search_by, to: :connection - def ordered connection.order(creations_count: :desc) end |
