ting_model 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/README.md +41 -0
  4. data/Rakefile +1 -0
  5. data/gen_shards.rb +59 -0
  6. data/lib/extenders/album_extender.rb +9 -0
  7. data/lib/extenders/block_avatar_extender.rb +5 -0
  8. data/lib/extenders/chat_extender.rb +5 -0
  9. data/lib/extenders/class_node.rb +21 -0
  10. data/lib/extenders/comment_extender.rb +5 -0
  11. data/lib/extenders/favorite_album_extender.rb +5 -0
  12. data/lib/extenders/favorite_extender.rb +5 -0
  13. data/lib/extenders/following_extender.rb +13 -0
  14. data/lib/extenders/following_group_extender.rb +5 -0
  15. data/lib/extenders/following_tag_extender.rb +5 -0
  16. data/lib/extenders/followingx2_group_extender.rb +5 -0
  17. data/lib/extenders/inbox_extender.rb +5 -0
  18. data/lib/extenders/linkman_extender.rb +5 -0
  19. data/lib/extenders/outbox_extender.rb +5 -0
  20. data/lib/extenders/track_block_extender.rb +5 -0
  21. data/lib/extenders/track_extender.rb +5 -0
  22. data/lib/extenders/track_in_record_extender.rb +76 -0
  23. data/lib/extenders/track_picture_extender.rb +5 -0
  24. data/lib/extenders/track_record_extender.rb +5 -0
  25. data/lib/extenders/track_rich_extender.rb +5 -0
  26. data/lib/extenders/track_set_extender.rb +79 -0
  27. data/lib/extenders/track_set_rich_extender.rb +5 -0
  28. data/lib/extenders/user_tag_extender.rb +5 -0
  29. data/lib/ting_model.rb +1 -0
  30. data/lib/ting_model/advertisement.rb +5 -0
  31. data/lib/ting_model/advertisement_new.rb +4 -0
  32. data/lib/ting_model/album.rb +31 -0
  33. data/lib/ting_model/album_node.rb +9 -0
  34. data/lib/ting_model/album_origin.rb +137 -0
  35. data/lib/ting_model/album_pod.rb +8 -0
  36. data/lib/ting_model/album_podcat.rb +8 -0
  37. data/lib/ting_model/android_channel.rb +4 -0
  38. data/lib/ting_model/android_channel_binding.rb +7 -0
  39. data/lib/ting_model/announcement.rb +12 -0
  40. data/lib/ting_model/app_recommend.rb +55 -0
  41. data/lib/ting_model/application_v_category.rb +5 -0
  42. data/lib/ting_model/approve_group.rb +4 -0
  43. data/lib/ting_model/approving_track.rb +4 -0
  44. data/lib/ting_model/approving_track_log.rb +4 -0
  45. data/lib/ting_model/audit_log.rb +5 -0
  46. data/lib/ting_model/baidu_count.rb +4 -0
  47. data/lib/ting_model/bind_user.rb +7 -0
  48. data/lib/ting_model/binding_app.rb +4 -0
  49. data/lib/ting_model/biting.rb +4 -0
  50. data/lib/ting_model/black_user.rb +9 -0
  51. data/lib/ting_model/block_avatar.rb +31 -0
  52. data/lib/ting_model/block_avatar_node.rb +10 -0
  53. data/lib/ting_model/block_avatar_origin.rb +24 -0
  54. data/lib/ting_model/category.rb +20 -0
  55. data/lib/ting_model/category_icon_version.rb +12 -0
  56. data/lib/ting_model/chat.rb +31 -0
  57. data/lib/ting_model/chat_node.rb +10 -0
  58. data/lib/ting_model/chat_origin.rb +32 -0
  59. data/lib/ting_model/comment.rb +80 -0
  60. data/lib/ting_model/comment_node.rb +10 -0
  61. data/lib/ting_model/comment_origin.rb +116 -0
  62. data/lib/ting_model/dead_album.rb +8 -0
  63. data/lib/ting_model/dead_track.rb +8 -0
  64. data/lib/ting_model/dead_user.rb +7 -0
  65. data/lib/ting_model/default_follow.rb +6 -0
  66. data/lib/ting_model/delayed_album.rb +26 -0
  67. data/lib/ting_model/delayed_publish.rb +4 -0
  68. data/lib/ting_model/delayed_track.rb +43 -0
  69. data/lib/ting_model/discovery_page.rb +17 -0
  70. data/lib/ting_model/editor_recommend.rb +5 -0
  71. data/lib/ting_model/favorite.rb +59 -0
  72. data/lib/ting_model/favorite_album.rb +50 -0
  73. data/lib/ting_model/favorite_album_node.rb +9 -0
  74. data/lib/ting_model/favorite_album_origin.rb +88 -0
  75. data/lib/ting_model/favorite_node.rb +10 -0
  76. data/lib/ting_model/favorite_origin.rb +138 -0
  77. data/lib/ting_model/feed.rb +159 -0
  78. data/lib/ting_model/file_upload.rb +4 -0
  79. data/lib/ting_model/file_upload_record.rb +4 -0
  80. data/lib/ting_model/focus.rb +16 -0
  81. data/lib/ting_model/focus_album.rb +9 -0
  82. data/lib/ting_model/focus_current.rb +10 -0
  83. data/lib/ting_model/focus_track.rb +17 -0
  84. data/lib/ting_model/focus_user.rb +7 -0
  85. data/lib/ting_model/follower.rb +27 -0
  86. data/lib/ting_model/follower_node.rb +10 -0
  87. data/lib/ting_model/follower_origin.rb +34 -0
  88. data/lib/ting_model/follower_tag.rb +27 -0
  89. data/lib/ting_model/follower_tag_node.rb +10 -0
  90. data/lib/ting_model/follower_tag_origin.rb +14 -0
  91. data/lib/ting_model/followerx2_group.rb +27 -0
  92. data/lib/ting_model/followerx2_group_node.rb +10 -0
  93. data/lib/ting_model/followerx2_group_origin.rb +12 -0
  94. data/lib/ting_model/following.rb +57 -0
  95. data/lib/ting_model/following_group.rb +31 -0
  96. data/lib/ting_model/following_group_node.rb +10 -0
  97. data/lib/ting_model/following_group_origin.rb +29 -0
  98. data/lib/ting_model/following_node.rb +10 -0
  99. data/lib/ting_model/following_origin.rb +72 -0
  100. data/lib/ting_model/following_tag.rb +52 -0
  101. data/lib/ting_model/following_tag_node.rb +10 -0
  102. data/lib/ting_model/following_tag_origin.rb +59 -0
  103. data/lib/ting_model/followingx2_group.rb +31 -0
  104. data/lib/ting_model/followingx2_group_node.rb +10 -0
  105. data/lib/ting_model/followingx2_group_origin.rb +23 -0
  106. data/lib/ting_model/human_category.rb +17 -0
  107. data/lib/ting_model/human_recommend_album.rb +8 -0
  108. data/lib/ting_model/human_recommend_album_category_tag.rb +4 -0
  109. data/lib/ting_model/human_recommend_album_tag.rb +4 -0
  110. data/lib/ting_model/human_recommend_category_album.rb +7 -0
  111. data/lib/ting_model/human_recommend_category_tag.rb +6 -0
  112. data/lib/ting_model/human_recommend_category_tag_album.rb +7 -0
  113. data/lib/ting_model/human_recommend_category_tag_track.rb +11 -0
  114. data/lib/ting_model/human_recommend_category_tag_user.rb +7 -0
  115. data/lib/ting_model/human_recommend_category_track.rb +11 -0
  116. data/lib/ting_model/human_recommend_category_user.rb +7 -0
  117. data/lib/ting_model/human_recommend_tag.rb +5 -0
  118. data/lib/ting_model/human_recommend_tag_album.rb +7 -0
  119. data/lib/ting_model/human_recommend_tag_track.rb +9 -0
  120. data/lib/ting_model/human_recommend_tag_user.rb +7 -0
  121. data/lib/ting_model/human_recommend_track.rb +9 -0
  122. data/lib/ting_model/human_recommend_user.rb +7 -0
  123. data/lib/ting_model/icon_version.rb +7 -0
  124. data/lib/ting_model/inbox.rb +31 -0
  125. data/lib/ting_model/inbox_node.rb +10 -0
  126. data/lib/ting_model/inbox_origin.rb +59 -0
  127. data/lib/ting_model/latest_album.rb +9 -0
  128. data/lib/ting_model/latest_favorite.rb +10 -0
  129. data/lib/ting_model/latest_track.rb +10 -0
  130. data/lib/ting_model/linkman.rb +30 -0
  131. data/lib/ting_model/linkman_node.rb +10 -0
  132. data/lib/ting_model/linkman_origin.rb +26 -0
  133. data/lib/ting_model/liteapp.rb +7 -0
  134. data/lib/ting_model/liteapp_album.rb +4 -0
  135. data/lib/ting_model/liteapp_tag.rb +4 -0
  136. data/lib/ting_model/lover.rb +27 -0
  137. data/lib/ting_model/lover_album.rb +27 -0
  138. data/lib/ting_model/lover_album_node.rb +9 -0
  139. data/lib/ting_model/lover_album_origin.rb +39 -0
  140. data/lib/ting_model/lover_node.rb +10 -0
  141. data/lib/ting_model/lover_origin.rb +45 -0
  142. data/lib/ting_model/m_user.rb +8 -0
  143. data/lib/ting_model/message_log.rb +4 -0
  144. data/lib/ting_model/message_picture.rb +5 -0
  145. data/lib/ting_model/meta.rb +4 -0
  146. data/lib/ting_model/mixing_album.rb +7 -0
  147. data/lib/ting_model/mobad_stat.rb +9 -0
  148. data/lib/ting_model/news.rb +16 -0
  149. data/lib/ting_model/out_link.rb +7 -0
  150. data/lib/ting_model/outbox.rb +31 -0
  151. data/lib/ting_model/outbox_node.rb +10 -0
  152. data/lib/ting_model/outbox_origin.rb +59 -0
  153. data/lib/ting_model/outlink_stat.rb +4 -0
  154. data/lib/ting_model/personal_setting.rb +26 -0
  155. data/lib/ting_model/push_message.rb +4 -0
  156. data/lib/ting_model/receive_laya.rb +9 -0
  157. data/lib/ting_model/recommend_album.rb +7 -0
  158. data/lib/ting_model/recommend_category_album.rb +7 -0
  159. data/lib/ting_model/recommend_category_tag.rb +5 -0
  160. data/lib/ting_model/recommend_category_tag_album.rb +7 -0
  161. data/lib/ting_model/recommend_category_tag_track.rb +9 -0
  162. data/lib/ting_model/recommend_category_tag_user.rb +7 -0
  163. data/lib/ting_model/recommend_category_track.rb +9 -0
  164. data/lib/ting_model/recommend_category_user.rb +7 -0
  165. data/lib/ting_model/recommend_tag.rb +15 -0
  166. data/lib/ting_model/recommend_tag_album.rb +7 -0
  167. data/lib/ting_model/recommend_tag_track.rb +9 -0
  168. data/lib/ting_model/recommend_tag_user.rb +7 -0
  169. data/lib/ting_model/recommend_track.rb +9 -0
  170. data/lib/ting_model/recommend_user.rb +7 -0
  171. data/lib/ting_model/reject_reason.rb +17 -0
  172. data/lib/ting_model/report.rb +33 -0
  173. data/lib/ting_model/report_information.rb +29 -0
  174. data/lib/ting_model/search_black_uid.rb +7 -0
  175. data/lib/ting_model/search_key.rb +6 -0
  176. data/lib/ting_model/send_msg.rb +4 -0
  177. data/lib/ting_model/shards.rb +2626 -0
  178. data/lib/ting_model/sms.rb +19 -0
  179. data/lib/ting_model/special.rb +17 -0
  180. data/lib/ting_model/special_album.rb +4 -0
  181. data/lib/ting_model/special_track.rb +4 -0
  182. data/lib/ting_model/sub_app_advertisement_new.rb +4 -0
  183. data/lib/ting_model/subappad_stat.rb +9 -0
  184. data/lib/ting_model/system_configuration.rb +5 -0
  185. data/lib/ting_model/temp_blob.rb +5 -0
  186. data/lib/ting_model/track.rb +30 -0
  187. data/lib/ting_model/track_block.rb +46 -0
  188. data/lib/ting_model/track_block_node.rb +10 -0
  189. data/lib/ting_model/track_block_origin.rb +69 -0
  190. data/lib/ting_model/track_in_record.rb +27 -0
  191. data/lib/ting_model/track_in_record_node.rb +10 -0
  192. data/lib/ting_model/track_in_record_origin.rb +134 -0
  193. data/lib/ting_model/track_node.rb +9 -0
  194. data/lib/ting_model/track_origin.rb +224 -0
  195. data/lib/ting_model/track_picture.rb +32 -0
  196. data/lib/ting_model/track_picture_node.rb +10 -0
  197. data/lib/ting_model/track_picture_origin.rb +26 -0
  198. data/lib/ting_model/track_record.rb +31 -0
  199. data/lib/ting_model/track_record_node.rb +9 -0
  200. data/lib/ting_model/track_record_origin.rb +64 -0
  201. data/lib/ting_model/track_rich.rb +30 -0
  202. data/lib/ting_model/track_rich_node.rb +10 -0
  203. data/lib/ting_model/track_rich_origin.rb +31 -0
  204. data/lib/ting_model/track_set.rb +27 -0
  205. data/lib/ting_model/track_set_node.rb +9 -0
  206. data/lib/ting_model/track_set_origin.rb +147 -0
  207. data/lib/ting_model/track_set_rich.rb +30 -0
  208. data/lib/ting_model/track_set_rich_node.rb +10 -0
  209. data/lib/ting_model/track_set_rich_origin.rb +24 -0
  210. data/lib/ting_model/uid_approve_group.rb +4 -0
  211. data/lib/ting_model/upload_track_share_temp.rb +6 -0
  212. data/lib/ting_model/user_link.rb +10 -0
  213. data/lib/ting_model/user_log.rb +33 -0
  214. data/lib/ting_model/user_tag.rb +31 -0
  215. data/lib/ting_model/user_tag_node.rb +10 -0
  216. data/lib/ting_model/user_tag_origin.rb +23 -0
  217. data/lib/ting_model/user_v_category.rb +8 -0
  218. data/lib/ting_model/v_application.rb +35 -0
  219. data/lib/ting_model/v_category.rb +7 -0
  220. data/lib/ting_model/v_user.rb +7 -0
  221. data/lib/ting_model/varification_code.rb +6 -0
  222. data/lib/ting_model/web_advertisement.rb +6 -0
  223. data/lib/ting_model/web_discovery_page.rb +10 -0
  224. data/lib/ting_model/web_recommend.rb +6 -0
  225. data/lib/ting_model/weixin_account.rb +8 -0
  226. data/lib/ting_model/weixin_keyword.rb +4 -0
  227. data/lib/ting_model/weixin_monitor.rb +4 -0
  228. data/ting_model.gemspec +251 -0
  229. metadata +313 -0
@@ -0,0 +1,4 @@
1
+ class FileUpload < ActiveRecord::Base
2
+ self.table_name = "tb_file_upload" #APK包文件上传
3
+ attr_accessible :remark, :title, :url
4
+ end
@@ -0,0 +1,4 @@
1
+ class FileUploadRecord < ActiveRecord::Base
2
+ self.table_name = "tb_file_upload_records" #APK文件上传全记录
3
+ attr_accessible :file_upload_id, :operator, :url
4
+ end
@@ -0,0 +1,16 @@
1
+ class Focus < ActiveRecord::Base
2
+ self.table_name = "tb_focus" # 焦点图
3
+ attr_accessible :android_pic, :channel, :content_type, :end_time,
4
+ :ios_pic, :long_title, :position, :short_title, :start_time,
5
+ :status, :url, :web_pic, :num_type
6
+
7
+ # ios_pic android_pic web_pic --- ios图 android图 web图
8
+ # start_time end_time --- 开始时间 结束时间
9
+ # long_title short_title --- 长标题 短标题
10
+ # position --- 待放位置
11
+ # url --- 跳转地址
12
+ # status --- 发布状态 0:新建未发布 1:发布 2:下架
13
+ # content_type --- 内容类型 1:用户 2:专辑 3:声音 4:链接
14
+ # num_type --- 数量类型 1:多个 2:单个
15
+ # channel --- 渠道 1:web 2:手机
16
+ end
@@ -0,0 +1,9 @@
1
+ class FocusAlbum < ActiveRecord::Base
2
+ self.table_name = "tb_focus_album" # 焦点图对应的专辑
3
+ attr_accessible :album_id, :category_id, :cover_path, :focus_id, :intro, :is_v, :nickname, :title, :uid, :user_source
4
+
5
+ # focus_id --- 焦点图id
6
+ # album_id category_id cover_path title intro --- 专辑id 分类id 封面 标题 介绍
7
+ # uid nickname is_v --- 专辑用户id 昵称 是否加V
8
+ # user_source --- 专辑来源 1:原创 /2:采集
9
+ end
@@ -0,0 +1,10 @@
1
+ class FocusCurrent < ActiveRecord::Base
2
+ self.table_name = "tb_focus_current" #焦点图当前的配置
3
+ attr_accessible :channel, :focus_id, :position, :title, :cover_path
4
+
5
+ # channel --- 渠道 1:web 2:手机
6
+ # focus_id --- 焦点图id
7
+ # position --- 位置号
8
+ # title --- 标题
9
+ # cover_path --- 图片
10
+ end
@@ -0,0 +1,17 @@
1
+ class FocusTrack < ActiveRecord::Base
2
+ self.table_name = "tb_focus_track" # 焦点图对应声音
3
+ attr_accessible :album_id, :album_title, :category_id, :cover_path, :duration,
4
+ :focus_id, :intro, :is_v, :nickname, :title, :track_id, :uid, :user_source,
5
+ :track_created_at, :play_path_64, :play_path_32, :album_cover_path,
6
+ :small_logo
7
+
8
+ # focus_id --- 焦点图id
9
+ # track_id title intro cover_path --- 声音id 标题 简介 封面
10
+ # duration category_id --- 声音时长 分类id
11
+ # uid nickname small_logo is_v --- 用户id 昵称 头像 是否加V
12
+ # user_source --- 声音来源 1:原创/2:采集
13
+ # track_created_at --- 声音创建时间
14
+ # play_path_64 play_path_32 --- 声音播放地址
15
+ # album_id album_title album_cover_path --- 专辑id 标题 封面
16
+
17
+ end
@@ -0,0 +1,7 @@
1
+ class FocusUser < ActiveRecord::Base
2
+ self.table_name = "tb_focus_user" # 焦点图对应用户
3
+ attr_accessible :focus_id, :uid
4
+
5
+ # focus_id --- 焦点图id
6
+ # uid --- 用户id
7
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path('../follower_node', __FILE__)
2
+ require File.expand_path('../follower_origin', __FILE__)
3
+
4
+ class Follower < FollowerOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(FollowerNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ FollowerNode.seek(key).table_name
12
+ end
13
+
14
+ def self.stn(key)
15
+ self.table_name = self.gtn(key)
16
+ self
17
+ end
18
+
19
+ before_save do |r|
20
+ r.class.table_name = Follower.gtn(r.following_uid)
21
+ end
22
+
23
+ before_destroy do |r|
24
+ r.class.table_name = Follower.gtn(r.following_uid)
25
+ end
26
+
27
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class FollowerNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_follower_node' # 声音分表节点
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,34 @@
1
+ class FollowerOrigin < ActiveRecord::Base
2
+ # 关注人 根据following_uid分表,记录依赖following
3
+ self.table_name = 'tb_follow'
4
+
5
+ attr_accessible :uid, :following_uid,
6
+ :nickname, :avatar_path,
7
+ :avatar_path_small, :avatar_path_middle, :avatar_path_large,
8
+ :personal_signature,
9
+ :country, :province, :city, :town,
10
+ :following_nickname, :following_avatar_path,
11
+ :following_avatar_path_small, :following_avatar_path_middle, :following_avatar_path_large,
12
+ :following_personal_signature,
13
+ :following_country, :following_province, :following_city, :following_town, :following_is_v,
14
+ :is_blocked, :is_public, :is_mutual,
15
+ :following_group_id, :following_group_title, :is_auto_download, :is_auto_push
16
+
17
+ # uid nickname avatar_path personal_signature --- 用户id 昵称 头像 签名
18
+ # avatar_path_small avatar_path_middle avatar_path_large --- 未使用
19
+ # country province city town --- 用户所在地
20
+ # following_uid following_nickname following_avatar_path following_personal_signature --- 关注用户id 昵称 头像 签名
21
+ # following_avatar_path_small following_avatar_path_middle following_avatar_path_large --- 未使用
22
+ # following_country following_province following_city following_town --- 关注用户所在地
23
+ # following_is_v --- 关注用户是否加V
24
+ # is_blocked --- 是否拉黑
25
+ # is_public --- 是否公开
26
+ # is_mutual --- 是否相互关注
27
+ # following_group_id --- 未使用
28
+ # following_group_title --- 未使用
29
+ # is_auto_download --- 未使用
30
+ # is_auto_push --- 对方上传了一个声音是否推提醒
31
+
32
+ validates :following_uid, presence: true
33
+
34
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path('../follower_tag_node', __FILE__)
2
+ require File.expand_path('../follower_tag_origin', __FILE__)
3
+
4
+ class FollowerTag < FollowerTagOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(FollowerTagNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ FollowerTagNode.seek(key).table_name
12
+ end
13
+
14
+ def self.stn(key)
15
+ self.table_name = self.gtn(key)
16
+ self
17
+ end
18
+
19
+ before_save do |r|
20
+ r.class.table_name = FollowerTag.gtn(r.tname)
21
+ end
22
+
23
+ before_destroy do |r|
24
+ r.class.table_name = FollowerTag.gtn(r.tname)
25
+ end
26
+
27
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class FollowerTagNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_follower_tag_node'
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,14 @@
1
+ class FollowerTagOrigin < ActiveRecord::Base
2
+ # 关注标签 根据tname分表,记录依赖followings_tag
3
+ self.table_name = 'tb_follow_tag'
4
+
5
+ attr_accessible :uid, :tag_id,
6
+ :tname, :cover_path
7
+
8
+ # uid --- 用户id
9
+ # tag_id --- 未使用
10
+ # tname --- 标签
11
+ # cover_path --- 标签图标
12
+
13
+ validates :tname, presence: true
14
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path('../followerx2_group_node', __FILE__)
2
+ require File.expand_path('../followerx2_group_origin', __FILE__)
3
+
4
+ class Followerx2Group < Followerx2GroupOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(Followerx2GroupNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ Followerx2GroupNode.seek(key).table_name
12
+ end
13
+
14
+ def self.stn(key)
15
+ self.table_name = self.gtn(key)
16
+ self
17
+ end
18
+
19
+ before_save do |r|
20
+ r.class.table_name = Followerx2Group.gtn(r.uid)
21
+ end
22
+
23
+ before_destroy do |r|
24
+ r.class.table_name = Followerx2Group.gtn(r.uid)
25
+ end
26
+
27
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class Followerx2GroupNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_followerx2_group_node'
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,12 @@
1
+ class Followerx2GroupOrigin < ActiveRecord::Base
2
+ self.table_name = 'tb_followerx2_group' # 关注 一对多 分组
3
+
4
+ attr_accessible :uid, :following_id, :following_group_id, :is_deleted
5
+
6
+ # uid --- 用户id
7
+ # following_id --- 关注id
8
+ # following_group_id --- 分组id
9
+ # is_deleted --- 未使用
10
+
11
+ validates :uid, presence: true
12
+ end
@@ -0,0 +1,57 @@
1
+ require File.expand_path('../following_node', __FILE__)
2
+ require File.expand_path('../following_origin', __FILE__)
3
+
4
+ class Following < FollowingOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(FollowingNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ FollowingNode.seek(key).table_name
12
+ end
13
+
14
+ def self.stn(key)
15
+ self.table_name = self.gtn(key)
16
+ self
17
+ end
18
+
19
+ before_save do |r|
20
+ r.class.table_name = Following.gtn(r.uid)
21
+ unless r.id
22
+ r.id = Following.next_id
23
+ end
24
+ end
25
+
26
+ after_save do |r|
27
+ hash = r.attributes
28
+ hash.delete_if{|k,v| %w(id created_at updated_at).include? k }
29
+
30
+ follower = Follower.shard(r.following_uid).where(uid: r.uid, following_uid: r.following_uid).first
31
+
32
+ unless follower
33
+ # 创建
34
+ follower = Follower.shard(r.following_uid).new
35
+ end
36
+ follower.id = r.id
37
+ follower.update_attributes(hash)
38
+ end
39
+
40
+ before_destroy do |r|
41
+ r.class.table_name = Following.gtn(r.uid)
42
+ end
43
+
44
+ after_destroy do |r|
45
+ # 关注数 - 1
46
+ Following.decr_user_followings_count(r.uid)
47
+
48
+ follower = Follower.shard(r.following_uid).where(uid: r.uid, following_uid: r.following_uid).first
49
+
50
+ if follower
51
+ follower.destroy
52
+ # 粉丝数 - 1
53
+ Following.decr_user_followers_count(follower.following_uid)
54
+ end
55
+ end
56
+
57
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../following_group_node', __FILE__)
2
+ require File.expand_path('../following_group_origin', __FILE__)
3
+
4
+ class FollowingGroup < FollowingGroupOrigin
5
+
6
+ def self.shard(key)
7
+ Object.const_get(FollowingGroupNode.seek(key).class_name)
8
+ end
9
+
10
+ def self.gtn(key)
11
+ FollowingGroupNode.seek(key).table_name
12
+ end
13
+
14
+ def self.stn(key)
15
+ self.table_name = self.gtn(key)
16
+ self
17
+ end
18
+
19
+ before_save do |r|
20
+ r.class.table_name = FollowingGroup.gtn(r.uid)
21
+
22
+ unless r.id
23
+ r.id = FollowingGroup.next_id
24
+ end
25
+ end
26
+
27
+ before_destroy do |r|
28
+ r.class.table_name = FollowingGroup.gtn(r.uid)
29
+ end
30
+
31
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class FollowingGroupNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_following_group_node'
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../../extenders/following_group_extender', __FILE__)
2
+
3
+ class FollowingGroupOrigin < ActiveRecord::Base
4
+ extend FollowingGroupExtender
5
+
6
+ # 关注分组
7
+ self.table_name = 'tb_following_group'
8
+
9
+ attr_accessible :uid,
10
+ :is_public,
11
+ :title,
12
+ :is_auto_download,
13
+ :order_num
14
+
15
+ # uid --- 用户id
16
+ # is_public --- 是否公开
17
+ # title --- 分组名,一个用户不能有重名的组
18
+ # is_auto_download --- 是否自动离线下载,一个用户只能有一个自动离线下载的组
19
+ # order_num --- 排序号
20
+
21
+ validates :uid, presence: true
22
+
23
+ before_save do |r|
24
+ unless r.id
25
+ r.id = FollowingGroup.next_id
26
+ end
27
+ end
28
+
29
+ end
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../../extenders/class_node', __FILE__)
2
+
3
+ class FollowingNode < ActiveRecord::Base
4
+ extend ClassNode
5
+
6
+ self.table_name = 'tb_following_node' # 声音分表节点
7
+
8
+ attr_accessible :node, :table_name, :class_name
9
+
10
+ end
@@ -0,0 +1,72 @@
1
+ require File.expand_path('../../extenders/following_extender', __FILE__)
2
+ require File.expand_path('../follower', __FILE__)
3
+
4
+ class FollowingOrigin < ActiveRecord::Base
5
+ extend FollowingExtender
6
+
7
+ # 关注人 分表 根据 uid > followings | following_uid > followers
8
+ self.table_name = 'tb_follow'
9
+
10
+ attr_accessible :uid, :following_uid,
11
+ :nickname, :avatar_path,
12
+ :avatar_path_small, :avatar_path_middle, :avatar_path_large,
13
+ :personal_signature,
14
+ :country, :province, :city, :town,
15
+ :following_nickname, :following_avatar_path,
16
+ :following_avatar_path_small, :following_avatar_path_middle, :following_avatar_path_large,
17
+ :following_personal_signature,
18
+ :following_country, :following_province, :following_city, :following_town, :following_is_v,
19
+ :is_blocked, :is_public, :is_mutual,
20
+ :following_group_id, :following_group_title, :is_auto_download, :is_auto_push
21
+
22
+ # uid nickname avatar_path personal_signature --- 用户id 昵称 头像 签名
23
+ # avatar_path_small avatar_path_middle avatar_path_large --- 未使用
24
+ # country province city town --- 用户所在地
25
+ # following_uid following_nickname following_avatar_path following_personal_signature --- 关注用户id 昵称 头像 签名
26
+ # following_avatar_path_small following_avatar_path_middle following_avatar_path_large --- 未使用
27
+ # following_country following_province following_city following_town --- 关注用户所在地
28
+ # following_is_v --- 关注用户是否加V
29
+ # is_blocked --- 是否拉黑
30
+ # is_public --- 是否公开
31
+ # is_mutual --- 是否相互关注
32
+ # following_group_id --- 未使用
33
+ # following_group_title --- 未使用
34
+ # is_auto_download --- 未使用
35
+ # is_auto_push --- 对方上传了一个声音是否推提醒
36
+
37
+ validates :uid, presence: true
38
+
39
+ before_save do |r|
40
+ unless r.id
41
+ r.id = Following.next_id
42
+ end
43
+ end
44
+
45
+ after_save do |r|
46
+ hash = r.attributes
47
+ hash.delete_if{|k,v| %w(id created_at updated_at).include? k }
48
+
49
+ follower = Follower.shard(r.following_uid).where(uid: r.uid, following_uid: r.following_uid).first
50
+
51
+ unless follower
52
+ # 创建
53
+ follower = Follower.shard(r.following_uid).new
54
+ end
55
+ follower.id = r.id
56
+ follower.update_attributes(hash)
57
+ end
58
+
59
+ after_destroy do |r|
60
+ # 关注数 - 1
61
+ Following.decr_user_followings_count(r.uid)
62
+
63
+ follower = Follower.shard(r.following_uid).where(uid: r.uid, following_uid: r.following_uid).first
64
+
65
+ if follower
66
+ follower.destroy
67
+ # 粉丝数 - 1
68
+ Following.decr_user_followers_count(follower.following_uid)
69
+ end
70
+ end
71
+
72
+ end