From d30f454261a21963dc43e21a214b87210ca6e489 Mon Sep 17 00:00:00 2001
From: Guo Xiang Tan <tgx_world@hotmail.com>
Date: Mon, 14 Sep 2015 11:41:22 +0800
Subject: [PATCH] FEATURE: Create UserProfilerView.

---
 app/models/user_profile_view.rb                   |  5 +++++
 .../20150914021445_create_user_profile_views.rb   | 15 +++++++++++++++
 2 files changed, 20 insertions(+)
 create mode 100644 app/models/user_profile_view.rb
 create mode 100644 db/migrate/20150914021445_create_user_profile_views.rb

diff --git a/app/models/user_profile_view.rb b/app/models/user_profile_view.rb
new file mode 100644
index 00000000000..327da545306
--- /dev/null
+++ b/app/models/user_profile_view.rb
@@ -0,0 +1,5 @@
+class UserProfileView < ActiveRecord::Base
+  validates :user_profile_id, presence: true
+  validates :viewed_at, presence: true
+  validates :ip_address, presence: true
+end
diff --git a/db/migrate/20150914021445_create_user_profile_views.rb b/db/migrate/20150914021445_create_user_profile_views.rb
new file mode 100644
index 00000000000..04c085a53bb
--- /dev/null
+++ b/db/migrate/20150914021445_create_user_profile_views.rb
@@ -0,0 +1,15 @@
+class CreateUserProfileViews < ActiveRecord::Migration
+  def change
+    create_table :user_profile_views do |t|
+      t.integer :user_profile_id, null: false
+      t.datetime :viewed_at, null: false
+      t.inet :ip_address, null: false
+      t.integer :user_id
+    end
+
+    add_index :user_profile_views, :user_profile_id
+    add_index :user_profile_views, :user_id
+    add_index :user_profile_views, [:viewed_at, :ip_address, :user_profile_id], where: "user_id IS NULL", unique: true, name: 'unique_profile_view_ip'
+    add_index :user_profile_views, [:viewed_at, :user_id, :user_profile_id], where: "user_id IS NOT NULL", unique: true, name: 'unique_profile_view_user'
+  end
+end