logstruct 0.1.1 → 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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +12 -7
  4. data/lib/log_struct/concerns/configuration.rb +52 -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/puma.rb +1 -6
  21. data/lib/log_struct/integrations/shrine.rb +21 -24
  22. data/lib/log_struct/integrations/sidekiq/logger.rb +8 -1
  23. data/lib/log_struct/log/action_mailer/delivered.rb +14 -49
  24. data/lib/log_struct/log/action_mailer/delivery.rb +14 -49
  25. data/lib/log_struct/log/action_mailer/error.rb +72 -0
  26. data/lib/log_struct/log/action_mailer.rb +15 -2
  27. data/lib/log_struct/log/active_job/enqueue.rb +9 -73
  28. data/lib/log_struct/log/active_job/finish.rb +9 -76
  29. data/lib/log_struct/log/active_job/schedule.rb +9 -73
  30. data/lib/log_struct/log/active_job/start.rb +9 -76
  31. data/lib/log_struct/log/active_job.rb +2 -2
  32. data/lib/log_struct/log/active_model_serializers.rb +5 -45
  33. data/lib/log_struct/log/active_storage/delete.rb +8 -46
  34. data/lib/log_struct/log/active_storage/download.rb +9 -55
  35. data/lib/log_struct/log/active_storage/exist.rb +9 -49
  36. data/lib/log_struct/log/active_storage/metadata.rb +9 -49
  37. data/lib/log_struct/log/active_storage/stream.rb +9 -49
  38. data/lib/log_struct/log/active_storage/upload.rb +9 -64
  39. data/lib/log_struct/log/active_storage/url.rb +9 -49
  40. data/lib/log_struct/log/active_storage.rb +2 -2
  41. data/lib/log_struct/log/ahoy.rb +5 -43
  42. data/lib/log_struct/log/carrierwave/delete.rb +15 -69
  43. data/lib/log_struct/log/carrierwave/download.rb +15 -77
  44. data/lib/log_struct/log/carrierwave/upload.rb +15 -83
  45. data/lib/log_struct/log/carrierwave.rb +13 -4
  46. data/lib/log_struct/log/dotenv/load.rb +5 -33
  47. data/lib/log_struct/log/dotenv/restore.rb +5 -33
  48. data/lib/log_struct/log/dotenv/save.rb +5 -33
  49. data/lib/log_struct/log/dotenv/update.rb +5 -33
  50. data/lib/log_struct/log/error.rb +7 -40
  51. data/lib/log_struct/log/good_job/enqueue.rb +9 -72
  52. data/lib/log_struct/log/good_job/error.rb +9 -89
  53. data/lib/log_struct/log/good_job/finish.rb +9 -78
  54. data/lib/log_struct/log/good_job/log.rb +11 -75
  55. data/lib/log_struct/log/good_job/schedule.rb +7 -78
  56. data/lib/log_struct/log/good_job/start.rb +7 -78
  57. data/lib/log_struct/log/good_job.rb +2 -2
  58. data/lib/log_struct/log/plain.rb +5 -32
  59. data/lib/log_struct/log/puma/shutdown.rb +5 -32
  60. data/lib/log_struct/log/puma/start.rb +5 -56
  61. data/lib/log_struct/log/request.rb +7 -90
  62. data/lib/log_struct/log/security/blocked_host.rb +12 -73
  63. data/lib/log_struct/log/security/csrf_violation.rb +6 -67
  64. data/lib/log_struct/log/security/ip_spoof.rb +6 -73
  65. data/lib/log_struct/log/shrine/delete.rb +6 -41
  66. data/lib/log_struct/log/shrine/download.rb +6 -44
  67. data/lib/log_struct/log/shrine/exist.rb +6 -44
  68. data/lib/log_struct/log/shrine/metadata.rb +8 -46
  69. data/lib/log_struct/log/shrine/upload.rb +6 -53
  70. data/lib/log_struct/log/sidekiq.rb +5 -42
  71. data/lib/log_struct/log/sql.rb +5 -65
  72. data/lib/log_struct/log.rb +2 -2
  73. data/lib/log_struct/monkey_patches/active_support/tagged_logging/formatter.rb +12 -1
  74. data/lib/log_struct/rails_boot_banner_silencer.rb +2 -9
  75. data/lib/log_struct/railtie.rb +1 -27
  76. data/lib/log_struct/semantic_logger/concerns/log_methods.rb +100 -0
  77. data/lib/log_struct/semantic_logger/logger.rb +46 -15
  78. data/lib/log_struct/semantic_logger/setup.rb +11 -7
  79. data/lib/log_struct/shared/{shared/add_request_fields.rb → add_request_fields.rb} +2 -2
  80. data/lib/log_struct/shared/{shared/merge_additional_data_fields.rb → merge_additional_data_fields.rb} +1 -1
  81. data/lib/log_struct/shared/{shared/serialize_common.rb → serialize_common.rb} +9 -3
  82. data/lib/log_struct/{log/shared → shared}/serialize_common_public.rb +2 -2
  83. data/lib/log_struct/version.rb +1 -1
  84. data/lib/log_struct.rb +18 -1
  85. data/logstruct.gemspec +1 -1
  86. metadata +9 -11
  87. data/lib/log_struct/integrations/action_mailer/callbacks.rb +0 -100
  88. data/lib/log_struct/log/shared/add_request_fields.rb +0 -4
  89. data/lib/log_struct/log/shared/merge_additional_data_fields.rb +0 -4
  90. 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"
@@ -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
@@ -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