summaryrefslogtreecommitdiff
path: root/app/serializers
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2016-11-14 18:05:13 +0100
committerJames Lopez <james@jameslopez.es>2016-11-17 08:22:58 +0100
commit0ddf825ddf7bc480004919762b187390d0b900e9 (patch)
tree15dcfd21cec09e5e39a75216a88f1fce51b54ac9 /app/serializers
parent3b179bc37b940521522af6d8bf6762c2a9a0e251 (diff)
downloadgitlab-ce-0ddf825ddf7bc480004919762b187390d0b900e9.tar.gz
WIP - adding a generic entity serializer that should accept a Hash coming from Arel
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/analytics_generic_entity.rb32
-rw-r--r--app/serializers/analytics_generic_serializer.rb3
2 files changed, 35 insertions, 0 deletions
diff --git a/app/serializers/analytics_generic_entity.rb b/app/serializers/analytics_generic_entity.rb
new file mode 100644
index 00000000000..b007d9056d0
--- /dev/null
+++ b/app/serializers/analytics_generic_entity.rb
@@ -0,0 +1,32 @@
+class AnalyticsGenericEntity < Grape::Entity
+ include RequestAwareEntity
+ include ActionView::Helpers::DateHelper
+
+
+ expose :title
+ expose :iid
+ expose :started_at, as: :date
+ expose :author, using: UserEntity
+
+ expose :total_time do |object|
+ distance_of_time_in_words(object[:total_time].to_f)
+ end
+
+ expose(:date) do |object|
+ interval_in_words(object[:created_at])
+ end
+
+ expose :url do |object|
+ url_to("namespace_project_#{object[:entity]}".to_sym, id: object[:iid].to_s)
+ end
+
+ private
+
+ def url_to(route, id = nil)
+ public_send("#{route}_url", options[:project].namespace, options[:project], id)
+ end
+
+ def interval_in_words(diff)
+ "#{distance_of_time_in_words(diff.to_f)} ago"
+ end
+end
diff --git a/app/serializers/analytics_generic_serializer.rb b/app/serializers/analytics_generic_serializer.rb
new file mode 100644
index 00000000000..2347b56a1d6
--- /dev/null
+++ b/app/serializers/analytics_generic_serializer.rb
@@ -0,0 +1,3 @@
+class AnalyticsGenericSerializer < BaseSerializer
+ entity AnalyticsGenericEntity
+end