From fa7e734a3efc4ea785e21501c0cf9a15821f8cdf Mon Sep 17 00:00:00 2001 From: junv Date: Sun, 2 Aug 2015 20:00:24 +0800 Subject: [PATCH] Add share instance list api --- Gemfile | 2 +- Gemfile.lock | 6 +++--- app/controllers/api/v1/posts_controller.rb | 2 +- app/serializers/post_serializer.rb | 13 +++++++++++++ app/serializers/share_instance_serializer.rb | 6 ++++++ ...20150802110933_add_view_account_to_article.rb | 5 +++++ ...0150802110954_add_view_account_to_web_page.rb | 6 ++++++ ...0802115537_update_view_account_to_web_page.rb | 5 +++++ ...50802115544_update_view_account_to_article.rb | 5 +++++ db/schema.rb | 16 +++++++++------- 10 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 app/serializers/post_serializer.rb create mode 100644 app/serializers/share_instance_serializer.rb create mode 100644 db/migrate/20150802110933_add_view_account_to_article.rb create mode 100644 db/migrate/20150802110954_add_view_account_to_web_page.rb create mode 100644 db/migrate/20150802115537_update_view_account_to_web_page.rb create mode 100644 db/migrate/20150802115544_update_view_account_to_article.rb diff --git a/Gemfile b/Gemfile index 341e7fe..f4084f7 100644 --- a/Gemfile +++ b/Gemfile @@ -38,7 +38,7 @@ gem 'activeadmin', '~> 1.0.0.pre1' gem 'devise' gem 'jwt' -gem 'active_model_serializers', '~> 0.9.3' +gem 'active_model_serializers', '~>0.10.0.rc2' gem 'versionist' gem 'houston' gem 'kaminari', '~> 0.16.3' diff --git a/Gemfile.lock b/Gemfile.lock index 2fbb640..589fc74 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -20,8 +20,8 @@ GEM erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - active_model_serializers (0.9.3) - activemodel (>= 3.2) + active_model_serializers (0.10.0.rc2) + activemodel (>= 4.0) activeadmin (1.0.0.pre1) arbre (~> 1.0, >= 1.0.2) bourbon @@ -303,7 +303,7 @@ PLATFORMS ruby DEPENDENCIES - active_model_serializers (~> 0.9.3) + active_model_serializers (~> 0.10.0.rc2) activeadmin (~> 1.0.0.pre1) awesome_print (~> 1.6.1) better_errors diff --git a/app/controllers/api/v1/posts_controller.rb b/app/controllers/api/v1/posts_controller.rb index abfd663..5c0cb21 100644 --- a/app/controllers/api/v1/posts_controller.rb +++ b/app/controllers/api/v1/posts_controller.rb @@ -25,7 +25,7 @@ class Api::V1::PostsController < ApplicationController end def index - + render json: @current_user.share_instances.page(params[:page]), each_serializer: ShareInstanceSerializer end private diff --git a/app/serializers/post_serializer.rb b/app/serializers/post_serializer.rb new file mode 100644 index 0000000..528e9da --- /dev/null +++ b/app/serializers/post_serializer.rb @@ -0,0 +1,13 @@ +class PostSerializer < ActiveModel::Serializer + + attributes :view_account, :url, :title + + def title + object.try(:name) + end + + def view_account + object.view_account || 0 + end + +end diff --git a/app/serializers/share_instance_serializer.rb b/app/serializers/share_instance_serializer.rb new file mode 100644 index 0000000..2675c89 --- /dev/null +++ b/app/serializers/share_instance_serializer.rb @@ -0,0 +1,6 @@ +class ShareInstanceSerializer < ActiveModel::Serializer + + attributes :description, :sharable_type + + belongs_to :sharable, serializer: PostSerializer +end diff --git a/db/migrate/20150802110933_add_view_account_to_article.rb b/db/migrate/20150802110933_add_view_account_to_article.rb new file mode 100644 index 0000000..7f63244 --- /dev/null +++ b/db/migrate/20150802110933_add_view_account_to_article.rb @@ -0,0 +1,5 @@ +class AddViewAccountToArticle < ActiveRecord::Migration + def change + add_column :articles, :view_account, :integer + end +end diff --git a/db/migrate/20150802110954_add_view_account_to_web_page.rb b/db/migrate/20150802110954_add_view_account_to_web_page.rb new file mode 100644 index 0000000..786659e --- /dev/null +++ b/db/migrate/20150802110954_add_view_account_to_web_page.rb @@ -0,0 +1,6 @@ +class AddViewAccountToWebPage < ActiveRecord::Migration + def change + + add_column :web_pages, :view_account, :integer + end +end diff --git a/db/migrate/20150802115537_update_view_account_to_web_page.rb b/db/migrate/20150802115537_update_view_account_to_web_page.rb new file mode 100644 index 0000000..5eac272 --- /dev/null +++ b/db/migrate/20150802115537_update_view_account_to_web_page.rb @@ -0,0 +1,5 @@ +class UpdateViewAccountToWebPage < ActiveRecord::Migration + def change + change_column :web_pages, :view_account, :integer, default: 0 + end +end diff --git a/db/migrate/20150802115544_update_view_account_to_article.rb b/db/migrate/20150802115544_update_view_account_to_article.rb new file mode 100644 index 0000000..5463158 --- /dev/null +++ b/db/migrate/20150802115544_update_view_account_to_article.rb @@ -0,0 +1,5 @@ +class UpdateViewAccountToArticle < ActiveRecord::Migration + def change + change_column :articles, :view_account, :integer, default: 0 + end +end diff --git a/db/schema.rb b/db/schema.rb index 6a7b1b3..b7ad20d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150802040745) do +ActiveRecord::Schema.define(version: 20150802115544) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -54,9 +54,10 @@ ActiveRecord::Schema.define(version: 20150802040745) do t.string "url" t.string "author" t.string "content" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "processed", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "processed", default: false + t.integer "view_account", default: 0 end create_table "auth_tokens", force: :cascade do |t| @@ -125,9 +126,10 @@ ActiveRecord::Schema.define(version: 20150802040745) do create_table "web_pages", force: :cascade do |t| t.string "name" t.string "url" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "processed", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "processed", default: false + t.integer "view_account", default: 0 end end