logstruct 0.1.2 → 0.1.4

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -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/rack_error_handler/middleware.rb +54 -16
  21. data/lib/log_struct/integrations/rack_error_handler.rb +3 -3
  22. data/lib/log_struct/integrations/shrine.rb +21 -24
  23. data/lib/log_struct/integrations/sidekiq/logger.rb +8 -1
  24. data/lib/log_struct/integrations.rb +25 -5
  25. data/lib/log_struct/log/action_mailer/delivered.rb +14 -49
  26. data/lib/log_struct/log/action_mailer/delivery.rb +14 -49
  27. data/lib/log_struct/log/action_mailer/error.rb +72 -0
  28. data/lib/log_struct/log/action_mailer.rb +15 -2
  29. data/lib/log_struct/log/active_job/enqueue.rb +9 -73
  30. data/lib/log_struct/log/active_job/finish.rb +9 -76
  31. data/lib/log_struct/log/active_job/schedule.rb +9 -73
  32. data/lib/log_struct/log/active_job/start.rb +9 -76
  33. data/lib/log_struct/log/active_job.rb +2 -2
  34. data/lib/log_struct/log/active_model_serializers.rb +5 -45
  35. data/lib/log_struct/log/active_storage/delete.rb +8 -46
  36. data/lib/log_struct/log/active_storage/download.rb +9 -55
  37. data/lib/log_struct/log/active_storage/exist.rb +9 -49
  38. data/lib/log_struct/log/active_storage/metadata.rb +9 -49
  39. data/lib/log_struct/log/active_storage/stream.rb +9 -49
  40. data/lib/log_struct/log/active_storage/upload.rb +9 -64
  41. data/lib/log_struct/log/active_storage/url.rb +9 -49
  42. data/lib/log_struct/log/active_storage.rb +2 -2
  43. data/lib/log_struct/log/ahoy.rb +5 -43
  44. data/lib/log_struct/log/carrierwave/delete.rb +15 -69
  45. data/lib/log_struct/log/carrierwave/download.rb +15 -77
  46. data/lib/log_struct/log/carrierwave/upload.rb +15 -83
  47. data/lib/log_struct/log/carrierwave.rb +13 -4
  48. data/lib/log_struct/log/dotenv/load.rb +5 -33
  49. data/lib/log_struct/log/dotenv/restore.rb +5 -33
  50. data/lib/log_struct/log/dotenv/save.rb +5 -33
  51. data/lib/log_struct/log/dotenv/update.rb +5 -33
  52. data/lib/log_struct/log/error.rb +7 -40
  53. data/lib/log_struct/log/good_job/enqueue.rb +9 -72
  54. data/lib/log_struct/log/good_job/error.rb +9 -89
  55. data/lib/log_struct/log/good_job/finish.rb +9 -78
  56. data/lib/log_struct/log/good_job/log.rb +11 -75
  57. data/lib/log_struct/log/good_job/schedule.rb +7 -78
  58. data/lib/log_struct/log/good_job/start.rb +7 -78
  59. data/lib/log_struct/log/good_job.rb +2 -2
  60. data/lib/log_struct/log/plain.rb +5 -32
  61. data/lib/log_struct/log/puma/shutdown.rb +5 -32
  62. data/lib/log_struct/log/puma/start.rb +5 -56
  63. data/lib/log_struct/log/request.rb +7 -90
  64. data/lib/log_struct/log/security/blocked_host.rb +12 -73
  65. data/lib/log_struct/log/security/csrf_violation.rb +6 -67
  66. data/lib/log_struct/log/security/ip_spoof.rb +6 -73
  67. data/lib/log_struct/log/shrine/delete.rb +6 -41
  68. data/lib/log_struct/log/shrine/download.rb +6 -44
  69. data/lib/log_struct/log/shrine/exist.rb +6 -44
  70. data/lib/log_struct/log/shrine/metadata.rb +8 -46
  71. data/lib/log_struct/log/shrine/upload.rb +6 -53
  72. data/lib/log_struct/log/sidekiq.rb +5 -42
  73. data/lib/log_struct/log/sql.rb +5 -65
  74. data/lib/log_struct/log.rb +2 -2
  75. data/lib/log_struct/monkey_patches/active_support/tagged_logging/formatter.rb +12 -1
  76. data/lib/log_struct/railtie.rb +11 -24
  77. data/lib/log_struct/semantic_logger/concerns/log_methods.rb +100 -0
  78. data/lib/log_struct/semantic_logger/logger.rb +46 -15
  79. data/lib/log_struct/semantic_logger/setup.rb +11 -7
  80. data/lib/log_struct/shared/{shared/add_request_fields.rb → add_request_fields.rb} +2 -2
  81. data/lib/log_struct/shared/{shared/merge_additional_data_fields.rb → merge_additional_data_fields.rb} +1 -1
  82. data/lib/log_struct/shared/{shared/serialize_common.rb → serialize_common.rb} +9 -3
  83. data/lib/log_struct/{log/shared → shared}/serialize_common_public.rb +2 -2
  84. data/lib/log_struct/version.rb +1 -1
  85. data/lib/log_struct.rb +4 -1
  86. data/logstruct.gemspec +1 -1
  87. metadata +9 -11
  88. data/lib/log_struct/integrations/action_mailer/callbacks.rb +0 -100
  89. data/lib/log_struct/log/shared/add_request_fields.rb +0 -4
  90. data/lib/log_struct/log/shared/merge_additional_data_fields.rb +0 -4
  91. 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 ActiveJob
23
23
  class Start < 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
@@ -36,7 +31,7 @@ module LogStruct
36
31
 
37
32
  const :job_id, String
38
33
  const :job_class, String
39
- const :queue_name, T.nilable(String), default: nil
34
+ const :queue_name, T.nilable(Symbol), default: nil
40
35
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
36
  const :executions, T.nilable(Integer), default: nil
42
37
  const :provider_job_id, T.nilable(String), default: nil
@@ -45,85 +40,23 @@ module LogStruct
45
40
  const :started_at, Time
46
41
  const :attempt, T.nilable(Integer), 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(job_id: T.untyped,
58
- job_class: T.untyped,
59
- queue_name: T.untyped,
60
- arguments: T.untyped,
61
- executions: T.untyped,
62
- provider_job_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
63
- }
64
- def self.base_hash(job_id: nil,
65
- job_class: nil,
66
- queue_name: nil,
67
- arguments: nil,
68
- executions: nil,
69
- provider_job_id: nil)
70
- h = {}
71
- h[LogField::JobId] = job_id unless job_id.nil?
72
- h[LogField::JobClass] = job_class unless job_class.nil?
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::JobId] = job_id
51
+ h[LogField::JobClass] = job_class
73
52
  h[LogField::QueueName] = queue_name unless queue_name.nil?
74
53
  h[LogField::Arguments] = arguments unless arguments.nil?
75
54
  h[LogField::Executions] = executions unless executions.nil?
76
55
  h[LogField::ProviderJobId] = provider_job_id unless provider_job_id.nil?
77
- h
78
- end
79
-
80
- sig {
81
- params(started_at: T.untyped,
82
- job_id: T.untyped,
83
- job_class: T.untyped,
84
- queue_name: T.untyped,
85
- arguments: T.untyped,
86
- executions: T.untyped,
87
- provider_job_id: T.untyped,
88
- attempt: T.untyped,
89
- additional_data: T.untyped,
90
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
91
- }
92
- def self.build(started_at:,
93
- job_id:,
94
- job_class:,
95
- queue_name: nil,
96
- arguments: nil,
97
- executions: nil,
98
- provider_job_id: nil,
99
- attempt: nil,
100
- additional_data: nil,
101
- timestamp: Time.now)
102
- h = base_hash(job_id: job_id,
103
- job_class: job_class,
104
- queue_name: queue_name,
105
- arguments: arguments,
106
- executions: executions,
107
- provider_job_id: provider_job_id)
108
56
  h[LogField::StartedAt] = started_at
109
57
  h[LogField::Attempt] = attempt unless attempt.nil?
110
58
  h
111
59
  end
112
-
113
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
114
- def to_h
115
- self.class.build(
116
- job_id: job_id,
117
- job_class: job_class,
118
- queue_name: queue_name,
119
- arguments: arguments,
120
- executions: executions,
121
- provider_job_id: provider_job_id,
122
- started_at: started_at,
123
- attempt: attempt,
124
- timestamp: timestamp
125
- )
126
- end
127
60
  end
128
61
  end
129
62
  end
@@ -18,7 +18,7 @@ module LogStruct
18
18
  extend T::Sig
19
19
  const :job_id, String
20
20
  const :job_class, String
21
- const :queue_name, T.nilable(String), default: nil
21
+ const :queue_name, T.nilable(Symbol), default: nil
22
22
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
23
23
  const :executions, T.nilable(Integer), default: nil
24
24
  const :provider_job_id, T.nilable(String), default: nil
@@ -27,7 +27,7 @@ module LogStruct
27
27
  {
28
28
  job_id: String,
29
29
  job_class: String,
30
- queue_name: T.nilable(String),
30
+ queue_name: T.nilable(Symbol),
31
31
  arguments: T.nilable(T::Array[T.untyped]),
32
32
  executions: T.nilable(Integer),
33
33
  provider_job_id: T.nilable(String)
@@ -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 ActiveModelSerializers < 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
@@ -40,36 +35,13 @@ module LogStruct
40
35
  const :resource_class, T.nilable(String), default: nil
41
36
  const :duration_ms, Float
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
42
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
52
- def self.base_hash
53
- {}
54
- end
55
-
56
- sig {
57
- params(message: T.untyped,
58
- duration_ms: T.untyped,
59
- serializer: T.untyped,
60
- adapter: T.untyped,
61
- resource_class: T.untyped,
62
- additional_data: T.untyped,
63
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
64
- }
65
- def self.build(message:,
66
- duration_ms:,
67
- serializer: nil,
68
- adapter: nil,
69
- resource_class: nil,
70
- additional_data: nil,
71
- timestamp: Time.now)
72
- h = base_hash
43
+ def to_h
44
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
73
45
  h[LogField::Message] = message
74
46
  h[LogField::Serializer] = serializer unless serializer.nil?
75
47
  h[LogField::Adapter] = adapter unless adapter.nil?
@@ -77,18 +49,6 @@ module LogStruct
77
49
  h[LogField::DurationMs] = duration_ms
78
50
  h
79
51
  end
80
-
81
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
82
- def to_h
83
- self.class.build(
84
- message: message,
85
- serializer: serializer,
86
- adapter: adapter,
87
- resource_class: resource_class,
88
- duration_ms: duration_ms,
89
- timestamp: timestamp
90
- )
91
- end
92
52
  end
93
53
  end
94
54
  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 Delete < 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,52 +29,19 @@ 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
- # Event-specific fields
41
-
42
- # Additional data
43
-
44
- # Request fields (optional)
45
-
46
35
  # Serialize shared fields
47
36
  include LogStruct::Log::Interfaces::CommonFields
48
37
  include LogStruct::Log::Shared::SerializeCommon
49
38
 
50
- sig {
51
- params(storage: T.untyped,
52
- file_id: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
53
- }
54
- def self.base_hash(storage: nil,
55
- file_id: nil)
56
- h = {}
57
- h[LogField::Storage] = storage unless storage.nil?
58
- h[LogField::FileId] = file_id unless file_id.nil?
59
- h
60
- end
61
-
62
- sig {
63
- params(storage: T.untyped,
64
- file_id: T.untyped,
65
- additional_data: T.untyped,
66
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
67
- }
68
- def self.build(storage:,
69
- file_id:,
70
- additional_data: nil,
71
- timestamp: Time.now)
72
- base_hash(storage: storage,
73
- file_id: file_id)
74
- end
75
-
76
39
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
77
40
  def to_h
78
- self.class.build(
79
- storage: storage,
80
- file_id: file_id,
81
- timestamp: timestamp
82
- )
41
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
42
+ h[LogField::Storage] = storage
43
+ h[LogField::FileId] = file_id
44
+ h
83
45
  end
84
46
  end
85
47
  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 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