logstruct 0.1.0 → 0.1.1

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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -1
  3. data/README.md +15 -2
  4. data/lib/log_struct/boot_buffer.rb +28 -0
  5. data/lib/log_struct/builders/active_job.rb +84 -0
  6. data/lib/log_struct/concerns/configuration.rb +126 -13
  7. data/lib/log_struct/concerns/error_handling.rb +3 -7
  8. data/lib/log_struct/config_struct/filters.rb +18 -0
  9. data/lib/log_struct/config_struct/integrations.rb +8 -12
  10. data/lib/log_struct/configuration.rb +13 -0
  11. data/lib/log_struct/enums/event.rb +13 -0
  12. data/lib/log_struct/enums/log_field.rb +154 -0
  13. data/lib/log_struct/enums/source.rb +4 -1
  14. data/lib/log_struct/formatter.rb +29 -17
  15. data/lib/log_struct/integrations/action_mailer/error_handling.rb +3 -11
  16. data/lib/log_struct/integrations/action_mailer/event_logging.rb +22 -12
  17. data/lib/log_struct/integrations/active_job/log_subscriber.rb +52 -48
  18. data/lib/log_struct/integrations/active_model_serializers.rb +8 -14
  19. data/lib/log_struct/integrations/active_record.rb +35 -5
  20. data/lib/log_struct/integrations/active_storage.rb +59 -20
  21. data/lib/log_struct/integrations/ahoy.rb +2 -1
  22. data/lib/log_struct/integrations/carrierwave.rb +13 -16
  23. data/lib/log_struct/integrations/dotenv.rb +278 -0
  24. data/lib/log_struct/integrations/good_job/log_subscriber.rb +86 -136
  25. data/lib/log_struct/integrations/good_job/logger.rb +8 -10
  26. data/lib/log_struct/integrations/good_job.rb +5 -7
  27. data/lib/log_struct/integrations/host_authorization.rb +25 -4
  28. data/lib/log_struct/integrations/lograge.rb +20 -14
  29. data/lib/log_struct/integrations/puma.rb +482 -0
  30. data/lib/log_struct/integrations/rack_error_handler/middleware.rb +11 -18
  31. data/lib/log_struct/integrations/shrine.rb +44 -19
  32. data/lib/log_struct/integrations/sorbet.rb +48 -0
  33. data/lib/log_struct/integrations.rb +21 -0
  34. data/lib/log_struct/log/action_mailer/delivered.rb +99 -0
  35. data/lib/log_struct/log/action_mailer/delivery.rb +99 -0
  36. data/lib/log_struct/log/action_mailer.rb +30 -45
  37. data/lib/log_struct/log/active_job/enqueue.rb +125 -0
  38. data/lib/log_struct/log/active_job/finish.rb +130 -0
  39. data/lib/log_struct/log/active_job/schedule.rb +125 -0
  40. data/lib/log_struct/log/active_job/start.rb +130 -0
  41. data/lib/log_struct/log/active_job.rb +41 -54
  42. data/lib/log_struct/log/active_model_serializers.rb +72 -33
  43. data/lib/log_struct/log/active_storage/delete.rb +87 -0
  44. data/lib/log_struct/log/active_storage/download.rb +103 -0
  45. data/lib/log_struct/log/active_storage/exist.rb +93 -0
  46. data/lib/log_struct/log/active_storage/metadata.rb +93 -0
  47. data/lib/log_struct/log/active_storage/stream.rb +93 -0
  48. data/lib/log_struct/log/active_storage/upload.rb +118 -0
  49. data/lib/log_struct/log/active_storage/url.rb +93 -0
  50. data/lib/log_struct/log/active_storage.rb +32 -68
  51. data/lib/log_struct/log/ahoy.rb +67 -33
  52. data/lib/log_struct/log/carrierwave/delete.rb +115 -0
  53. data/lib/log_struct/log/carrierwave/download.rb +131 -0
  54. data/lib/log_struct/log/carrierwave/upload.rb +141 -0
  55. data/lib/log_struct/log/carrierwave.rb +37 -72
  56. data/lib/log_struct/log/dotenv/load.rb +76 -0
  57. data/lib/log_struct/log/dotenv/restore.rb +76 -0
  58. data/lib/log_struct/log/dotenv/save.rb +76 -0
  59. data/lib/log_struct/log/dotenv/update.rb +76 -0
  60. data/lib/log_struct/log/dotenv.rb +12 -0
  61. data/lib/log_struct/log/error.rb +58 -47
  62. data/lib/log_struct/log/good_job/enqueue.rb +126 -0
  63. data/lib/log_struct/log/good_job/error.rb +151 -0
  64. data/lib/log_struct/log/good_job/finish.rb +136 -0
  65. data/lib/log_struct/log/good_job/log.rb +131 -0
  66. data/lib/log_struct/log/good_job/schedule.rb +136 -0
  67. data/lib/log_struct/log/good_job/start.rb +136 -0
  68. data/lib/log_struct/log/good_job.rb +40 -141
  69. data/lib/log_struct/log/interfaces/additional_data_field.rb +1 -17
  70. data/lib/log_struct/log/interfaces/common_fields.rb +1 -39
  71. data/lib/log_struct/log/interfaces/public_common_fields.rb +1 -28
  72. data/lib/log_struct/log/interfaces/request_fields.rb +1 -33
  73. data/lib/log_struct/log/plain.rb +59 -34
  74. data/lib/log_struct/log/puma/shutdown.rb +80 -0
  75. data/lib/log_struct/log/puma/start.rb +120 -0
  76. data/lib/log_struct/log/puma.rb +10 -0
  77. data/lib/log_struct/log/request.rb +132 -48
  78. data/lib/log_struct/log/security/blocked_host.rb +141 -0
  79. data/lib/log_struct/log/security/csrf_violation.rb +131 -0
  80. data/lib/log_struct/log/security/ip_spoof.rb +141 -0
  81. data/lib/log_struct/log/security.rb +40 -70
  82. data/lib/log_struct/log/shared/add_request_fields.rb +1 -26
  83. data/lib/log_struct/log/shared/merge_additional_data_fields.rb +1 -22
  84. data/lib/log_struct/log/shared/serialize_common.rb +1 -33
  85. data/lib/log_struct/log/shared/serialize_common_public.rb +9 -9
  86. data/lib/log_struct/log/shrine/delete.rb +85 -0
  87. data/lib/log_struct/log/shrine/download.rb +90 -0
  88. data/lib/log_struct/log/shrine/exist.rb +90 -0
  89. data/lib/log_struct/log/shrine/metadata.rb +90 -0
  90. data/lib/log_struct/log/shrine/upload.rb +105 -0
  91. data/lib/log_struct/log/shrine.rb +10 -67
  92. data/lib/log_struct/log/sidekiq.rb +65 -26
  93. data/lib/log_struct/log/sql.rb +113 -106
  94. data/lib/log_struct/log.rb +29 -36
  95. data/lib/log_struct/multi_error_reporter.rb +80 -22
  96. data/lib/log_struct/param_filters.rb +50 -7
  97. data/lib/log_struct/rails_boot_banner_silencer.rb +123 -0
  98. data/lib/log_struct/railtie.rb +71 -0
  99. data/lib/log_struct/semantic_logger/formatter.rb +4 -2
  100. data/lib/log_struct/semantic_logger/setup.rb +34 -18
  101. data/lib/log_struct/shared/interfaces/additional_data_field.rb +22 -0
  102. data/lib/log_struct/shared/interfaces/common_fields.rb +39 -0
  103. data/lib/log_struct/shared/interfaces/public_common_fields.rb +29 -0
  104. data/lib/log_struct/shared/interfaces/request_fields.rb +39 -0
  105. data/lib/log_struct/shared/shared/add_request_fields.rb +28 -0
  106. data/lib/log_struct/shared/shared/merge_additional_data_fields.rb +27 -0
  107. data/lib/log_struct/shared/shared/serialize_common.rb +58 -0
  108. data/lib/log_struct/version.rb +1 -1
  109. data/lib/log_struct.rb +22 -4
  110. data/logstruct.gemspec +2 -1
  111. metadata +78 -9
  112. data/lib/log_struct/log/interfaces/message_field.rb +0 -20
  113. data/lib/log_struct/log_keys.rb +0 -102
@@ -0,0 +1,151 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # AUTO-GENERATED: DO NOT EDIT
5
+ # Generated by scripts/generate_structs.rb
6
+ # Schemas dir: schemas/log_sources/
7
+ # Template: tools/codegen/templates/sorbet/event.rb.erb
8
+
9
+ require "log_struct/shared/interfaces/common_fields"
10
+ require "log_struct/shared/interfaces/additional_data_field"
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"
15
+ require_relative "../../enums/source"
16
+ require_relative "../../enums/event"
17
+ require_relative "../../enums/level"
18
+ require_relative "../../enums/log_field"
19
+
20
+ module LogStruct
21
+ module Log
22
+ class GoodJob
23
+ class Error < T::Struct
24
+ # typed: strict
25
+ # frozen_string_literal: true
26
+
27
+ extend T::Sig
28
+
29
+ extend T::Sig
30
+
31
+ # Shared/common fields
32
+ const :source, Source::Job, default: Source::Job
33
+ const :event, Event, default: Event::Error
34
+ const :timestamp, Time, factory: -> { Time.now }
35
+ const :level, Level, default: Level::Info
36
+
37
+ const :job_id, T.nilable(String), default: nil
38
+ const :job_class, T.nilable(String), default: nil
39
+ const :queue_name, T.nilable(String), default: nil
40
+ const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
+ const :executions, T.nilable(Integer), default: nil
42
+
43
+ # Event-specific fields
44
+ const :err_class, String
45
+ const :error_message, String
46
+ const :duration_ms, T.nilable(Float), default: nil
47
+ const :process_id, Integer
48
+ const :thread_id, String
49
+ const :exception_executions, T.nilable(Integer), default: nil
50
+ const :backtrace, T.nilable(T::Array[String]), default: nil
51
+
52
+ # Additional data
53
+ include LogStruct::Log::Interfaces::AdditionalDataField
54
+ const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
55
+ include LogStruct::Log::Shared::MergeAdditionalDataFields
56
+
57
+ # Request fields (optional)
58
+
59
+ # Serialize shared fields
60
+ include LogStruct::Log::Interfaces::CommonFields
61
+ include LogStruct::Log::Shared::SerializeCommon
62
+
63
+ sig {
64
+ params(job_id: T.untyped,
65
+ job_class: T.untyped,
66
+ queue_name: T.untyped,
67
+ arguments: T.untyped,
68
+ executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
+ }
70
+ def self.base_hash(job_id: nil,
71
+ job_class: nil,
72
+ queue_name: nil,
73
+ arguments: nil,
74
+ executions: nil)
75
+ h = {}
76
+ h[LogField::JobId] = job_id unless job_id.nil?
77
+ h[LogField::JobClass] = job_class unless job_class.nil?
78
+ h[LogField::QueueName] = queue_name unless queue_name.nil?
79
+ h[LogField::Arguments] = arguments unless arguments.nil?
80
+ h[LogField::Executions] = executions unless executions.nil?
81
+ h
82
+ end
83
+
84
+ sig {
85
+ params(err_class: T.untyped,
86
+ error_message: T.untyped,
87
+ process_id: T.untyped,
88
+ thread_id: T.untyped,
89
+ job_id: T.untyped,
90
+ job_class: T.untyped,
91
+ queue_name: T.untyped,
92
+ arguments: T.untyped,
93
+ executions: T.untyped,
94
+ duration_ms: T.untyped,
95
+ exception_executions: T.untyped,
96
+ backtrace: T.untyped,
97
+ additional_data: T.untyped,
98
+ timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
99
+ }
100
+ def self.build(err_class:,
101
+ error_message:,
102
+ process_id:,
103
+ thread_id:,
104
+ job_id: nil,
105
+ job_class: nil,
106
+ queue_name: nil,
107
+ arguments: nil,
108
+ executions: nil,
109
+ duration_ms: nil,
110
+ exception_executions: nil,
111
+ backtrace: nil,
112
+ additional_data: nil,
113
+ timestamp: Time.now)
114
+ h = base_hash(job_id: job_id,
115
+ job_class: job_class,
116
+ queue_name: queue_name,
117
+ arguments: arguments,
118
+ executions: executions)
119
+ h[LogField::ErrClass] = err_class
120
+ h[LogField::ErrorMessage] = error_message
121
+ h[LogField::DurationMs] = duration_ms unless duration_ms.nil?
122
+ h[LogField::ProcessId] = process_id
123
+ h[LogField::ThreadId] = thread_id
124
+ h[LogField::ExceptionExecutions] = exception_executions unless exception_executions.nil?
125
+ h[LogField::Backtrace] = backtrace unless backtrace.nil?
126
+ h
127
+ end
128
+
129
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
130
+ def to_h
131
+ self.class.build(
132
+ job_id: job_id,
133
+ job_class: job_class,
134
+ queue_name: queue_name,
135
+ arguments: arguments,
136
+ executions: executions,
137
+ err_class: err_class,
138
+ error_message: error_message,
139
+ duration_ms: duration_ms,
140
+ process_id: process_id,
141
+ thread_id: thread_id,
142
+ exception_executions: exception_executions,
143
+ backtrace: backtrace,
144
+ additional_data: additional_data,
145
+ timestamp: timestamp
146
+ )
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,136 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # AUTO-GENERATED: DO NOT EDIT
5
+ # Generated by scripts/generate_structs.rb
6
+ # Schemas dir: schemas/log_sources/
7
+ # Template: tools/codegen/templates/sorbet/event.rb.erb
8
+
9
+ require "log_struct/shared/interfaces/common_fields"
10
+ require "log_struct/shared/interfaces/additional_data_field"
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"
15
+ require_relative "../../enums/source"
16
+ require_relative "../../enums/event"
17
+ require_relative "../../enums/level"
18
+ require_relative "../../enums/log_field"
19
+
20
+ module LogStruct
21
+ module Log
22
+ class GoodJob
23
+ class Finish < T::Struct
24
+ # typed: strict
25
+ # frozen_string_literal: true
26
+
27
+ extend T::Sig
28
+
29
+ extend T::Sig
30
+
31
+ # Shared/common fields
32
+ const :source, Source::Job, default: Source::Job
33
+ const :event, Event, default: Event::Finish
34
+ const :timestamp, Time, factory: -> { Time.now }
35
+ const :level, Level, default: Level::Info
36
+
37
+ const :job_id, T.nilable(String), default: nil
38
+ const :job_class, T.nilable(String), default: nil
39
+ const :queue_name, T.nilable(String), default: nil
40
+ const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
+ const :executions, T.nilable(Integer), default: nil
42
+
43
+ # Event-specific fields
44
+ const :duration_ms, Float
45
+ const :finished_at, Time
46
+ const :process_id, Integer
47
+ const :thread_id, String
48
+
49
+ # Additional data
50
+ include LogStruct::Log::Interfaces::AdditionalDataField
51
+ const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
52
+ include LogStruct::Log::Shared::MergeAdditionalDataFields
53
+
54
+ # Request fields (optional)
55
+
56
+ # Serialize shared fields
57
+ include LogStruct::Log::Interfaces::CommonFields
58
+ include LogStruct::Log::Shared::SerializeCommon
59
+
60
+ sig {
61
+ params(job_id: T.untyped,
62
+ job_class: T.untyped,
63
+ queue_name: T.untyped,
64
+ arguments: T.untyped,
65
+ executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
66
+ }
67
+ def self.base_hash(job_id: nil,
68
+ job_class: nil,
69
+ queue_name: nil,
70
+ arguments: nil,
71
+ executions: nil)
72
+ h = {}
73
+ h[LogField::JobId] = job_id unless job_id.nil?
74
+ h[LogField::JobClass] = job_class unless job_class.nil?
75
+ h[LogField::QueueName] = queue_name unless queue_name.nil?
76
+ h[LogField::Arguments] = arguments unless arguments.nil?
77
+ h[LogField::Executions] = executions unless executions.nil?
78
+ h
79
+ end
80
+
81
+ sig {
82
+ params(duration_ms: T.untyped,
83
+ finished_at: T.untyped,
84
+ process_id: T.untyped,
85
+ thread_id: T.untyped,
86
+ job_id: T.untyped,
87
+ job_class: T.untyped,
88
+ queue_name: T.untyped,
89
+ arguments: T.untyped,
90
+ executions: T.untyped,
91
+ additional_data: T.untyped,
92
+ timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
93
+ }
94
+ def self.build(duration_ms:,
95
+ finished_at:,
96
+ process_id:,
97
+ thread_id:,
98
+ job_id: nil,
99
+ job_class: nil,
100
+ queue_name: nil,
101
+ arguments: nil,
102
+ executions: nil,
103
+ additional_data: nil,
104
+ timestamp: Time.now)
105
+ h = base_hash(job_id: job_id,
106
+ job_class: job_class,
107
+ queue_name: queue_name,
108
+ arguments: arguments,
109
+ executions: executions)
110
+ h[LogField::DurationMs] = duration_ms
111
+ h[LogField::FinishedAt] = finished_at
112
+ h[LogField::ProcessId] = process_id
113
+ h[LogField::ThreadId] = thread_id
114
+ h
115
+ end
116
+
117
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
118
+ def to_h
119
+ self.class.build(
120
+ job_id: job_id,
121
+ job_class: job_class,
122
+ queue_name: queue_name,
123
+ arguments: arguments,
124
+ executions: executions,
125
+ duration_ms: duration_ms,
126
+ finished_at: finished_at,
127
+ process_id: process_id,
128
+ thread_id: thread_id,
129
+ additional_data: additional_data,
130
+ timestamp: timestamp
131
+ )
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,131 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # AUTO-GENERATED: DO NOT EDIT
5
+ # Generated by scripts/generate_structs.rb
6
+ # Schemas dir: schemas/log_sources/
7
+ # Template: tools/codegen/templates/sorbet/event.rb.erb
8
+
9
+ require "log_struct/shared/interfaces/common_fields"
10
+ require "log_struct/shared/interfaces/additional_data_field"
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"
15
+ require_relative "../../enums/source"
16
+ require_relative "../../enums/event"
17
+ require_relative "../../enums/level"
18
+ require_relative "../../enums/log_field"
19
+
20
+ module LogStruct
21
+ module Log
22
+ class GoodJob
23
+ class Log < T::Struct
24
+ # typed: strict
25
+ # frozen_string_literal: true
26
+
27
+ extend T::Sig
28
+
29
+ extend T::Sig
30
+
31
+ # Shared/common fields
32
+ const :source, Source::Job, default: Source::Job
33
+ const :event, Event, default: Event::Log
34
+ const :timestamp, Time, factory: -> { Time.now }
35
+ const :level, Level, default: Level::Info
36
+
37
+ const :job_id, T.nilable(String), default: nil
38
+ const :job_class, T.nilable(String), default: nil
39
+ const :queue_name, T.nilable(String), default: nil
40
+ const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
+ const :executions, T.nilable(Integer), default: nil
42
+
43
+ # Event-specific fields
44
+ const :message, String
45
+ const :process_id, Integer
46
+ const :thread_id, String
47
+
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
+ # Serialize shared fields
56
+ include LogStruct::Log::Interfaces::CommonFields
57
+ include LogStruct::Log::Shared::SerializeCommon
58
+
59
+ sig {
60
+ params(job_id: T.untyped,
61
+ job_class: T.untyped,
62
+ queue_name: T.untyped,
63
+ arguments: T.untyped,
64
+ executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
65
+ }
66
+ def self.base_hash(job_id: nil,
67
+ job_class: nil,
68
+ queue_name: nil,
69
+ arguments: nil,
70
+ executions: nil)
71
+ h = {}
72
+ h[LogField::JobId] = job_id unless job_id.nil?
73
+ h[LogField::JobClass] = job_class unless job_class.nil?
74
+ h[LogField::QueueName] = queue_name unless queue_name.nil?
75
+ h[LogField::Arguments] = arguments unless arguments.nil?
76
+ h[LogField::Executions] = executions unless executions.nil?
77
+ h
78
+ end
79
+
80
+ sig {
81
+ params(message: T.untyped,
82
+ process_id: T.untyped,
83
+ thread_id: T.untyped,
84
+ job_id: T.untyped,
85
+ job_class: T.untyped,
86
+ queue_name: T.untyped,
87
+ arguments: T.untyped,
88
+ executions: T.untyped,
89
+ additional_data: T.untyped,
90
+ timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
91
+ }
92
+ def self.build(message:,
93
+ process_id:,
94
+ thread_id:,
95
+ job_id: nil,
96
+ job_class: nil,
97
+ queue_name: nil,
98
+ arguments: nil,
99
+ executions: 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
+ h[LogField::Message] = message
108
+ h[LogField::ProcessId] = process_id
109
+ h[LogField::ThreadId] = thread_id
110
+ h
111
+ 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
+ message: message,
122
+ process_id: process_id,
123
+ thread_id: thread_id,
124
+ additional_data: additional_data,
125
+ timestamp: timestamp
126
+ )
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,136 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # AUTO-GENERATED: DO NOT EDIT
5
+ # Generated by scripts/generate_structs.rb
6
+ # Schemas dir: schemas/log_sources/
7
+ # Template: tools/codegen/templates/sorbet/event.rb.erb
8
+
9
+ require "log_struct/shared/interfaces/common_fields"
10
+ require "log_struct/shared/interfaces/additional_data_field"
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"
15
+ require_relative "../../enums/source"
16
+ require_relative "../../enums/event"
17
+ require_relative "../../enums/level"
18
+ require_relative "../../enums/log_field"
19
+
20
+ module LogStruct
21
+ module Log
22
+ class GoodJob
23
+ class Schedule < T::Struct
24
+ # typed: strict
25
+ # frozen_string_literal: true
26
+
27
+ extend T::Sig
28
+
29
+ extend T::Sig
30
+
31
+ # Shared/common fields
32
+ const :source, Source::Job, default: Source::Job
33
+ const :event, Event, default: Event::Schedule
34
+ const :timestamp, Time, factory: -> { Time.now }
35
+ const :level, Level, default: Level::Info
36
+
37
+ const :job_id, T.nilable(String), default: nil
38
+ const :job_class, T.nilable(String), default: nil
39
+ const :queue_name, T.nilable(String), default: nil
40
+ const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
+ const :executions, T.nilable(Integer), default: nil
42
+
43
+ # Event-specific fields
44
+ const :duration_ms, Float
45
+ const :scheduled_at, Time
46
+ const :priority, T.nilable(Integer), default: nil
47
+ const :cron_key, T.nilable(String), default: nil
48
+
49
+ # Additional data
50
+ include LogStruct::Log::Interfaces::AdditionalDataField
51
+ const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
52
+ include LogStruct::Log::Shared::MergeAdditionalDataFields
53
+
54
+ # Request fields (optional)
55
+
56
+ # Serialize shared fields
57
+ include LogStruct::Log::Interfaces::CommonFields
58
+ include LogStruct::Log::Shared::SerializeCommon
59
+
60
+ sig {
61
+ params(job_id: T.untyped,
62
+ job_class: T.untyped,
63
+ queue_name: T.untyped,
64
+ arguments: T.untyped,
65
+ executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
66
+ }
67
+ def self.base_hash(job_id: nil,
68
+ job_class: nil,
69
+ queue_name: nil,
70
+ arguments: nil,
71
+ executions: nil)
72
+ h = {}
73
+ h[LogField::JobId] = job_id unless job_id.nil?
74
+ h[LogField::JobClass] = job_class unless job_class.nil?
75
+ h[LogField::QueueName] = queue_name unless queue_name.nil?
76
+ h[LogField::Arguments] = arguments unless arguments.nil?
77
+ h[LogField::Executions] = executions unless executions.nil?
78
+ h
79
+ end
80
+
81
+ sig {
82
+ params(duration_ms: T.untyped,
83
+ scheduled_at: T.untyped,
84
+ job_id: T.untyped,
85
+ job_class: T.untyped,
86
+ queue_name: T.untyped,
87
+ arguments: T.untyped,
88
+ executions: T.untyped,
89
+ priority: T.untyped,
90
+ cron_key: T.untyped,
91
+ additional_data: T.untyped,
92
+ timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
93
+ }
94
+ def self.build(duration_ms:,
95
+ scheduled_at:,
96
+ job_id: nil,
97
+ job_class: nil,
98
+ queue_name: nil,
99
+ arguments: nil,
100
+ executions: nil,
101
+ priority: nil,
102
+ cron_key: nil,
103
+ additional_data: nil,
104
+ timestamp: Time.now)
105
+ h = base_hash(job_id: job_id,
106
+ job_class: job_class,
107
+ queue_name: queue_name,
108
+ arguments: arguments,
109
+ executions: executions)
110
+ h[LogField::DurationMs] = duration_ms
111
+ h[LogField::ScheduledAt] = scheduled_at
112
+ h[LogField::Priority] = priority unless priority.nil?
113
+ h[LogField::CronKey] = cron_key unless cron_key.nil?
114
+ h
115
+ end
116
+
117
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
118
+ def to_h
119
+ self.class.build(
120
+ job_id: job_id,
121
+ job_class: job_class,
122
+ queue_name: queue_name,
123
+ arguments: arguments,
124
+ executions: executions,
125
+ duration_ms: duration_ms,
126
+ scheduled_at: scheduled_at,
127
+ priority: priority,
128
+ cron_key: cron_key,
129
+ additional_data: additional_data,
130
+ timestamp: timestamp
131
+ )
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,136 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # AUTO-GENERATED: DO NOT EDIT
5
+ # Generated by scripts/generate_structs.rb
6
+ # Schemas dir: schemas/log_sources/
7
+ # Template: tools/codegen/templates/sorbet/event.rb.erb
8
+
9
+ require "log_struct/shared/interfaces/common_fields"
10
+ require "log_struct/shared/interfaces/additional_data_field"
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"
15
+ require_relative "../../enums/source"
16
+ require_relative "../../enums/event"
17
+ require_relative "../../enums/level"
18
+ require_relative "../../enums/log_field"
19
+
20
+ module LogStruct
21
+ module Log
22
+ class GoodJob
23
+ class Start < T::Struct
24
+ # typed: strict
25
+ # frozen_string_literal: true
26
+
27
+ extend T::Sig
28
+
29
+ extend T::Sig
30
+
31
+ # Shared/common fields
32
+ const :source, Source::Job, default: Source::Job
33
+ const :event, Event, default: Event::Start
34
+ const :timestamp, Time, factory: -> { Time.now }
35
+ const :level, Level, default: Level::Info
36
+
37
+ const :job_id, T.nilable(String), default: nil
38
+ const :job_class, T.nilable(String), default: nil
39
+ const :queue_name, T.nilable(String), default: nil
40
+ const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
+ const :executions, T.nilable(Integer), default: nil
42
+
43
+ # Event-specific fields
44
+ const :process_id, Integer
45
+ const :thread_id, String
46
+ const :wait_ms, T.nilable(Float), default: nil
47
+ const :scheduled_at, T.nilable(Time), default: nil
48
+
49
+ # Additional data
50
+ include LogStruct::Log::Interfaces::AdditionalDataField
51
+ const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
52
+ include LogStruct::Log::Shared::MergeAdditionalDataFields
53
+
54
+ # Request fields (optional)
55
+
56
+ # Serialize shared fields
57
+ include LogStruct::Log::Interfaces::CommonFields
58
+ include LogStruct::Log::Shared::SerializeCommon
59
+
60
+ sig {
61
+ params(job_id: T.untyped,
62
+ job_class: T.untyped,
63
+ queue_name: T.untyped,
64
+ arguments: T.untyped,
65
+ executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
66
+ }
67
+ def self.base_hash(job_id: nil,
68
+ job_class: nil,
69
+ queue_name: nil,
70
+ arguments: nil,
71
+ executions: nil)
72
+ h = {}
73
+ h[LogField::JobId] = job_id unless job_id.nil?
74
+ h[LogField::JobClass] = job_class unless job_class.nil?
75
+ h[LogField::QueueName] = queue_name unless queue_name.nil?
76
+ h[LogField::Arguments] = arguments unless arguments.nil?
77
+ h[LogField::Executions] = executions unless executions.nil?
78
+ h
79
+ end
80
+
81
+ sig {
82
+ params(process_id: T.untyped,
83
+ thread_id: T.untyped,
84
+ job_id: T.untyped,
85
+ job_class: T.untyped,
86
+ queue_name: T.untyped,
87
+ arguments: T.untyped,
88
+ executions: T.untyped,
89
+ wait_ms: T.untyped,
90
+ scheduled_at: T.untyped,
91
+ additional_data: T.untyped,
92
+ timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
93
+ }
94
+ def self.build(process_id:,
95
+ thread_id:,
96
+ job_id: nil,
97
+ job_class: nil,
98
+ queue_name: nil,
99
+ arguments: nil,
100
+ executions: nil,
101
+ wait_ms: nil,
102
+ scheduled_at: nil,
103
+ additional_data: nil,
104
+ timestamp: Time.now)
105
+ h = base_hash(job_id: job_id,
106
+ job_class: job_class,
107
+ queue_name: queue_name,
108
+ arguments: arguments,
109
+ executions: executions)
110
+ h[LogField::ProcessId] = process_id
111
+ h[LogField::ThreadId] = thread_id
112
+ h[LogField::WaitMs] = wait_ms unless wait_ms.nil?
113
+ h[LogField::ScheduledAt] = scheduled_at unless scheduled_at.nil?
114
+ h
115
+ end
116
+
117
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
118
+ def to_h
119
+ self.class.build(
120
+ job_id: job_id,
121
+ job_class: job_class,
122
+ queue_name: queue_name,
123
+ arguments: arguments,
124
+ executions: executions,
125
+ process_id: process_id,
126
+ thread_id: thread_id,
127
+ wait_ms: wait_ms,
128
+ scheduled_at: scheduled_at,
129
+ additional_data: additional_data,
130
+ timestamp: timestamp
131
+ )
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end