logstruct 0.1.2 → 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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/README.md +4 -6
  4. data/lib/log_struct/concerns/configuration.rb +2 -2
  5. data/lib/log_struct/config_struct/integrations.rb +5 -0
  6. data/lib/log_struct/enums/log_field.rb +12 -1
  7. data/lib/log_struct/integrations/action_mailer/error_handling.rb +121 -27
  8. data/lib/log_struct/integrations/action_mailer/event_logging.rb +30 -14
  9. data/lib/log_struct/integrations/action_mailer/metadata_collection.rb +18 -24
  10. data/lib/log_struct/integrations/action_mailer.rb +13 -6
  11. data/lib/log_struct/integrations/active_job/log_subscriber.rb +2 -2
  12. data/lib/log_struct/integrations/active_storage.rb +8 -8
  13. data/lib/log_struct/integrations/ahoy.rb +2 -3
  14. data/lib/log_struct/integrations/carrierwave.rb +8 -10
  15. data/lib/log_struct/integrations/good_job/log_subscriber.rb +5 -5
  16. data/lib/log_struct/integrations/good_job/logger.rb +2 -6
  17. data/lib/log_struct/integrations/good_job.rb +1 -1
  18. data/lib/log_struct/integrations/host_authorization.rb +27 -36
  19. data/lib/log_struct/integrations/lograge.rb +1 -1
  20. data/lib/log_struct/integrations/shrine.rb +21 -24
  21. data/lib/log_struct/integrations/sidekiq/logger.rb +8 -1
  22. data/lib/log_struct/log/action_mailer/delivered.rb +14 -49
  23. data/lib/log_struct/log/action_mailer/delivery.rb +14 -49
  24. data/lib/log_struct/log/action_mailer/error.rb +72 -0
  25. data/lib/log_struct/log/action_mailer.rb +15 -2
  26. data/lib/log_struct/log/active_job/enqueue.rb +9 -73
  27. data/lib/log_struct/log/active_job/finish.rb +9 -76
  28. data/lib/log_struct/log/active_job/schedule.rb +9 -73
  29. data/lib/log_struct/log/active_job/start.rb +9 -76
  30. data/lib/log_struct/log/active_job.rb +2 -2
  31. data/lib/log_struct/log/active_model_serializers.rb +5 -45
  32. data/lib/log_struct/log/active_storage/delete.rb +8 -46
  33. data/lib/log_struct/log/active_storage/download.rb +9 -55
  34. data/lib/log_struct/log/active_storage/exist.rb +9 -49
  35. data/lib/log_struct/log/active_storage/metadata.rb +9 -49
  36. data/lib/log_struct/log/active_storage/stream.rb +9 -49
  37. data/lib/log_struct/log/active_storage/upload.rb +9 -64
  38. data/lib/log_struct/log/active_storage/url.rb +9 -49
  39. data/lib/log_struct/log/active_storage.rb +2 -2
  40. data/lib/log_struct/log/ahoy.rb +5 -43
  41. data/lib/log_struct/log/carrierwave/delete.rb +15 -69
  42. data/lib/log_struct/log/carrierwave/download.rb +15 -77
  43. data/lib/log_struct/log/carrierwave/upload.rb +15 -83
  44. data/lib/log_struct/log/carrierwave.rb +13 -4
  45. data/lib/log_struct/log/dotenv/load.rb +5 -33
  46. data/lib/log_struct/log/dotenv/restore.rb +5 -33
  47. data/lib/log_struct/log/dotenv/save.rb +5 -33
  48. data/lib/log_struct/log/dotenv/update.rb +5 -33
  49. data/lib/log_struct/log/error.rb +7 -40
  50. data/lib/log_struct/log/good_job/enqueue.rb +9 -72
  51. data/lib/log_struct/log/good_job/error.rb +9 -89
  52. data/lib/log_struct/log/good_job/finish.rb +9 -78
  53. data/lib/log_struct/log/good_job/log.rb +11 -75
  54. data/lib/log_struct/log/good_job/schedule.rb +7 -78
  55. data/lib/log_struct/log/good_job/start.rb +7 -78
  56. data/lib/log_struct/log/good_job.rb +2 -2
  57. data/lib/log_struct/log/plain.rb +5 -32
  58. data/lib/log_struct/log/puma/shutdown.rb +5 -32
  59. data/lib/log_struct/log/puma/start.rb +5 -56
  60. data/lib/log_struct/log/request.rb +7 -90
  61. data/lib/log_struct/log/security/blocked_host.rb +12 -73
  62. data/lib/log_struct/log/security/csrf_violation.rb +6 -67
  63. data/lib/log_struct/log/security/ip_spoof.rb +6 -73
  64. data/lib/log_struct/log/shrine/delete.rb +6 -41
  65. data/lib/log_struct/log/shrine/download.rb +6 -44
  66. data/lib/log_struct/log/shrine/exist.rb +6 -44
  67. data/lib/log_struct/log/shrine/metadata.rb +8 -46
  68. data/lib/log_struct/log/shrine/upload.rb +6 -53
  69. data/lib/log_struct/log/sidekiq.rb +5 -42
  70. data/lib/log_struct/log/sql.rb +5 -65
  71. data/lib/log_struct/log.rb +2 -2
  72. data/lib/log_struct/monkey_patches/active_support/tagged_logging/formatter.rb +12 -1
  73. data/lib/log_struct/railtie.rb +0 -22
  74. data/lib/log_struct/semantic_logger/concerns/log_methods.rb +100 -0
  75. data/lib/log_struct/semantic_logger/logger.rb +46 -15
  76. data/lib/log_struct/semantic_logger/setup.rb +11 -7
  77. data/lib/log_struct/shared/{shared/add_request_fields.rb → add_request_fields.rb} +2 -2
  78. data/lib/log_struct/shared/{shared/merge_additional_data_fields.rb → merge_additional_data_fields.rb} +1 -1
  79. data/lib/log_struct/shared/{shared/serialize_common.rb → serialize_common.rb} +9 -3
  80. data/lib/log_struct/{log/shared → shared}/serialize_common_public.rb +2 -2
  81. data/lib/log_struct/version.rb +1 -1
  82. data/lib/log_struct.rb +4 -1
  83. data/logstruct.gemspec +1 -1
  84. metadata +9 -11
  85. data/lib/log_struct/integrations/action_mailer/callbacks.rb +0 -100
  86. data/lib/log_struct/log/shared/add_request_fields.rb +0 -4
  87. data/lib/log_struct/log/shared/merge_additional_data_fields.rb +0 -4
  88. data/lib/log_struct/log/shared/serialize_common.rb +0 -4
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class ActiveStorage
23
23
  class Download < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -34,7 +29,7 @@ module LogStruct
34
29
  const :timestamp, Time, factory: -> { Time.now }
35
30
  const :level, Level, default: Level::Info
36
31
 
37
- const :storage, String
32
+ const :storage, Symbol
38
33
  const :file_id, String
39
34
 
40
35
  # Event-specific fields
@@ -42,61 +37,20 @@ module LogStruct
42
37
  const :range, T.nilable(String), default: nil
43
38
  const :duration_ms, T.nilable(Float), default: nil
44
39
 
45
- # Additional data
46
-
47
- # Request fields (optional)
48
-
49
40
  # Serialize shared fields
50
41
  include LogStruct::Log::Interfaces::CommonFields
51
42
  include LogStruct::Log::Shared::SerializeCommon
52
43
 
53
- sig {
54
- params(storage: T.untyped,
55
- file_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
56
- }
57
- def self.base_hash(storage: nil,
58
- file_id: nil)
59
- h = {}
60
- h[LogField::Storage] = storage unless storage.nil?
61
- h[LogField::FileId] = file_id unless file_id.nil?
62
- h
63
- end
64
-
65
- sig {
66
- params(storage: T.untyped,
67
- file_id: T.untyped,
68
- filename: T.untyped,
69
- range: T.untyped,
70
- duration_ms: T.untyped,
71
- additional_data: T.untyped,
72
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
73
- }
74
- def self.build(storage:,
75
- file_id:,
76
- filename: nil,
77
- range: nil,
78
- duration_ms: nil,
79
- additional_data: nil,
80
- timestamp: Time.now)
81
- h = base_hash(storage: storage,
82
- file_id: file_id)
44
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
45
+ def to_h
46
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
47
+ h[LogField::Storage] = storage
48
+ h[LogField::FileId] = file_id
83
49
  h[LogField::Filename] = filename unless filename.nil?
84
50
  h[LogField::Range] = range unless range.nil?
85
51
  h[LogField::DurationMs] = duration_ms unless duration_ms.nil?
86
52
  h
87
53
  end
88
-
89
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
90
- def to_h
91
- self.class.build(
92
- storage: storage,
93
- file_id: file_id,
94
- filename: filename,
95
- range: range,
96
- duration_ms: duration_ms,
97
- timestamp: timestamp
98
- )
99
- end
100
54
  end
101
55
  end
102
56
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class ActiveStorage
23
23
  class Exist < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -34,58 +29,23 @@ module LogStruct
34
29
  const :timestamp, Time, factory: -> { Time.now }
35
30
  const :level, Level, default: Level::Info
36
31
 
37
- const :storage, String
32
+ const :storage, Symbol
38
33
  const :file_id, String
39
34
 
40
35
  # Event-specific fields
41
36
  const :exist, T.nilable(T::Boolean), default: nil
42
37
 
43
- # Additional data
44
-
45
- # Request fields (optional)
46
-
47
38
  # Serialize shared fields
48
39
  include LogStruct::Log::Interfaces::CommonFields
49
40
  include LogStruct::Log::Shared::SerializeCommon
50
41
 
51
- sig {
52
- params(storage: T.untyped,
53
- file_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
54
- }
55
- def self.base_hash(storage: nil,
56
- file_id: nil)
57
- h = {}
58
- h[LogField::Storage] = storage unless storage.nil?
59
- h[LogField::FileId] = file_id unless file_id.nil?
60
- h
61
- end
62
-
63
- sig {
64
- params(storage: T.untyped,
65
- file_id: T.untyped,
66
- exist: T.untyped,
67
- additional_data: T.untyped,
68
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
- }
70
- def self.build(storage:,
71
- file_id:,
72
- exist: nil,
73
- additional_data: nil,
74
- timestamp: Time.now)
75
- h = base_hash(storage: storage,
76
- file_id: file_id)
77
- h[LogField::Exist] = exist unless exist.nil?
78
- h
79
- end
80
-
81
42
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
82
43
  def to_h
83
- self.class.build(
84
- storage: storage,
85
- file_id: file_id,
86
- exist: exist,
87
- timestamp: timestamp
88
- )
44
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
+ h[LogField::Storage] = storage
46
+ h[LogField::FileId] = file_id
47
+ h[LogField::Exist] = exist unless exist.nil?
48
+ h
89
49
  end
90
50
  end
91
51
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class ActiveStorage
23
23
  class Metadata < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -34,58 +29,23 @@ module LogStruct
34
29
  const :timestamp, Time, factory: -> { Time.now }
35
30
  const :level, Level, default: Level::Info
36
31
 
37
- const :storage, String
32
+ const :storage, Symbol
38
33
  const :file_id, String
39
34
 
40
35
  # Event-specific fields
41
36
  const :metadata, T.nilable(T::Hash[String, T.untyped]), default: nil
42
37
 
43
- # Additional data
44
-
45
- # Request fields (optional)
46
-
47
38
  # Serialize shared fields
48
39
  include LogStruct::Log::Interfaces::CommonFields
49
40
  include LogStruct::Log::Shared::SerializeCommon
50
41
 
51
- sig {
52
- params(storage: T.untyped,
53
- file_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
54
- }
55
- def self.base_hash(storage: nil,
56
- file_id: nil)
57
- h = {}
58
- h[LogField::Storage] = storage unless storage.nil?
59
- h[LogField::FileId] = file_id unless file_id.nil?
60
- h
61
- end
62
-
63
- sig {
64
- params(storage: T.untyped,
65
- file_id: T.untyped,
66
- metadata: T.untyped,
67
- additional_data: T.untyped,
68
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
- }
70
- def self.build(storage:,
71
- file_id:,
72
- metadata: nil,
73
- additional_data: nil,
74
- timestamp: Time.now)
75
- h = base_hash(storage: storage,
76
- file_id: file_id)
77
- h[LogField::Metadata] = metadata unless metadata.nil?
78
- h
79
- end
80
-
81
42
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
82
43
  def to_h
83
- self.class.build(
84
- storage: storage,
85
- file_id: file_id,
86
- metadata: metadata,
87
- timestamp: timestamp
88
- )
44
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
+ h[LogField::Storage] = storage
46
+ h[LogField::FileId] = file_id
47
+ h[LogField::Metadata] = metadata unless metadata.nil?
48
+ h
89
49
  end
90
50
  end
91
51
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class ActiveStorage
23
23
  class Stream < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -34,58 +29,23 @@ module LogStruct
34
29
  const :timestamp, Time, factory: -> { Time.now }
35
30
  const :level, Level, default: Level::Info
36
31
 
37
- const :storage, String
32
+ const :storage, Symbol
38
33
  const :file_id, String
39
34
 
40
35
  # Event-specific fields
41
36
  const :prefix, T.nilable(String), default: nil
42
37
 
43
- # Additional data
44
-
45
- # Request fields (optional)
46
-
47
38
  # Serialize shared fields
48
39
  include LogStruct::Log::Interfaces::CommonFields
49
40
  include LogStruct::Log::Shared::SerializeCommon
50
41
 
51
- sig {
52
- params(storage: T.untyped,
53
- file_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
54
- }
55
- def self.base_hash(storage: nil,
56
- file_id: nil)
57
- h = {}
58
- h[LogField::Storage] = storage unless storage.nil?
59
- h[LogField::FileId] = file_id unless file_id.nil?
60
- h
61
- end
62
-
63
- sig {
64
- params(storage: T.untyped,
65
- file_id: T.untyped,
66
- prefix: T.untyped,
67
- additional_data: T.untyped,
68
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
- }
70
- def self.build(storage:,
71
- file_id:,
72
- prefix: nil,
73
- additional_data: nil,
74
- timestamp: Time.now)
75
- h = base_hash(storage: storage,
76
- file_id: file_id)
77
- h[LogField::Prefix] = prefix unless prefix.nil?
78
- h
79
- end
80
-
81
42
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
82
43
  def to_h
83
- self.class.build(
84
- storage: storage,
85
- file_id: file_id,
86
- prefix: prefix,
87
- timestamp: timestamp
88
- )
44
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
+ h[LogField::Storage] = storage
46
+ h[LogField::FileId] = file_id
47
+ h[LogField::Prefix] = prefix unless prefix.nil?
48
+ h
89
49
  end
90
50
  end
91
51
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class ActiveStorage
23
23
  class Upload < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -34,7 +29,7 @@ module LogStruct
34
29
  const :timestamp, Time, factory: -> { Time.now }
35
30
  const :level, Level, default: Level::Info
36
31
 
37
- const :storage, String
32
+ const :storage, Symbol
38
33
  const :file_id, String
39
34
 
40
35
  # Event-specific fields
@@ -45,50 +40,15 @@ module LogStruct
45
40
  const :duration_ms, T.nilable(Float), default: nil
46
41
  const :checksum, T.nilable(String), default: nil
47
42
 
48
- # Additional data
49
-
50
- # Request fields (optional)
51
-
52
43
  # Serialize shared fields
53
44
  include LogStruct::Log::Interfaces::CommonFields
54
45
  include LogStruct::Log::Shared::SerializeCommon
55
46
 
56
- sig {
57
- params(storage: T.untyped,
58
- file_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
59
- }
60
- def self.base_hash(storage: nil,
61
- file_id: nil)
62
- h = {}
63
- h[LogField::Storage] = storage unless storage.nil?
64
- h[LogField::FileId] = file_id unless file_id.nil?
65
- h
66
- end
67
-
68
- sig {
69
- params(storage: T.untyped,
70
- file_id: T.untyped,
71
- filename: T.untyped,
72
- mime_type: T.untyped,
73
- size: T.untyped,
74
- metadata: T.untyped,
75
- duration_ms: T.untyped,
76
- checksum: T.untyped,
77
- additional_data: T.untyped,
78
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
79
- }
80
- def self.build(storage:,
81
- file_id:,
82
- filename: nil,
83
- mime_type: nil,
84
- size: nil,
85
- metadata: nil,
86
- duration_ms: nil,
87
- checksum: nil,
88
- additional_data: nil,
89
- timestamp: Time.now)
90
- h = base_hash(storage: storage,
91
- file_id: file_id)
47
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
48
+ def to_h
49
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
50
+ h[LogField::Storage] = storage
51
+ h[LogField::FileId] = file_id
92
52
  h[LogField::Filename] = filename unless filename.nil?
93
53
  h[LogField::MimeType] = mime_type unless mime_type.nil?
94
54
  h[LogField::Size] = size unless size.nil?
@@ -97,21 +57,6 @@ module LogStruct
97
57
  h[LogField::Checksum] = checksum unless checksum.nil?
98
58
  h
99
59
  end
100
-
101
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
102
- def to_h
103
- self.class.build(
104
- storage: storage,
105
- file_id: file_id,
106
- filename: filename,
107
- mime_type: mime_type,
108
- size: size,
109
- metadata: metadata,
110
- duration_ms: duration_ms,
111
- checksum: checksum,
112
- timestamp: timestamp
113
- )
114
- end
115
60
  end
116
61
  end
117
62
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class ActiveStorage
23
23
  class Url < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -34,58 +29,23 @@ module LogStruct
34
29
  const :timestamp, Time, factory: -> { Time.now }
35
30
  const :level, Level, default: Level::Info
36
31
 
37
- const :storage, String
32
+ const :storage, Symbol
38
33
  const :file_id, String
39
34
 
40
35
  # Event-specific fields
41
36
  const :url, String
42
37
 
43
- # Additional data
44
-
45
- # Request fields (optional)
46
-
47
38
  # Serialize shared fields
48
39
  include LogStruct::Log::Interfaces::CommonFields
49
40
  include LogStruct::Log::Shared::SerializeCommon
50
41
 
51
- sig {
52
- params(storage: T.untyped,
53
- file_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
54
- }
55
- def self.base_hash(storage: nil,
56
- file_id: nil)
57
- h = {}
58
- h[LogField::Storage] = storage unless storage.nil?
59
- h[LogField::FileId] = file_id unless file_id.nil?
60
- h
61
- end
62
-
63
- sig {
64
- params(url: T.untyped,
65
- storage: T.untyped,
66
- file_id: T.untyped,
67
- additional_data: T.untyped,
68
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
- }
70
- def self.build(url:,
71
- storage:,
72
- file_id:,
73
- additional_data: nil,
74
- timestamp: Time.now)
75
- h = base_hash(storage: storage,
76
- file_id: file_id)
77
- h[LogField::Url] = url
78
- h
79
- end
80
-
81
42
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
82
43
  def to_h
83
- self.class.build(
84
- storage: storage,
85
- file_id: file_id,
86
- url: url,
87
- timestamp: timestamp
88
- )
44
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
+ h[LogField::Storage] = storage
46
+ h[LogField::FileId] = file_id
47
+ h[LogField::Url] = url
48
+ h
89
49
  end
90
50
  end
91
51
  end
@@ -19,12 +19,12 @@ module LogStruct
19
19
  class ActiveStorage
20
20
  class BaseFields < T::Struct
21
21
  extend T::Sig
22
- const :storage, String
22
+ const :storage, Symbol
23
23
  const :file_id, String
24
24
 
25
25
  Kwargs = T.type_alias do
26
26
  {
27
- storage: String,
27
+ storage: Symbol,
28
28
  file_id: String
29
29
  }
30
30
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../enums/source"
16
16
  require_relative "../enums/event"
17
17
  require_relative "../enums/level"
@@ -20,11 +20,6 @@ require_relative "../enums/log_field"
20
20
  module LogStruct
21
21
  module Log
22
22
  class Ahoy < T::Struct
23
- # typed: strict
24
- # frozen_string_literal: true
25
-
26
- extend T::Sig
27
-
28
23
  extend T::Sig
29
24
 
30
25
  # Shared/common fields
@@ -38,51 +33,18 @@ module LogStruct
38
33
  const :ahoy_event, String
39
34
  const :properties, T.nilable(T::Hash[Symbol, T.untyped]), default: nil
40
35
 
41
- # Additional data
42
- include LogStruct::Log::Interfaces::AdditionalDataField
43
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
44
- include LogStruct::Log::Shared::MergeAdditionalDataFields
45
-
46
- # Request fields (optional)
47
-
48
36
  # Serialize shared fields
49
37
  include LogStruct::Log::Interfaces::CommonFields
50
38
  include LogStruct::Log::Shared::SerializeCommon
51
39
 
52
40
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
53
- def self.base_hash
54
- {}
55
- end
56
-
57
- sig {
58
- params(message: T.untyped,
59
- ahoy_event: T.untyped,
60
- properties: T.untyped,
61
- additional_data: T.untyped,
62
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
63
- }
64
- def self.build(message:,
65
- ahoy_event:,
66
- properties: nil,
67
- additional_data: nil,
68
- timestamp: Time.now)
69
- h = base_hash
41
+ def to_h
42
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
70
43
  h[LogField::Message] = message
71
44
  h[LogField::AhoyEvent] = ahoy_event
72
45
  h[LogField::Properties] = properties unless properties.nil?
73
46
  h
74
47
  end
75
-
76
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
77
- def to_h
78
- self.class.build(
79
- message: message,
80
- ahoy_event: ahoy_event,
81
- properties: properties,
82
- additional_data: additional_data,
83
- timestamp: timestamp
84
- )
85
- end
86
48
  end
87
49
  end
88
50
  end