From cff94803a99bce5abe21890f9bd051a30139fc46 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Wed, 16 Apr 2014 15:16:36 -0700 Subject: [PATCH] add social schema, associations --- migrations/018_add_social_schema.rb | 90 +++++++++++++++++++++++++++++ models/block.rb | 4 ++ models/change.rb | 3 + models/comment.rb | 3 + models/event.rb | 9 +++ models/follow.rb | 4 ++ models/like.rb | 3 + models/site.rb | 16 +++++ models/stat.rb | 3 + models/tip.rb | 4 ++ 10 files changed, 139 insertions(+) create mode 100644 migrations/018_add_social_schema.rb create mode 100644 models/block.rb create mode 100644 models/change.rb create mode 100644 models/comment.rb create mode 100644 models/event.rb create mode 100644 models/follow.rb create mode 100644 models/like.rb create mode 100644 models/stat.rb create mode 100644 models/tip.rb diff --git a/migrations/018_add_social_schema.rb b/migrations/018_add_social_schema.rb new file mode 100644 index 00000000..378ee736 --- /dev/null +++ b/migrations/018_add_social_schema.rb @@ -0,0 +1,90 @@ +Sequel.migration do + up { + DB.add_column :sites, :title, :text, default: nil + DB.add_column :sites, :twitter_handle, :text, default: nil + DB.add_column :sites, :views, :integer, default: 0 + DB.add_column :sites, :stripe_token, :text, default: nil + + DB.create_table! :follows do + primary_key :id + Integer :site_id, index: true + Integer :actioning_site_id, index: true + DateTime :created_at, index: true + end + + DB.create_table! :tips do + primary_key :id + Integer :site_id, index: true + Integer :actioning_site_id, index: true + DateTime :created_at, index: true + BigDecimal :amount + Integer :stripe_charge_id + end + + DB.create_table! :changes do + primary_key :id + Integer :site_id, index: true + DateTime :created_at, index: true + end + + DB.create_table! :events do + primary_key :id + Integer :site_id, index: true + Integer :follow_id + Integer :tip_id + Integer :tag_id + Integer :site_update_id + Integer :comment_id + Boolean :notification_seen, default: false + Integer :created_at, index: true + end + + DB.create_table! :comments do + primary_key :id + Integer :event_id, index: true + Integer :actioning_site_id + Integer :parent_comment_id + Text :message + DateTime :created_at + DateTime :updated_at + end + + DB.create_table! :likes do + primary_key :id + Integer :event_id, index: true + Integer :actioning_site_id + DateTime :created_at + end + + DB.create_table! :stats do + primary_key :id + Integer :site_id, index: true + Integer :hits, default: 0 + Integer :views, default: 0 + DateTime :created_at, index: true + end + + DB.create_table! :blocks do + primary_key :id + Integer :site_id, index: true + Integer :actioning_site_id, index: true + DateTime :created_at + end + } + + down { + DB.drop_column :sites, :title + DB.drop_column :sites, :twitter_handle + DB.drop_column :sites, :views + DB.drop_column :sites, :stripe_token + + DB.drop_table :follows + DB.drop_table :tips + DB.drop_table :changes + DB.drop_table :events + DB.drop_table :comments + DB.drop_table :likes + DB.drop_table :stats + DB.drop_table :blocks + } +end \ No newline at end of file diff --git a/models/block.rb b/models/block.rb new file mode 100644 index 00000000..8925fcb6 --- /dev/null +++ b/models/block.rb @@ -0,0 +1,4 @@ +class Block < Sequel::Model + many_to_one :site + many_to_one :actioning_site, class: :Block +end \ No newline at end of file diff --git a/models/change.rb b/models/change.rb new file mode 100644 index 00000000..a60d90eb --- /dev/null +++ b/models/change.rb @@ -0,0 +1,3 @@ +class Change < Sequel::Model + many_to_one :site +end \ No newline at end of file diff --git a/models/comment.rb b/models/comment.rb new file mode 100644 index 00000000..dc8d9adf --- /dev/null +++ b/models/comment.rb @@ -0,0 +1,3 @@ +class Comment < Sequel::Model + many_to_one :event +end \ No newline at end of file diff --git a/models/event.rb b/models/event.rb new file mode 100644 index 00000000..9ed21324 --- /dev/null +++ b/models/event.rb @@ -0,0 +1,9 @@ +class Event < Sequel::Model + many_to_one :site + many_to_one :follow + many_to_one :tip + many_to_one :tag + many_to_one :changes + one_to_many :likes + one_to_many :comments +end \ No newline at end of file diff --git a/models/follow.rb b/models/follow.rb new file mode 100644 index 00000000..5c89ec8c --- /dev/null +++ b/models/follow.rb @@ -0,0 +1,4 @@ +class Follow < Sequel::Model + many_to_one :site + many_to_one :actioning_site, :class => :Site +end \ No newline at end of file diff --git a/models/like.rb b/models/like.rb new file mode 100644 index 00000000..2d5815a5 --- /dev/null +++ b/models/like.rb @@ -0,0 +1,3 @@ +class Like < Sequel::Model + many_to_one :event +end \ No newline at end of file diff --git a/models/site.rb b/models/site.rb index f7ba700b..b3a934a1 100644 --- a/models/site.rb +++ b/models/site.rb @@ -40,7 +40,23 @@ class Site < Sequel::Model SITE_FILES_ROOT = File.join PUBLIC_ROOT, (ENV['RACK_ENV'] == 'test' ? 'sites_test' : 'sites') many_to_one :server + many_to_many :tags + + one_to_many :follows + one_to_many :followings, key: :actioning_site_id, class: :Follow + + one_to_many :tips + one_to_many :tippings, key: :actioning_site_id, class: :Tip + + one_to_many :blocks + one_to_many :blockings, key: :actioning_site_id, class: :Block + + one_to_many :stats + + one_to_many :events + + one_to_many :changes class << self def valid_login?(username, plaintext) diff --git a/models/stat.rb b/models/stat.rb new file mode 100644 index 00000000..007cf7eb --- /dev/null +++ b/models/stat.rb @@ -0,0 +1,3 @@ +class Stat < Sequel::Model + many_to_one :site +end \ No newline at end of file diff --git a/models/tip.rb b/models/tip.rb new file mode 100644 index 00000000..e97c5c5e --- /dev/null +++ b/models/tip.rb @@ -0,0 +1,4 @@ +class Tip < Sequel::Model + many_to_one :site + many_to_one :actioning_site, class: :Site +end \ No newline at end of file