bns 0.1.0 → 0.2.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/._.rspec_status +0 -0
  3. data/CHANGELOG.md +13 -0
  4. data/Gemfile +2 -0
  5. data/README.md +163 -4
  6. data/SECURITY.md +13 -0
  7. data/lib/bns/dispatcher/discord/exceptions/invalid_webhook_token.rb +2 -2
  8. data/lib/bns/dispatcher/discord/implementation.rb +1 -1
  9. data/lib/bns/dispatcher/slack/exceptions/invalid_webhook_token.rb +16 -0
  10. data/lib/bns/dispatcher/slack/implementation.rb +51 -0
  11. data/lib/bns/dispatcher/slack/types/response.rb +21 -0
  12. data/lib/bns/domain/birthday.rb +2 -0
  13. data/lib/bns/domain/pto.rb +2 -0
  14. data/lib/bns/domain/work_items_limit.rb +39 -0
  15. data/lib/bns/fetcher/base.rb +13 -0
  16. data/lib/bns/fetcher/notion/{pto.rb → base.rb} +11 -7
  17. data/lib/bns/fetcher/notion/types/response.rb +1 -1
  18. data/lib/bns/fetcher/notion/use_case/birthday_next_week.rb +41 -0
  19. data/lib/bns/fetcher/notion/use_case/birthday_today.rb +29 -0
  20. data/lib/bns/fetcher/notion/use_case/pto_next_week.rb +71 -0
  21. data/lib/bns/fetcher/notion/use_case/pto_today.rb +30 -0
  22. data/lib/bns/fetcher/notion/use_case/work_items_limit.rb +37 -0
  23. data/lib/bns/fetcher/postgres/base.rb +46 -0
  24. data/lib/bns/fetcher/postgres/helper.rb +16 -0
  25. data/lib/bns/fetcher/postgres/types/response.rb +42 -0
  26. data/lib/bns/fetcher/postgres/use_case/pto_today.rb +32 -0
  27. data/lib/bns/formatter/base.rb +27 -3
  28. data/lib/bns/formatter/birthday.rb +34 -0
  29. data/lib/bns/formatter/exceptions/invalid_data.rb +15 -0
  30. data/lib/bns/formatter/pto.rb +76 -0
  31. data/lib/bns/formatter/work_items_limit.rb +43 -0
  32. data/lib/bns/mapper/notion/{birthday.rb → birthday_today.rb} +13 -21
  33. data/lib/bns/mapper/notion/{pto.rb → pto_today.rb} +15 -41
  34. data/lib/bns/mapper/notion/work_items_limit.rb +65 -0
  35. data/lib/bns/mapper/postgres/pto_today.rb +47 -0
  36. data/lib/bns/use_cases/use_cases.rb +227 -49
  37. data/lib/bns/version.rb +1 -1
  38. data/renovate.json +6 -0
  39. metadata +27 -10
  40. data/Gemfile.lock +0 -91
  41. data/lib/bns/fetcher/notion/birthday.rb +0 -53
  42. data/lib/bns/formatter/discord/birthday.rb +0 -43
  43. data/lib/bns/formatter/discord/exceptions/invalid_data.rb +0 -17
  44. data/lib/bns/formatter/discord/pto.rb +0 -52
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../../domain/pto"
4
- require_relative "../base"
5
-
6
- module Formatter
7
- module Discord
8
- ##
9
- # This class is an implementation of the Formatter::Base interface, specifically designed for formatting PTO
10
- # data in a way suitable for Discord messages.
11
- class Pto
12
- include Base
13
-
14
- # Implements the logic for building a formatted payload with the given template for PTO's.
15
- #
16
- # <br>
17
- # <b>Params:</b>
18
- # * <tt>List<Domain::Pto></tt> pto_list: List of mapped PTO's.
19
- #
20
- # <br>
21
- # <b>raises</b> <tt>Formatter::Discord::Exceptions::InvalidData</tt> when invalid data is provided.
22
- #
23
- # <br>
24
- # <b>returns</b> <tt>String</tt> payload, formatted payload suitable for a Discord message.
25
- #
26
- def format(ptos_list)
27
- raise Formatter::Discord::Exceptions::InvalidData unless ptos_list.all? { |pto| pto.is_a?(Domain::Pto) }
28
-
29
- template = ":beach: NAME is on PTO"
30
- payload = ""
31
-
32
- ptos_list.each do |pto|
33
- payload += "#{template.gsub("NAME", pto.individual_name)} #{build_pto_message(pto)}\n"
34
- end
35
-
36
- payload
37
- end
38
-
39
- private
40
-
41
- def build_pto_message(pto)
42
- if pto.start_date.include?("|")
43
- start_time = pto.start_date.split("|")
44
- end_time = pto.end_date.split("|")
45
- "#{start_time[1]} - #{end_time[1]}"
46
- else
47
- "all day"
48
- end
49
- end
50
- end
51
- end
52
- end