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"
@@ -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
@@ -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 CarrierWave
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,81 +29,32 @@ 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
  const :uploader, T.nilable(String), default: nil
40
35
  const :model, T.nilable(String), default: nil
41
36
  const :mount_point, T.nilable(String), default: nil
42
-
43
- # Event-specific fields
44
-
45
- # Additional data
46
- include LogStruct::Log::Interfaces::AdditionalDataField
47
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
48
- include LogStruct::Log::Shared::MergeAdditionalDataFields
49
-
50
- # Request fields (optional)
37
+ const :version, T.nilable(String), default: nil
38
+ const :store_path, T.nilable(String), default: nil
39
+ const :extension, T.nilable(String), default: nil
51
40
 
52
41
  # Serialize shared fields
53
42
  include LogStruct::Log::Interfaces::CommonFields
54
43
  include LogStruct::Log::Shared::SerializeCommon
55
44
 
56
- sig {
57
- params(storage: T.untyped,
58
- file_id: T.untyped,
59
- uploader: T.untyped,
60
- model: T.untyped,
61
- mount_point: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
62
- }
63
- def self.base_hash(storage: nil,
64
- file_id: nil,
65
- uploader: nil,
66
- model: nil,
67
- mount_point: nil)
68
- h = {}
69
- h[LogField::Storage] = storage unless storage.nil?
70
- h[LogField::FileId] = file_id unless file_id.nil?
45
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
46
+ def to_h
47
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
48
+ h[LogField::Storage] = storage
49
+ h[LogField::FileId] = file_id
71
50
  h[LogField::Uploader] = uploader unless uploader.nil?
72
51
  h[LogField::Model] = model unless model.nil?
73
52
  h[LogField::MountPoint] = mount_point unless mount_point.nil?
53
+ h[LogField::Version] = version unless version.nil?
54
+ h[LogField::StorePath] = store_path unless store_path.nil?
55
+ h[LogField::Extension] = extension unless extension.nil?
74
56
  h
75
57
  end
76
-
77
- sig {
78
- params(storage: T.untyped,
79
- file_id: T.untyped,
80
- uploader: T.untyped,
81
- model: T.untyped,
82
- mount_point: T.untyped,
83
- additional_data: T.untyped,
84
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
85
- }
86
- def self.build(storage:,
87
- file_id:,
88
- uploader: nil,
89
- model: nil,
90
- mount_point: nil,
91
- additional_data: nil,
92
- timestamp: Time.now)
93
- base_hash(storage: storage,
94
- file_id: file_id,
95
- uploader: uploader,
96
- model: model,
97
- mount_point: mount_point)
98
- end
99
-
100
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
101
- def to_h
102
- self.class.build(
103
- storage: storage,
104
- file_id: file_id,
105
- uploader: uploader,
106
- model: model,
107
- mount_point: mount_point,
108
- additional_data: additional_data,
109
- timestamp: timestamp
110
- )
111
- end
112
58
  end
113
59
  end
114
60
  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 CarrierWave
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,97 +29,40 @@ 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
  const :uploader, T.nilable(String), default: nil
40
35
  const :model, T.nilable(String), default: nil
41
36
  const :mount_point, T.nilable(String), default: nil
37
+ const :version, T.nilable(String), default: nil
38
+ const :store_path, T.nilable(String), default: nil
39
+ const :extension, T.nilable(String), default: nil
42
40
 
43
41
  # Event-specific fields
44
42
  const :filename, T.nilable(String), default: nil
45
43
  const :mime_type, T.nilable(String), default: nil
46
44
  const :size, T.nilable(Integer), default: nil
47
45
 
48
- # Additional data
49
- include LogStruct::Log::Interfaces::AdditionalDataField
50
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
51
- include LogStruct::Log::Shared::MergeAdditionalDataFields
52
-
53
- # Request fields (optional)
54
-
55
46
  # Serialize shared fields
56
47
  include LogStruct::Log::Interfaces::CommonFields
57
48
  include LogStruct::Log::Shared::SerializeCommon
58
49
 
59
- sig {
60
- params(storage: T.untyped,
61
- file_id: T.untyped,
62
- uploader: T.untyped,
63
- model: T.untyped,
64
- mount_point: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
65
- }
66
- def self.base_hash(storage: nil,
67
- file_id: nil,
68
- uploader: nil,
69
- model: nil,
70
- mount_point: nil)
71
- h = {}
72
- h[LogField::Storage] = storage unless storage.nil?
73
- h[LogField::FileId] = file_id unless file_id.nil?
50
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
51
+ def to_h
52
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
53
+ h[LogField::Storage] = storage
54
+ h[LogField::FileId] = file_id
74
55
  h[LogField::Uploader] = uploader unless uploader.nil?
75
56
  h[LogField::Model] = model unless model.nil?
76
57
  h[LogField::MountPoint] = mount_point unless mount_point.nil?
77
- h
78
- end
79
-
80
- sig {
81
- params(storage: T.untyped,
82
- file_id: T.untyped,
83
- uploader: T.untyped,
84
- model: T.untyped,
85
- mount_point: T.untyped,
86
- filename: T.untyped,
87
- mime_type: T.untyped,
88
- size: T.untyped,
89
- additional_data: T.untyped,
90
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
91
- }
92
- def self.build(storage:,
93
- file_id:,
94
- uploader: nil,
95
- model: nil,
96
- mount_point: nil,
97
- filename: nil,
98
- mime_type: nil,
99
- size: nil,
100
- additional_data: nil,
101
- timestamp: Time.now)
102
- h = base_hash(storage: storage,
103
- file_id: file_id,
104
- uploader: uploader,
105
- model: model,
106
- mount_point: mount_point)
58
+ h[LogField::Version] = version unless version.nil?
59
+ h[LogField::StorePath] = store_path unless store_path.nil?
60
+ h[LogField::Extension] = extension unless extension.nil?
107
61
  h[LogField::Filename] = filename unless filename.nil?
108
62
  h[LogField::MimeType] = mime_type unless mime_type.nil?
109
63
  h[LogField::Size] = size unless size.nil?
110
64
  h
111
65
  end
112
-
113
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
114
- def to_h
115
- self.class.build(
116
- storage: storage,
117
- file_id: file_id,
118
- uploader: uploader,
119
- model: model,
120
- mount_point: mount_point,
121
- filename: filename,
122
- mime_type: mime_type,
123
- size: size,
124
- additional_data: additional_data,
125
- timestamp: timestamp
126
- )
127
- end
128
66
  end
129
67
  end
130
68
  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 CarrierWave
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,11 +29,14 @@ 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
  const :uploader, T.nilable(String), default: nil
40
35
  const :model, T.nilable(String), default: nil
41
36
  const :mount_point, T.nilable(String), default: nil
37
+ const :version, T.nilable(String), default: nil
38
+ const :store_path, T.nilable(String), default: nil
39
+ const :extension, T.nilable(String), default: nil
42
40
 
43
41
  # Event-specific fields
44
42
  const :filename, T.nilable(String), default: nil
@@ -47,69 +45,21 @@ module LogStruct
47
45
  const :metadata, T.nilable(T::Hash[String, T.untyped]), default: nil
48
46
  const :duration_ms, T.nilable(Float), default: nil
49
47
 
50
- # Additional data
51
- include LogStruct::Log::Interfaces::AdditionalDataField
52
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
53
- include LogStruct::Log::Shared::MergeAdditionalDataFields
54
-
55
- # Request fields (optional)
56
-
57
48
  # Serialize shared fields
58
49
  include LogStruct::Log::Interfaces::CommonFields
59
50
  include LogStruct::Log::Shared::SerializeCommon
60
51
 
61
- sig {
62
- params(storage: T.untyped,
63
- file_id: T.untyped,
64
- uploader: T.untyped,
65
- model: T.untyped,
66
- mount_point: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
67
- }
68
- def self.base_hash(storage: nil,
69
- file_id: nil,
70
- uploader: nil,
71
- model: nil,
72
- mount_point: nil)
73
- h = {}
74
- h[LogField::Storage] = storage unless storage.nil?
75
- h[LogField::FileId] = file_id unless file_id.nil?
52
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
53
+ def to_h
54
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
55
+ h[LogField::Storage] = storage
56
+ h[LogField::FileId] = file_id
76
57
  h[LogField::Uploader] = uploader unless uploader.nil?
77
58
  h[LogField::Model] = model unless model.nil?
78
59
  h[LogField::MountPoint] = mount_point unless mount_point.nil?
79
- h
80
- end
81
-
82
- sig {
83
- params(storage: T.untyped,
84
- file_id: T.untyped,
85
- uploader: T.untyped,
86
- model: T.untyped,
87
- mount_point: T.untyped,
88
- filename: T.untyped,
89
- mime_type: T.untyped,
90
- size: T.untyped,
91
- metadata: T.untyped,
92
- duration_ms: T.untyped,
93
- additional_data: T.untyped,
94
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
95
- }
96
- def self.build(storage:,
97
- file_id:,
98
- uploader: nil,
99
- model: nil,
100
- mount_point: nil,
101
- filename: nil,
102
- mime_type: nil,
103
- size: nil,
104
- metadata: nil,
105
- duration_ms: nil,
106
- additional_data: nil,
107
- timestamp: Time.now)
108
- h = base_hash(storage: storage,
109
- file_id: file_id,
110
- uploader: uploader,
111
- model: model,
112
- mount_point: mount_point)
60
+ h[LogField::Version] = version unless version.nil?
61
+ h[LogField::StorePath] = store_path unless store_path.nil?
62
+ h[LogField::Extension] = extension unless extension.nil?
113
63
  h[LogField::Filename] = filename unless filename.nil?
114
64
  h[LogField::MimeType] = mime_type unless mime_type.nil?
115
65
  h[LogField::Size] = size unless size.nil?
@@ -117,24 +67,6 @@ module LogStruct
117
67
  h[LogField::DurationMs] = duration_ms unless duration_ms.nil?
118
68
  h
119
69
  end
120
-
121
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
122
- def to_h
123
- self.class.build(
124
- storage: storage,
125
- file_id: file_id,
126
- uploader: uploader,
127
- model: model,
128
- mount_point: mount_point,
129
- filename: filename,
130
- mime_type: mime_type,
131
- size: size,
132
- metadata: metadata,
133
- duration_ms: duration_ms,
134
- additional_data: additional_data,
135
- timestamp: timestamp
136
- )
137
- end
138
70
  end
139
71
  end
140
72
  end
@@ -15,19 +15,25 @@ module LogStruct
15
15
  class CarrierWave
16
16
  class BaseFields < T::Struct
17
17
  extend T::Sig
18
- const :storage, String
18
+ const :storage, Symbol
19
19
  const :file_id, String
20
20
  const :uploader, T.nilable(String), default: nil
21
21
  const :model, T.nilable(String), default: nil
22
22
  const :mount_point, T.nilable(String), default: nil
23
+ const :version, T.nilable(String), default: nil
24
+ const :store_path, T.nilable(String), default: nil
25
+ const :extension, T.nilable(String), default: nil
23
26
 
24
27
  Kwargs = T.type_alias do
25
28
  {
26
- storage: String,
29
+ storage: Symbol,
27
30
  file_id: String,
28
31
  uploader: T.nilable(String),
29
32
  model: T.nilable(String),
30
- mount_point: T.nilable(String)
33
+ mount_point: T.nilable(String),
34
+ version: T.nilable(String),
35
+ store_path: T.nilable(String),
36
+ extension: T.nilable(String)
31
37
  }
32
38
  end
33
39
 
@@ -38,7 +44,10 @@ module LogStruct
38
44
  file_id: file_id,
39
45
  uploader: uploader,
40
46
  model: model,
41
- mount_point: mount_point
47
+ mount_point: mount_point,
48
+ version: version,
49
+ store_path: store_path,
50
+ extension: extension
42
51
  }
43
52
  end
44
53
  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 Dotenv
23
23
  class Load < 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
@@ -37,39 +32,16 @@ module LogStruct
37
32
  # Event-specific fields
38
33
  const :file, String
39
34
 
40
- # Additional data
41
-
42
- # Request fields (optional)
43
-
44
35
  # Serialize shared fields
45
36
  include LogStruct::Log::Interfaces::CommonFields
46
37
  include LogStruct::Log::Shared::SerializeCommon
47
38
 
48
39
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
49
- def self.base_hash
50
- {}
51
- end
52
-
53
- sig {
54
- params(file: T.untyped,
55
- additional_data: T.untyped,
56
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
57
- }
58
- def self.build(file:,
59
- additional_data: nil,
60
- timestamp: Time.now)
61
- h = base_hash
40
+ def to_h
41
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
62
42
  h[LogField::File] = file
63
43
  h
64
44
  end
65
-
66
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
67
- def to_h
68
- self.class.build(
69
- file: file,
70
- timestamp: timestamp
71
- )
72
- end
73
45
  end
74
46
  end
75
47
  end