elasticord 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +160 -0
  4. data/README.md +35 -0
  5. data/Rakefile +30 -0
  6. data/bin/setup_config_files.sh +19 -0
  7. data/config/boot.rb +39 -0
  8. data/dash_overlord.gemspec +39 -0
  9. data/db/migrate/20160321174733_devise_create_users.rb +43 -0
  10. data/db/migrate/20161014155300_create_bee_videos.rb +21 -0
  11. data/db/migrate/20161014160600_create_subtitle_lines.rb +11 -0
  12. data/db/migrate/20161017103500_add_width_and_height_to_bee_videos.rb +21 -0
  13. data/db/migrate/20161017161300_add_start_and_end_time_to_subtitle_lines.rb +17 -0
  14. data/db/migrate/20161017185300_add_fulltext_search_to_subtitle_lines.rb +13 -0
  15. data/db/migrate/20161018150400_add_subtitle_url_to_bee_videos.rb +5 -0
  16. data/db/migrate/20161026162500_add_country_category_and_extra_to_bee_videos.rb +7 -0
  17. data/db/migrate/20161124152600_add_segment_uid_to_bee_videos.rb +5 -0
  18. data/db/migrate/20161223113800_add_user_data_to_bee_videos.rb +17 -0
  19. data/db/migrate/20170105102428_add_segment_uid_to_subtitle_lines.rb +5 -0
  20. data/db/migrate/20170209171700_add_client_id_to_users.rb +5 -0
  21. data/db/migrate/20170209173800_create_admins.rb +8 -0
  22. data/db/migrate/20170209190400_create_clients.rb +8 -0
  23. data/db/migrate/20170210110800_create_chart_configs.rb +35 -0
  24. data/elasticord.gemspec +26 -0
  25. data/lib/dash_overlord.rb +16 -0
  26. data/lib/dash_overlord/config.rb +39 -0
  27. data/lib/dash_overlord/entities/base.rb +13 -0
  28. data/lib/dash_overlord/entities/v1/base.rb +10 -0
  29. data/lib/dash_overlord/entities/v1/chart_source.rb +10 -0
  30. data/lib/dash_overlord/entities/v1/meta_data.rb +10 -0
  31. data/lib/dash_overlord/locales/v1/en/admins.yml +7 -0
  32. data/lib/dash_overlord/locales/v1/en/chart_configs.yml +7 -0
  33. data/lib/dash_overlord/locales/v1/en/clients.yml +7 -0
  34. data/lib/dash_overlord/locales/v1/en/en.yml +213 -0
  35. data/lib/dash_overlord/locales/v1/en/users.yml +9 -0
  36. data/lib/dash_overlord/models/base.rb +12 -0
  37. data/lib/dash_overlord/models/v1/admin.rb +10 -0
  38. data/lib/dash_overlord/models/v1/answer.rb +10 -0
  39. data/lib/dash_overlord/models/v1/base.rb +11 -0
  40. data/lib/dash_overlord/models/v1/basic_user.rb +34 -0
  41. data/lib/dash_overlord/models/v1/bee_video.rb +30 -0
  42. data/lib/dash_overlord/models/v1/chart_config.rb +48 -0
  43. data/lib/dash_overlord/models/v1/client.rb +10 -0
  44. data/lib/dash_overlord/models/v1/dynamo_db/base.rb +98 -0
  45. data/lib/dash_overlord/models/v1/dynamo_db/migration.rb +52 -0
  46. data/lib/dash_overlord/models/v1/dynamo_db/video.rb +11 -0
  47. data/lib/dash_overlord/models/v1/elastic_search.rb +12 -0
  48. data/lib/dash_overlord/models/v1/subtitle_line.rb +21 -0
  49. data/lib/dash_overlord/models/v1/user.rb +10 -0
  50. data/lib/dash_overlord/requirable.rb +110 -0
  51. data/lib/dash_overlord/serializers/base.rb +127 -0
  52. data/lib/dash_overlord/serializers/v1/admins/base.rb +15 -0
  53. data/lib/dash_overlord/serializers/v1/admins/log_in.rb +13 -0
  54. data/lib/dash_overlord/serializers/v1/admins/show.rb +13 -0
  55. data/lib/dash_overlord/serializers/v1/base.rb +17 -0
  56. data/lib/dash_overlord/serializers/v1/chart_configs/base.rb +15 -0
  57. data/lib/dash_overlord/serializers/v1/chart_configs/create.rb +13 -0
  58. data/lib/dash_overlord/serializers/v1/chart_configs/delete.rb +12 -0
  59. data/lib/dash_overlord/serializers/v1/chart_configs/index.rb +15 -0
  60. data/lib/dash_overlord/serializers/v1/chart_configs/show.rb +59 -0
  61. data/lib/dash_overlord/serializers/v1/chart_configs/update.rb +12 -0
  62. data/lib/dash_overlord/serializers/v1/clients/base.rb +15 -0
  63. data/lib/dash_overlord/serializers/v1/clients/create.rb +13 -0
  64. data/lib/dash_overlord/serializers/v1/clients/delete.rb +12 -0
  65. data/lib/dash_overlord/serializers/v1/clients/index.rb +15 -0
  66. data/lib/dash_overlord/serializers/v1/clients/show.rb +15 -0
  67. data/lib/dash_overlord/serializers/v1/clients/update.rb +12 -0
  68. data/lib/dash_overlord/serializers/v1/meta_data/pagination.rb +19 -0
  69. data/lib/dash_overlord/serializers/v1/meta_data/pagination_with_filters.rb +13 -0
  70. data/lib/dash_overlord/serializers/v1/subtitle_lines/base.rb +15 -0
  71. data/lib/dash_overlord/serializers/v1/subtitle_lines/show.rb +35 -0
  72. data/lib/dash_overlord/serializers/v1/users/base.rb +15 -0
  73. data/lib/dash_overlord/serializers/v1/users/create.rb +13 -0
  74. data/lib/dash_overlord/serializers/v1/users/delete.rb +12 -0
  75. data/lib/dash_overlord/serializers/v1/users/index.rb +15 -0
  76. data/lib/dash_overlord/serializers/v1/users/log_in.rb +13 -0
  77. data/lib/dash_overlord/serializers/v1/users/show.rb +13 -0
  78. data/lib/dash_overlord/serializers/v1/users/update.rb +12 -0
  79. data/lib/dash_overlord/serializers/v1/videos/base.rb +15 -0
  80. data/lib/dash_overlord/serializers/v1/videos/index.rb +15 -0
  81. data/lib/dash_overlord/serializers/v1/videos/show.rb +43 -0
  82. data/lib/dash_overlord/use_cases/base.rb +87 -0
  83. data/lib/dash_overlord/use_cases/context.rb +72 -0
  84. data/lib/dash_overlord/use_cases/v1/admins/find_current_admin.rb +15 -0
  85. data/lib/dash_overlord/use_cases/v1/admins/log_in/base.rb +26 -0
  86. data/lib/dash_overlord/use_cases/v1/admins/show_current_admin/base.rb +22 -0
  87. data/lib/dash_overlord/use_cases/v1/admins/show_current_admin/find_current_admin.rb +21 -0
  88. data/lib/dash_overlord/use_cases/v1/admins/show_current_admin/get_current_admin.rb +20 -0
  89. data/lib/dash_overlord/use_cases/v1/base.rb +8 -0
  90. data/lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/base.rb +19 -0
  91. data/lib/dash_overlord/use_cases/v1/chart_configs/cache_answer_values/build_cache.rb +85 -0
  92. data/lib/dash_overlord/use_cases/v1/chart_configs/create/assign_attributes_to_chart_config.rb +48 -0
  93. data/lib/dash_overlord/use_cases/v1/chart_configs/create/base.rb +34 -0
  94. data/lib/dash_overlord/use_cases/v1/chart_configs/create/build_chart_config.rb +17 -0
  95. data/lib/dash_overlord/use_cases/v1/chart_configs/create/validate_chart_config.rb +76 -0
  96. data/lib/dash_overlord/use_cases/v1/chart_configs/delete/base.rb +26 -0
  97. data/lib/dash_overlord/use_cases/v1/chart_configs/delete/delete_chart_config.rb +24 -0
  98. data/lib/dash_overlord/use_cases/v1/chart_configs/get_chart_config.rb +16 -0
  99. data/lib/dash_overlord/use_cases/v1/chart_configs/index/base.rb +24 -0
  100. data/lib/dash_overlord/use_cases/v1/chart_configs/index/find_chart_configs.rb +17 -0
  101. data/lib/dash_overlord/use_cases/v1/chart_configs/index/search_and_paginate_chart_configs.rb +17 -0
  102. data/lib/dash_overlord/use_cases/v1/chart_configs/save_chart_config.rb +19 -0
  103. data/lib/dash_overlord/use_cases/v1/chart_configs/show/base.rb +23 -0
  104. data/lib/dash_overlord/use_cases/v1/chart_configs/show/find_chart_config.rb +21 -0
  105. data/lib/dash_overlord/use_cases/v1/chart_configs/update/base.rb +32 -0
  106. data/lib/dash_overlord/use_cases/v1/clients/create/assign_attributes_to_client.rb +27 -0
  107. data/lib/dash_overlord/use_cases/v1/clients/create/base.rb +29 -0
  108. data/lib/dash_overlord/use_cases/v1/clients/create/build_client.rb +17 -0
  109. data/lib/dash_overlord/use_cases/v1/clients/create/validate_client.rb +25 -0
  110. data/lib/dash_overlord/use_cases/v1/clients/delete/base.rb +26 -0
  111. data/lib/dash_overlord/use_cases/v1/clients/delete/delete_client.rb +22 -0
  112. data/lib/dash_overlord/use_cases/v1/clients/index/base.rb +24 -0
  113. data/lib/dash_overlord/use_cases/v1/clients/index/find_clients.rb +17 -0
  114. data/lib/dash_overlord/use_cases/v1/clients/index/search_and_paginate_clients.rb +17 -0
  115. data/lib/dash_overlord/use_cases/v1/clients/save_client.rb +19 -0
  116. data/lib/dash_overlord/use_cases/v1/clients/show/base.rb +23 -0
  117. data/lib/dash_overlord/use_cases/v1/clients/show/find_client.rb +21 -0
  118. data/lib/dash_overlord/use_cases/v1/clients/show/get_client.rb +17 -0
  119. data/lib/dash_overlord/use_cases/v1/clients/update/base.rb +27 -0
  120. data/lib/dash_overlord/use_cases/v1/dummy_data/create/charts/base.rb +38 -0
  121. data/lib/dash_overlord/use_cases/v1/dummy_data/create/charts/build.rb +64 -0
  122. data/lib/dash_overlord/use_cases/v1/repositories/dynamo_db/client.rb +39 -0
  123. data/lib/dash_overlord/use_cases/v1/repositories/dynamo_db/create/batch.rb +46 -0
  124. data/lib/dash_overlord/use_cases/v1/repositories/dynamo_db/query/table.rb +25 -0
  125. data/lib/dash_overlord/use_cases/v1/shared/log_in/assign_attributes_to_user_model.rb +28 -0
  126. data/lib/dash_overlord/use_cases/v1/shared/log_in/base.rb +21 -0
  127. data/lib/dash_overlord/use_cases/v1/shared/log_in/build_user_model.rb +19 -0
  128. data/lib/dash_overlord/use_cases/v1/shared/log_in/get_existing_user_model.rb +20 -0
  129. data/lib/dash_overlord/use_cases/v1/shared/log_in/switch_user_model_by_existing_user_model.rb +17 -0
  130. data/lib/dash_overlord/use_cases/v1/shared/log_in/validate_user_model.rb +52 -0
  131. data/lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_filters.rb +25 -0
  132. data/lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_full_text_search.rb +22 -0
  133. data/lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_pagination.rb +72 -0
  134. data/lib/dash_overlord/use_cases/v1/shared/search_and_paginate/base.rb +36 -0
  135. data/lib/dash_overlord/use_cases/v1/users/create/assign_attributes_to_user.rb +26 -0
  136. data/lib/dash_overlord/use_cases/v1/users/create/base.rb +29 -0
  137. data/lib/dash_overlord/use_cases/v1/users/create/build_user.rb +17 -0
  138. data/lib/dash_overlord/use_cases/v1/users/create/validate_user.rb +27 -0
  139. data/lib/dash_overlord/use_cases/v1/users/delete/base.rb +26 -0
  140. data/lib/dash_overlord/use_cases/v1/users/delete/delete_user.rb +22 -0
  141. data/lib/dash_overlord/use_cases/v1/users/find_current_user.rb +15 -0
  142. data/lib/dash_overlord/use_cases/v1/users/index/base.rb +23 -0
  143. data/lib/dash_overlord/use_cases/v1/users/index/search_and_paginate_users.rb +17 -0
  144. data/lib/dash_overlord/use_cases/v1/users/log_in/base.rb +26 -0
  145. data/lib/dash_overlord/use_cases/v1/users/save_user.rb +23 -0
  146. data/lib/dash_overlord/use_cases/v1/users/show/base.rb +23 -0
  147. data/lib/dash_overlord/use_cases/v1/users/show/find_user.rb +21 -0
  148. data/lib/dash_overlord/use_cases/v1/users/show/get_user.rb +17 -0
  149. data/lib/dash_overlord/use_cases/v1/users/show_current_user/base.rb +22 -0
  150. data/lib/dash_overlord/use_cases/v1/users/show_current_user/find_current_user.rb +21 -0
  151. data/lib/dash_overlord/use_cases/v1/users/show_current_user/get_current_user.rb +20 -0
  152. data/lib/dash_overlord/use_cases/v1/users/update/base.rb +27 -0
  153. data/lib/dash_overlord/use_cases/v1/videos/index/base.rb +31 -0
  154. data/lib/dash_overlord/use_cases/v1/videos/index/dynamodb/base.rb +19 -0
  155. data/lib/dash_overlord/use_cases/v1/videos/index/dynamodb/search_and_paginate_videos.rb +20 -0
  156. data/lib/dash_overlord/use_cases/v1/videos/index/elastic_search/base.rb +19 -0
  157. data/lib/dash_overlord/use_cases/v1/videos/index/elastic_search/search_and_paginate_videos.rb +97 -0
  158. data/lib/dash_overlord/use_cases/v1/videos/index/postgres/base.rb +22 -0
  159. data/lib/dash_overlord/use_cases/v1/videos/index/postgres/build_video_searched_subtitles.rb +42 -0
  160. data/lib/dash_overlord/use_cases/v1/videos/index/postgres/get_filters.rb +91 -0
  161. data/lib/dash_overlord/use_cases/v1/videos/index/postgres/hhc.json +206 -0
  162. data/lib/dash_overlord/use_cases/v1/videos/index/postgres/search_and_paginate_videos.rb +35 -0
  163. data/lib/dash_overlord/use_cases/v1/videos/index/postgres/search_on_subtitle_lines.rb +26 -0
  164. data/lib/dash_overlord/version.rb +3 -0
  165. data/lib/elasticord.rb +24 -0
  166. data/lib/elasticord/base.rb +80 -0
  167. data/lib/elasticord/config.rb +23 -0
  168. data/lib/elasticord/orm/create.rb +32 -0
  169. data/lib/elasticord/orm/delete.rb +23 -0
  170. data/lib/elasticord/orm/get.rb +34 -0
  171. data/lib/elasticord/orm/index.rb +15 -0
  172. data/lib/elasticord/version.rb +3 -0
  173. data/lib/tasks/create_dummy_data.rake +11 -0
  174. data/spec/dash_overlord/use_cases/v1/admins/log_in_spec.rb +105 -0
  175. data/spec/dash_overlord/use_cases/v1/admins/show_current_admin_spec.rb +51 -0
  176. data/spec/dash_overlord/use_cases/v1/chart_configs/create_spec.rb +77 -0
  177. data/spec/dash_overlord/use_cases/v1/chart_configs/delete_spec.rb +70 -0
  178. data/spec/dash_overlord/use_cases/v1/chart_configs/index_spec.rb +126 -0
  179. data/spec/dash_overlord/use_cases/v1/chart_configs/show_spec.rb +73 -0
  180. data/spec/dash_overlord/use_cases/v1/chart_configs/update_spec.rb +104 -0
  181. data/spec/dash_overlord/use_cases/v1/clients/create_spec.rb +85 -0
  182. data/spec/dash_overlord/use_cases/v1/clients/delete_spec.rb +70 -0
  183. data/spec/dash_overlord/use_cases/v1/clients/index_spec.rb +121 -0
  184. data/spec/dash_overlord/use_cases/v1/clients/show_spec.rb +70 -0
  185. data/spec/dash_overlord/use_cases/v1/clients/update_spec.rb +112 -0
  186. data/spec/dash_overlord/use_cases/v1/users/create_spec.rb +89 -0
  187. data/spec/dash_overlord/use_cases/v1/users/delete_spec.rb +70 -0
  188. data/spec/dash_overlord/use_cases/v1/users/index_spec.rb +121 -0
  189. data/spec/dash_overlord/use_cases/v1/users/log_in_spec.rb +105 -0
  190. data/spec/dash_overlord/use_cases/v1/users/show_current_admin_spec.rb +51 -0
  191. data/spec/dash_overlord/use_cases/v1/users/show_spec.rb +69 -0
  192. data/spec/dash_overlord/use_cases/v1/users/update_spec.rb +119 -0
  193. data/spec/dash_overlord/use_cases/v1/videos/index/base_spec.rb +39 -0
  194. data/spec/dash_overlord/use_cases/v1/videos/index/dynamo_db_spec.rb +84 -0
  195. data/spec/dash_overlord/use_cases/v1/videos/index/elastic_search_spec.rb +121 -0
  196. data/spec/dash_overlord/use_cases/v1/videos/index/postgres_spec.rb +116 -0
  197. data/spec/elasticord/base_spec.rb +242 -0
  198. data/spec/factories/v1/admins.rb +8 -0
  199. data/spec/factories/v1/bee_videos.rb +18 -0
  200. data/spec/factories/v1/chart_configs.rb +23 -0
  201. data/spec/factories/v1/clients.rb +13 -0
  202. data/spec/factories/v1/users.rb +15 -0
  203. data/spec/spec_helper.rb +49 -0
  204. data/spec/support/helpers.rb +65 -0
  205. data/spec/support/shared_missing_admin.rb +39 -0
  206. data/spec/support/shared_missing_user.rb +39 -0
  207. data/tasks/console.rake +10 -0
  208. metadata +325 -0
@@ -0,0 +1,31 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+
7
+ class Base < V1::Base
8
+ DEFAULT_SEARCH_ADAPTER_USE_CASE = Postgres::Base
9
+
10
+ def perform
11
+ invoke! Users::FindCurrentUser
12
+ invoke! search_adapter_use_case
13
+ end
14
+
15
+ def final
16
+ context.data = Serializers::V1::Videos::Index.to_hash \
17
+ context, status.ok? ? nil : false
18
+ end
19
+
20
+ protected
21
+
22
+ def search_adapter_use_case
23
+ context.search_adapter_use_case || DEFAULT_SEARCH_ADAPTER_USE_CASE
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+ module DynamoDb
7
+
8
+ class Base < V1::Base
9
+ def perform
10
+ invoke! SearchAndPaginateVideos
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+ module DynamoDb
7
+
8
+ class SearchAndPaginateVideos < Shared::SearchAndPaginate::Base
9
+ def perform
10
+ end
11
+
12
+ protected
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+ module ElasticSearch
7
+
8
+ class Base < V1::Base
9
+ def perform
10
+ invoke! SearchAndPaginateVideos
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,97 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+ module ElasticSearch
7
+
8
+ class SearchAndPaginateVideos < V1::Base
9
+ PAGE_DEFAULT = 1
10
+ PER_PAGE_DEFAULT = 10
11
+
12
+ context_reader :page, :per_page, :filter_query, :full_text_term
13
+
14
+ def perform
15
+ context.page = fix_page(page)
16
+ context.per_page = fix_per_page(per_page)
17
+
18
+ context.videos = search_results[:data]
19
+
20
+ context.meta = Entities::V1::MetaData.new \
21
+ page: page,
22
+ per_page: per_page,
23
+ total_pages: total_pages,
24
+ total_results: total_results
25
+ end
26
+
27
+ protected
28
+
29
+ def fix_page(page)
30
+ page_or_nil = page.class == String ? page.presence : page
31
+
32
+ (page_or_nil || PAGE_DEFAULT).to_i
33
+ end
34
+
35
+ def fix_per_page(per_page)
36
+ per_page_or_nil = \
37
+ per_page.class == String ? per_page.presence : per_page
38
+
39
+ (per_page_or_nil || PER_PAGE_DEFAULT).to_i
40
+ end
41
+
42
+ def search_results
43
+ @search_results ||= Models::V1::Answer.search(search_params)
44
+ end
45
+
46
+ def total_results
47
+ search_results[:total_results]
48
+ end
49
+
50
+ def total_pages
51
+ (total_results / per_page.to_f).ceil
52
+ end
53
+
54
+ private
55
+
56
+ def search_params
57
+ search_params = {
58
+ size: per_page,
59
+ from: (page - 1) * per_page,
60
+ query: { bool: {} }
61
+ }
62
+
63
+ build_query_params(search_params)
64
+
65
+ build_filter_params(search_params)
66
+
67
+ search_params
68
+ end
69
+
70
+ def build_query_params(search_params)
71
+ return unless full_text_term
72
+
73
+ params = (search_params[:query][:bool][:must] ||= [])
74
+
75
+ # params[:must] << { match: { title: full_text_term } }
76
+ end
77
+
78
+ def build_filter_params(search_params)
79
+ return unless filter_query
80
+
81
+ params = (search_params[:query][:bool][:filter] ||= [])
82
+
83
+ filter_query.each do |key, value|
84
+ key = key.to_s.split('_eq').first.to_sym
85
+ value = value.downcase if value.is_a? String
86
+
87
+ params.push({ term: { key => value } })
88
+ end
89
+ end
90
+ end
91
+
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,22 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+ module Postgres
7
+
8
+ class Base < V1::Base
9
+ def perform
10
+ invoke! SearchOnSubtitleLines
11
+ invoke! SearchAndPaginateVideos
12
+ invoke! BuildVideoSearchedLines
13
+ invoke! GetFilters
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,42 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+ module Postgres
7
+
8
+ class BuildVideoSearchedLines < V1::Base
9
+ context_reader :videos,
10
+ :subtitle_lines
11
+
12
+ def perform
13
+ context.videos = videos.map do |video|
14
+ video.meta = {
15
+ searched_lines: searched_lines_for(video.id)
16
+ }
17
+
18
+ video
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def searched_lines_for(video_id)
25
+ return [] if subtitle_lines.nil?
26
+
27
+ subtitle_lines
28
+ .select{|line| line.bee_video_id == video_id}
29
+ .map{|line| serialize_searched_line(line)}
30
+ end
31
+
32
+ def serialize_searched_line(line)
33
+ Serializers::V1::SubtitleLines::Show.to_hash(line)
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,91 @@
1
+ module DashOverlord
2
+ module UseCases
3
+ module V1
4
+ module Videos
5
+ module Index
6
+ module Postgres
7
+
8
+ class GetFilters < V1::Base
9
+ def perform
10
+ filters = {
11
+ 'hhc' => hhc,
12
+ 'laundry' => laundry,
13
+ 'world_cuisine' => world_cuisine
14
+ }
15
+
16
+ context.meta.assign_attributes filters[context.segment_uid] || {}
17
+ end
18
+
19
+ def hhc
20
+ {}
21
+ # JSON.parse(File.read('./dash_overlord/lib/dash_overlord/use_cases/v1/video_filters/index/hhc.json'))
22
+ end
23
+
24
+ def laundry
25
+ {
26
+ filters: [
27
+ {
28
+ name: 'country',
29
+ title: 'Country',
30
+ options: [
31
+ { value: 'South Africa', label: 'South Africa' },
32
+ { value: 'Nigeria', label: 'Nigeria' },
33
+ { value: 'Kenya', label: 'Kenya' }
34
+ ]
35
+ },
36
+ {
37
+ name: 'category',
38
+ title: 'Category',
39
+ options:[
40
+ { value: 'Brands', label: 'Brands' },
41
+ { value: 'Laundry', label: 'Laundry' },
42
+ { value: 'Doing Laundry', label: 'Doing Laundry' }
43
+ ]
44
+ }
45
+ ]
46
+ }
47
+ end
48
+
49
+ def world_cuisine
50
+ {
51
+ filters: [
52
+ {
53
+ name: 'country',
54
+ title: 'Country',
55
+ options: [
56
+ { value: 'South Africa', label: 'South Africa' },
57
+ { value: 'India', label: 'India' },
58
+ { value: 'Brazil', label: 'Brazil' }
59
+ ]
60
+ },
61
+ {
62
+ name: 'category',
63
+ title: 'Category',
64
+ options:[
65
+ { value: 'Serving', label: 'Serving' },
66
+ { value: 'Cooking', label: 'Cooking' },
67
+ { value: 'Pre-cooking', label: 'Pre-cooking' }
68
+ ]
69
+ },
70
+ {
71
+ name: 'cuisine',
72
+ title: 'Cuisine',
73
+ options:[
74
+ { value: 'Chinese', label: 'Chinese' },
75
+ { value: 'Italian', label: 'Italian' },
76
+ { value: 'Thai', label: 'Thai' },
77
+ { value: 'Indian', label: 'Indian' }
78
+ ]
79
+ }
80
+ ]
81
+ }
82
+ end
83
+
84
+ end
85
+
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,206 @@
1
+ {
2
+ "filters": [
3
+ {
4
+ "name": "country",
5
+ "title": "Country",
6
+ "options": [
7
+ {
8
+ "value": "Chile",
9
+ "label": "Chile"
10
+ },
11
+ {
12
+ "value": "Germany",
13
+ "label": "Germany"
14
+ },
15
+ {
16
+ "value": "Nigeria",
17
+ "label": "Nigeria"
18
+ },
19
+ {
20
+ "value": "Pakistan",
21
+ "label": "Pakistan"
22
+ },
23
+ {
24
+ "value": "Philippines",
25
+ "label": "Philippines"
26
+ },
27
+ {
28
+ "value": "Thailand",
29
+ "label": "Thailand"
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "name": "room",
35
+ "title": "Room",
36
+ "options": [
37
+ {
38
+ "value": "Bathroom",
39
+ "label": "Bathroom"
40
+ },
41
+ {
42
+ "value": "Kitchen",
43
+ "label": "Kitchen"
44
+ },
45
+ {
46
+ "value": "Living room",
47
+ "label": "Living room"
48
+ },
49
+ {
50
+ "value": "Washing dishes",
51
+ "label": "Washing dishes"
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "name": "category",
57
+ "title": "Category",
58
+ "options": [
59
+ {
60
+ "value": "Drying",
61
+ "label": "Drying"
62
+ },
63
+ {
64
+ "value": "Floor",
65
+ "label": "Floor"
66
+ },
67
+ {
68
+ "value": "Hob",
69
+ "label": "Hob"
70
+ },
71
+ {
72
+ "value": "Putting away",
73
+ "label": "Putting away"
74
+ },
75
+ {
76
+ "value": "Shower / bath",
77
+ "label": "Shower / bath"
78
+ },
79
+ {
80
+ "value": "Sink",
81
+ "label": "Sink"
82
+ },
83
+ {
84
+ "value": "Toilet",
85
+ "label": "Toilet"
86
+ },
87
+ {
88
+ "value": "Washing",
89
+ "label": "Washing"
90
+ },
91
+ {
92
+ "value": "Worktop",
93
+ "label": "Worktop"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "name": "gender",
99
+ "title": "Gender",
100
+ "options": [
101
+ {
102
+ "value": "Female",
103
+ "label": "Female"
104
+ }
105
+ ]
106
+ },
107
+ {
108
+ "name": "age_group",
109
+ "title": "Age",
110
+ "options": [
111
+ {
112
+ "value": "18-25",
113
+ "label": "18-25"
114
+ },
115
+ {
116
+ "value": "26-35",
117
+ "label": "26-35"
118
+ },
119
+ {
120
+ "value": "36-45",
121
+ "label": "36-45"
122
+ },
123
+ {
124
+ "value": "46+",
125
+ "label": "46+"
126
+ }
127
+ ]
128
+ },
129
+ {
130
+ "name": "household_members",
131
+ "title": "Household size",
132
+ "options": [
133
+ {
134
+ "value": "1",
135
+ "label": "1"
136
+ },
137
+ {
138
+ "value": "2",
139
+ "label": "2"
140
+ },
141
+ {
142
+ "value": "3",
143
+ "label": "3"
144
+ },
145
+ {
146
+ "value": "5",
147
+ "label": "5"
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "name": "children",
153
+ "title": "Children",
154
+ "options": [
155
+ {
156
+ "value": "true",
157
+ "label": "Yes"
158
+ },
159
+ {
160
+ "value": "false",
161
+ "label": "No"
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "name": "pets",
167
+ "title": "Pets",
168
+ "options": [
169
+ {
170
+ "value": "true",
171
+ "label": "Yes"
172
+ },
173
+ {
174
+ "value": "false",
175
+ "label": "No"
176
+ }
177
+ ]
178
+ },
179
+ {
180
+ "name": "lsm",
181
+ "title": "LSM",
182
+ "options": [
183
+ {
184
+ "value": "0-3",
185
+ "label": "0-3"
186
+ },
187
+ {
188
+ "value": "4-6",
189
+ "label": "4-6"
190
+ },
191
+ {
192
+ "value": "7-9",
193
+ "label": "7-9"
194
+ },
195
+ {
196
+ "value": "10-12",
197
+ "label": "10-12"
198
+ },
199
+ {
200
+ "value": "13+",
201
+ "label": "13+"
202
+ }
203
+ ]
204
+ }
205
+ ]
206
+ }