elasticord 1.0.0

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 (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
+ }