ting_model 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fce7e9624c7436fdeec00b84c957218d4103b3ef
4
+ data.tar.gz: 130feafca1025d4a58920b80a767c9f01e3c8cad
5
+ SHA512:
6
+ metadata.gz: af2468f83f499d2900c6af94a2beba710a48ae1e575953c78daf1efad933fb39c8a423808fd6634a4f4e11144a67026d4bee72024811b82f1d310d0afb2dcdf1
7
+ data.tar.gz: 059bd1dc8488af1d4518d3d5c0aed21f608c20d20ad4e1f7c801b38d0217395908d563ebbf0421d9e861387158520de4eaff3cf955fcd1a91259bab3939e4caa
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'http://ruby.taobao.org'
2
+
3
+ # Specify your gem's dependencies in stzjb_server.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,41 @@
1
+ changelog:
2
+
3
+ 0.1.3 xunch cache extender
4
+ 0.1.2 add special, android_channel
5
+ 0.1.1 add followerx2_group
6
+
7
+ 用于:
8
+
9
+ subapp2
10
+ core
11
+ shouji2
12
+ home
13
+ square
14
+ podcast
15
+ outside
16
+ backend
17
+ baiduyy
18
+ chezai
19
+ litewap
20
+ pc
21
+ thirdparty
22
+ wap
23
+ weixin_public
24
+
25
+
26
+
27
+ model如何对应分表?
28
+
29
+ 分表的TrackRecord,对应100张表有(TrackRecord0-TrackRecord99)100个类,根据key找类:TrackRecord.shard(key) #=> TrackRecord59
30
+
31
+ 拿到返回的类再操作,是线程安全的,例如:
32
+ TrackRecord.shard(key).where
33
+ TrackRecord.shard(key).create
34
+ TrackRecord.shard(key).new
35
+
36
+ svn地址:
37
+ svn://192.168.3.221/zdjt/ting/ting_model
38
+
39
+ 测试:
40
+ ruby test/stn.rb (不安全,报错)
41
+ ruby test/shard.rb (安全,并行处理并输出)
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/gen_shards.rb ADDED
@@ -0,0 +1,59 @@
1
+ File.open(File.expand_path("../tmp/shards.rb", __FILE__), 'wb') do |f|
2
+ # f.puts "require 'active_record'"
3
+ f.puts "require File.expand_path('../album_origin.rb', __FILE__)"
4
+ f.puts "require File.expand_path('../block_avatar_origin.rb', __FILE__)"
5
+ f.puts "require File.expand_path('../chat_origin.rb', __FILE__)"
6
+ f.puts "require File.expand_path('../comment_origin.rb', __FILE__)"
7
+ f.puts "require File.expand_path('../favorite_origin.rb', __FILE__)"
8
+ f.puts "require File.expand_path('../favorite_album_origin.rb', __FILE__)"
9
+ f.puts "require File.expand_path('../follower_origin.rb', __FILE__)"
10
+ f.puts "require File.expand_path('../follower_tag_origin.rb', __FILE__)"
11
+ f.puts "require File.expand_path('../followerx2_group_origin.rb', __FILE__)"
12
+ f.puts "require File.expand_path('../following_origin.rb', __FILE__)"
13
+ f.puts "require File.expand_path('../followingx2_group_origin.rb', __FILE__)"
14
+ f.puts "require File.expand_path('../following_group_origin.rb', __FILE__)"
15
+ f.puts "require File.expand_path('../following_tag_origin.rb', __FILE__)"
16
+ f.puts "require File.expand_path('../inbox_origin.rb', __FILE__)"
17
+ f.puts "require File.expand_path('../linkman_origin.rb', __FILE__)"
18
+ f.puts "require File.expand_path('../lover_origin.rb', __FILE__)"
19
+ f.puts "require File.expand_path('../lover_album_origin.rb', __FILE__)"
20
+ f.puts "require File.expand_path('../outbox_origin.rb', __FILE__)"
21
+ f.puts "require File.expand_path('../track_origin.rb', __FILE__)"
22
+ f.puts "require File.expand_path('../track_block_origin.rb', __FILE__)"
23
+ f.puts "require File.expand_path('../track_in_record_origin.rb', __FILE__)"
24
+ f.puts "require File.expand_path('../track_picture_origin.rb', __FILE__)"
25
+ f.puts "require File.expand_path('../track_record_origin.rb', __FILE__)"
26
+ f.puts "require File.expand_path('../track_rich_origin.rb', __FILE__)"
27
+ f.puts "require File.expand_path('../track_set_origin.rb', __FILE__)"
28
+ f.puts "require File.expand_path('../track_set_rich_origin.rb', __FILE__)"
29
+ f.puts "require File.expand_path('../user_tag_origin.rb', __FILE__)"
30
+ 100.times do |i|
31
+ f.puts "class Album#{i} < AlbumOrigin; self.table_name = 'tb_album#{i}'; end"
32
+ f.puts "class BlockAvatar#{i} < BlockAvatarOrigin; self.table_name = 'tb_block_avatar#{i}'; end"
33
+ f.puts "class Chat#{i} < ChatOrigin; self.table_name = 'tb_chat#{i}'; end"
34
+ f.puts "class Comment#{i} < CommentOrigin; self.table_name = 'tb_comment#{i}'; end"
35
+ f.puts "class Favorite#{i} < FavoriteOrigin; self.table_name = 'tb_favorite#{i}'; end"
36
+ f.puts "class FavoriteAlbum#{i} < FavoriteAlbumOrigin; self.table_name = 'tb_favorite_album#{i}'; end"
37
+ f.puts "class Follower#{i} < FollowerOrigin; self.table_name = 'tb_follower#{i}'; end"
38
+ f.puts "class FollowerTag#{i} < FollowerTagOrigin; self.table_name = 'tb_follower_tag#{i}'; end"
39
+ f.puts "class Followerx2Group#{i} < Followerx2GroupOrigin; self.table_name = 'tb_followerx2_group#{i}'; end"
40
+ f.puts "class Following#{i} < FollowingOrigin; self.table_name = 'tb_following#{i}'; end"
41
+ f.puts "class Followingx2Group#{i} < Followingx2GroupOrigin; self.table_name = 'tb_followingx2_group#{i}'; end"
42
+ f.puts "class FollowingGroup#{i} < FollowingGroupOrigin; self.table_name = 'tb_following_group#{i}'; end"
43
+ f.puts "class FollowingTag#{i} < FollowingTagOrigin; self.table_name = 'tb_following_tag#{i}'; end"
44
+ f.puts "class Inbox#{i} < InboxOrigin; self.table_name = 'tb_inbox#{i}'; end"
45
+ f.puts "class Linkman#{i} < LinkmanOrigin; self.table_name = 'tb_linkman#{i}'; end"
46
+ f.puts "class Lover#{i} < LoverOrigin; self.table_name = 'tb_lover#{i}'; end"
47
+ f.puts "class LoverAlbum#{i} < LoverAlbumOrigin; self.table_name = 'tb_lover_album#{i}'; end"
48
+ f.puts "class Outbox#{i} < OutboxOrigin; self.table_name = 'tb_outbox#{i}'; end"
49
+ f.puts "class Track#{i} < TrackOrigin; self.table_name = 'tb_track#{i}'; end"
50
+ f.puts "class TrackBlock#{i} < TrackBlockOrigin; self.table_name = 'tb_track_block#{i}'; end"
51
+ f.puts "class TrackInRecord#{i} < TrackInRecordOrigin; self.table_name = 'tb_track_in_record#{i}'; end"
52
+ f.puts "class TrackPicture#{i} < TrackPictureOrigin; self.table_name = 'tb_track_picture#{i}'; end"
53
+ f.puts "class TrackRecord#{i} < TrackRecordOrigin; self.table_name = 'tb_track_record#{i}'; end"
54
+ f.puts "class TrackRich#{i} < TrackRichOrigin; self.table_name = 'tb_track_rich#{i}'; end"
55
+ f.puts "class TrackSet#{i} < TrackSetOrigin; self.table_name = 'tb_track_set#{i}'; end"
56
+ f.puts "class TrackSetRich#{i} < TrackSetRichOrigin; self.table_name = 'tb_track_set_rich#{i}'; end"
57
+ f.puts "class UserTag#{i} < UserTagOrigin; self.table_name = 'tb_user_tag#{i}'; end"
58
+ end
59
+ end
@@ -0,0 +1,9 @@
1
+ module AlbumExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_album")
4
+ end
5
+
6
+ def decr_user_albums_count(uid)
7
+ COUNTER_SERVICE.decrBy('user.albums.count', uid, 1)
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module BlockAvatarExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_block_avatar")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module ChatExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_chat")
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ require 'zlib'
2
+
3
+ module ClassNode
4
+
5
+ def seek(key)
6
+ unless @sorted_nodes
7
+ sorted_nodes, node_x_class_nodes = [], {}
8
+ self.select('node, class_name, table_name').order('node').each do |class_node|
9
+ sorted_nodes << class_node.node
10
+ node_x_class_nodes[class_node.node] = class_node
11
+ end
12
+ @sorted_nodes, @node_x_class_nodes = sorted_nodes, node_x_class_nodes
13
+ end
14
+
15
+
16
+
17
+ node = @sorted_nodes.bsearch{|node| node >= Zlib::crc32(key.to_s)} || @sorted_nodes.first
18
+ @node_x_class_nodes[node]
19
+ end
20
+
21
+ end
@@ -0,0 +1,5 @@
1
+ module CommentExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_comment")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module FavoriteAlbumExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_favorite_album")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module FavoriteExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_favorite")
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ module FollowingExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_following")
4
+ end
5
+
6
+ def decr_user_followings_count(uid)
7
+ COUNTER_SERVICE.decrBy('user.followings.count', uid, 1)
8
+ end
9
+
10
+ def decr_user_followers_count(uid)
11
+ COUNTER_SERVICE.decrBy('user.followers.count', uid, 1)
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ module FollowingGroupExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_following_group")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module FollowingTagExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_following_tag")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Followingx2GroupExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_followingx2_group")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module InboxExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_inbox")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module LinkmanExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_linkman")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module OutboxExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_outbox")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module TrackBlockExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_track_block")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module TrackExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_track")
4
+ end
5
+ end
@@ -0,0 +1,76 @@
1
+ module TrackInRecordExtender
2
+ # TIR_CACHE_VERSION = 2
3
+
4
+ def fetch(track_id)
5
+ # key = "tir#{track_id}h#{TIR_CACHE_VERSION}"
6
+ # data = REDIS.get(key)
7
+ # return Hessian2.parse(data, TrackInRecordStruct) if data
8
+
9
+ # obj = TrackInRecord.shard(track_id).where(op_type: 1, track_id: track_id).first
10
+ # if obj
11
+ # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackInRecordStruct, obj)))
12
+ # REDIS.expire(key, 604800)
13
+ # end
14
+
15
+ # obj
16
+
17
+ cache_server = $xunch["track_in_record"]
18
+ data = cache_server.get(track_id)
19
+ return data if data
20
+ obj = self.shard(track_id).where(op_type: 1, track_id: track_id).first
21
+ if obj
22
+ cache_server.put(obj)
23
+ end
24
+ obj
25
+ end
26
+
27
+ def mfetch(track_ids, ignore_nil = false)
28
+ # return [] if track_ids.empty?
29
+
30
+ # datas = REDIS.mget(track_ids.map{|track_id| "tir#{track_id}h#{TIR_CACHE_VERSION}" })
31
+ # objs = []
32
+
33
+ # datas.each_with_index do |data, i|
34
+ # if data
35
+ # objs << Hessian2.parse(data, TrackInRecordStruct)
36
+ # else
37
+ # track_id = track_ids[i]
38
+ # obj = TrackInRecord.shard(track_id).where(op_type: 1, track_id: track_id).first
39
+ # objs << obj
40
+ # if obj
41
+ # key = "tir#{track_id}h#{TIR_CACHE_VERSION}"
42
+ # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackInRecordStruct, obj)))
43
+ # REDIS.expire(key, 604800)
44
+ # end
45
+ # end
46
+ # end
47
+
48
+ # objs.delete(nil) if ignore_nil
49
+ # objs
50
+
51
+ return [] if track_ids.empty?
52
+ cache_server = $xunch["track_in_record"]
53
+ datas = cache_server.multi_get(track_ids.clone)
54
+ objs = []
55
+ datas.each_with_index do |data, i|
56
+ if data
57
+ objs << data
58
+ else
59
+ track_id = track_ids[i]
60
+ obj = self.shard(track_id).where(op_type: 1, track_id: track_id).first
61
+ objs << obj
62
+ if obj
63
+ cache_server.put(obj)
64
+ end
65
+ end
66
+ end
67
+ objs.delete(nil) if ignore_nil
68
+ objs
69
+ end
70
+
71
+ def del_cache(r)
72
+ # REDIS.del("tir#{r.track_id}h#{TIR_CACHE_VERSION}")
73
+ $xunch["track_in_record"].evict(r.track_id)
74
+ end
75
+
76
+ end
@@ -0,0 +1,5 @@
1
+ module TrackPictureExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_track_picture")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module TrackRecordExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_track_record")
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module TrackRichExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_track_rich")
4
+ end
5
+ end
@@ -0,0 +1,79 @@
1
+ module TrackSetExtender
2
+ # TRACKSET_CACHE_VERSION = 3
3
+
4
+ def fetch(id)
5
+ # key = "set#{id}h#{TRACKSET_CACHE_VERSION}"
6
+ # data = REDIS.get(key)
7
+ # return Hessian2.parse(data, TrackSetStruct) if data
8
+
9
+ # obj = TrackSet.shard(id).where(id: id).first
10
+ # if obj
11
+ # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackSetStruct, obj)))
12
+ # REDIS.expire(key, 604800)
13
+ # end
14
+
15
+ # obj
16
+
17
+ cache_server = $xunch["track_set"]
18
+ data = cache_server.get(id)
19
+ return data if data
20
+ obj = self.shard(id).where(id: id).first
21
+ if obj
22
+ cache_server.put(obj)
23
+ end
24
+
25
+ obj
26
+ end
27
+
28
+ def mfetch(ids, ignore_nil = false)
29
+ # return [] if ids.empty?
30
+
31
+ # datas = REDIS.mget(ids.map{|id| "set#{id}h#{TRACKSET_CACHE_VERSION}" })
32
+ # objs = []
33
+
34
+ # datas.each_with_index do |data, i|
35
+ # if data
36
+ # objs << Hessian2.parse(data, TrackSetStruct)
37
+ # else
38
+ # id = ids[i]
39
+ # obj = TrackSet.shard(id).where(id: id).first
40
+ # objs << obj
41
+ # if obj
42
+ # key = "set#{id}h#{TRACKSET_CACHE_VERSION}"
43
+ # REDIS.set(key, Hessian2.write(Hessian2::StructWrapper.new(TrackSetStruct, obj)))
44
+ # REDIS.expire(key, 604800)
45
+ # end
46
+ # end
47
+ # end
48
+
49
+ # objs.delete(nil) if ignore_nil
50
+ # objs
51
+
52
+ return [] if ids.empty?
53
+
54
+ cache_server = $xunch["track_set"]
55
+
56
+ datas = cache_server.multi_get(ids)
57
+ objs = []
58
+ datas.each_with_index do |data, i|
59
+ if data
60
+ objs << data
61
+ else
62
+ id = ids[i]
63
+ obj = self.shard(id).where(id: id).first
64
+ objs << obj
65
+ if obj
66
+ cache_server.put(obj)
67
+ end
68
+ end
69
+ end
70
+ objs.delete(nil) if ignore_nil
71
+ objs
72
+ end
73
+
74
+ def del_cache(r)
75
+ # REDIS.del("set#{r.id}h#{TRACKSET_CACHE_VERSION}")
76
+ $xunch["track_set"].evict(r.id)
77
+ end
78
+
79
+ end
@@ -0,0 +1,5 @@
1
+ module TrackSetRichExtender
2
+ def next_id
3
+ ID_SERVICE.getNextId("ting.tb_track_set_rich")
4
+ end
5
+ end