senro_usecaser 0.1.0
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.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +72 -0
- data/LICENSE +21 -0
- data/README.md +1069 -0
- data/Rakefile +12 -0
- data/Steepfile +24 -0
- data/examples/RBS_GENERATION.md +16 -0
- data/examples/namespace_demo.rb +751 -0
- data/examples/order_system.rb +1279 -0
- data/examples/sig/namespace_demo.rbs +279 -0
- data/examples/sig/order_system.rbs +685 -0
- data/lefthook.yml +31 -0
- data/lib/senro_usecaser/base.rb +660 -0
- data/lib/senro_usecaser/configuration.rb +149 -0
- data/lib/senro_usecaser/container.rb +315 -0
- data/lib/senro_usecaser/error.rb +88 -0
- data/lib/senro_usecaser/provider.rb +212 -0
- data/lib/senro_usecaser/result.rb +182 -0
- data/lib/senro_usecaser/version.rb +8 -0
- data/lib/senro_usecaser.rb +155 -0
- data/sig/generated/senro_usecaser/base.rbs +365 -0
- data/sig/generated/senro_usecaser/configuration.rbs +80 -0
- data/sig/generated/senro_usecaser/container.rbs +190 -0
- data/sig/generated/senro_usecaser/error.rbs +58 -0
- data/sig/generated/senro_usecaser/provider.rbs +153 -0
- data/sig/generated/senro_usecaser/result.rbs +109 -0
- data/sig/generated/senro_usecaser/version.rbs +6 -0
- data/sig/generated/senro_usecaser.rbs +113 -0
- data/sig/overrides.rbs +16 -0
- metadata +77 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# Generated from namespace_demo.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
# サンプル全体を NamespaceDemo モジュールで囲み、
|
|
4
|
+
# 他のサンプル(order_system.rb)とのクラス名衝突を回避
|
|
5
|
+
module NamespaceDemo
|
|
6
|
+
class User
|
|
7
|
+
# : Integer
|
|
8
|
+
attr_reader id: untyped
|
|
9
|
+
|
|
10
|
+
# : String
|
|
11
|
+
attr_reader name: untyped
|
|
12
|
+
|
|
13
|
+
# : String
|
|
14
|
+
attr_reader role: untyped
|
|
15
|
+
|
|
16
|
+
# : (id: Integer, name: String, role: String) -> void
|
|
17
|
+
def initialize: (id: Integer, name: String, role: String) -> void
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class AuditLog
|
|
21
|
+
# : String
|
|
22
|
+
attr_reader action: untyped
|
|
23
|
+
|
|
24
|
+
# : User
|
|
25
|
+
attr_reader performed_by: untyped
|
|
26
|
+
|
|
27
|
+
# : Time
|
|
28
|
+
attr_reader timestamp: untyped
|
|
29
|
+
|
|
30
|
+
# : (action: String, performed_by: User, timestamp: Time) -> void
|
|
31
|
+
def initialize: (action: String, performed_by: User, timestamp: Time) -> void
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# 全 namespace で共有されるロガー
|
|
35
|
+
class Logger
|
|
36
|
+
# : String
|
|
37
|
+
attr_reader prefix: untyped
|
|
38
|
+
|
|
39
|
+
# : (?String) -> void
|
|
40
|
+
def initialize: (?String) -> void
|
|
41
|
+
|
|
42
|
+
# : (String) -> void
|
|
43
|
+
def info: (String) -> void
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
module Public
|
|
47
|
+
class UserRepository
|
|
48
|
+
# : () -> void
|
|
49
|
+
def initialize: () -> void
|
|
50
|
+
|
|
51
|
+
# : (Integer) -> User?
|
|
52
|
+
def find: (Integer) -> User?
|
|
53
|
+
|
|
54
|
+
# : () -> Array[User]
|
|
55
|
+
def all: () -> Array[User]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class NotificationService
|
|
59
|
+
# : (User, String) -> bool
|
|
60
|
+
def notify: (User, String) -> bool
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
module Admin
|
|
65
|
+
class UserRepository
|
|
66
|
+
# : () -> void
|
|
67
|
+
def initialize: () -> void
|
|
68
|
+
|
|
69
|
+
# : (Integer) -> User?
|
|
70
|
+
def find: (Integer) -> User?
|
|
71
|
+
|
|
72
|
+
# : () -> Array[User]
|
|
73
|
+
def all: () -> Array[User]
|
|
74
|
+
|
|
75
|
+
# Admin 専用: ユーザーの全情報を取得
|
|
76
|
+
# : (Integer) -> Hash[Symbol, untyped]?
|
|
77
|
+
def find_with_permissions: (Integer) -> Hash[Symbol, untyped]?
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
class NotificationService
|
|
81
|
+
# : (User, String) -> bool
|
|
82
|
+
def notify: (User, String) -> bool
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
class AuditLogger
|
|
86
|
+
# : () -> void
|
|
87
|
+
def initialize: () -> void
|
|
88
|
+
|
|
89
|
+
# : (action: String, performed_by: User) -> AuditLog
|
|
90
|
+
def log: (action: String, performed_by: User) -> AuditLog
|
|
91
|
+
|
|
92
|
+
# : () -> Array[AuditLog]
|
|
93
|
+
def recent_logs: () -> Array[AuditLog]
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
module Admin
|
|
98
|
+
module Reports
|
|
99
|
+
class ReportGenerator
|
|
100
|
+
# : (String, Hash[Symbol, untyped]) -> String
|
|
101
|
+
def generate: (String, Hash[Symbol, untyped]) -> String
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
class ReportExporter
|
|
105
|
+
# : (String, Symbol) -> String
|
|
106
|
+
def export: (String, Symbol) -> String
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# 共有サービス(ルート namespace)
|
|
112
|
+
class CoreProvider < SenroUsecaser::Provider
|
|
113
|
+
# : (SenroUsecaser::Container) -> void
|
|
114
|
+
def register: (SenroUsecaser::Container) -> void
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Public namespace のサービス(namespace DSL 使用)
|
|
118
|
+
class PublicProvider < SenroUsecaser::Provider
|
|
119
|
+
# : (SenroUsecaser::Container) -> void
|
|
120
|
+
def register: (SenroUsecaser::Container) -> void
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Admin namespace のサービス(Container.namespace 直接使用)
|
|
124
|
+
class AdminProvider < SenroUsecaser::Provider
|
|
125
|
+
# : (SenroUsecaser::Container) -> void
|
|
126
|
+
def register: (SenroUsecaser::Container) -> void
|
|
127
|
+
|
|
128
|
+
# : (SenroUsecaser::Container) -> void
|
|
129
|
+
def after_boot: (SenroUsecaser::Container) -> void
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Admin::Reports namespace のサービス(Container.namespace ネスト使用)
|
|
133
|
+
class AdminReportsProvider < SenroUsecaser::Provider
|
|
134
|
+
# : (SenroUsecaser::Container) -> void
|
|
135
|
+
def register: (SenroUsecaser::Container) -> void
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Public namespace の UseCase
|
|
139
|
+
class ListPublicUsersUseCase < SenroUsecaser::Base
|
|
140
|
+
class Output
|
|
141
|
+
# : (users: Array[User]) -> void
|
|
142
|
+
def initialize: (users: Array[User]) -> void
|
|
143
|
+
|
|
144
|
+
# : () -> Array[User]
|
|
145
|
+
attr_reader users: untyped
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def user_repository: () -> Public::UserRepository
|
|
149
|
+
|
|
150
|
+
def logger: () -> Logger
|
|
151
|
+
|
|
152
|
+
# : (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
153
|
+
def call: (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Admin namespace の UseCase
|
|
157
|
+
class ListAdminUsersUseCase < SenroUsecaser::Base
|
|
158
|
+
class Output
|
|
159
|
+
# : (users: Array[User]) -> void
|
|
160
|
+
def initialize: (users: Array[User]) -> void
|
|
161
|
+
|
|
162
|
+
# : () -> Array[User]
|
|
163
|
+
attr_reader users: untyped
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def user_repository: () -> Admin::UserRepository
|
|
167
|
+
|
|
168
|
+
def audit_logger: () -> Admin::AuditLogger
|
|
169
|
+
|
|
170
|
+
def logger: () -> Logger
|
|
171
|
+
|
|
172
|
+
# : (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
173
|
+
def call: (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Admin::Reports namespace の UseCase(ネストした namespace)
|
|
177
|
+
class GenerateUserReportUseCase < SenroUsecaser::Base
|
|
178
|
+
class Input
|
|
179
|
+
# : (report_type: String) -> void
|
|
180
|
+
def initialize: (report_type: String) -> void
|
|
181
|
+
|
|
182
|
+
# : () -> String
|
|
183
|
+
attr_reader report_type: untyped
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
class Output
|
|
187
|
+
# : (report: String) -> void
|
|
188
|
+
def initialize: (report: String) -> void
|
|
189
|
+
|
|
190
|
+
# : () -> String
|
|
191
|
+
attr_reader report: untyped
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def report_generator: () -> Admin::Reports::ReportGenerator
|
|
195
|
+
|
|
196
|
+
def report_exporter: () -> Admin::Reports::ReportExporter
|
|
197
|
+
|
|
198
|
+
def user_repository: () -> Admin::UserRepository
|
|
199
|
+
|
|
200
|
+
def audit_logger: () -> Admin::AuditLogger
|
|
201
|
+
|
|
202
|
+
def logger: () -> Logger
|
|
203
|
+
|
|
204
|
+
# : (Input) -> SenroUsecaser::Result[Output]
|
|
205
|
+
def call: (Input) -> SenroUsecaser::Result[Output]
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# リクエストスコープで current_user を注入しつつ、namespace を活用
|
|
209
|
+
class AdminActionUseCase < SenroUsecaser::Base
|
|
210
|
+
class Output
|
|
211
|
+
# : (message: String) -> void
|
|
212
|
+
def initialize: (message: String) -> void
|
|
213
|
+
|
|
214
|
+
# : () -> String
|
|
215
|
+
attr_reader message: untyped
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def current_user: () -> User
|
|
219
|
+
|
|
220
|
+
def audit_logger: () -> Admin::AuditLogger
|
|
221
|
+
|
|
222
|
+
def notification_service: () -> Admin::NotificationService
|
|
223
|
+
|
|
224
|
+
# : (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
225
|
+
def call: (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
# Public::InferredUseCase → namespace "public" として推論
|
|
230
|
+
module Public
|
|
231
|
+
class InferredUseCase < SenroUsecaser::Base
|
|
232
|
+
class Output
|
|
233
|
+
# : (message: String) -> void
|
|
234
|
+
def initialize: (message: String) -> void
|
|
235
|
+
|
|
236
|
+
# : () -> String
|
|
237
|
+
attr_reader message: untyped
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
def user_repository: () -> NamespaceDemo::Public::UserRepository
|
|
241
|
+
|
|
242
|
+
def logger: () -> NamespaceDemo::Logger
|
|
243
|
+
|
|
244
|
+
# : (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
245
|
+
def call: (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
# Admin::Reports::InferredReportUseCase → namespace "admin::reports" として推論
|
|
250
|
+
module Admin
|
|
251
|
+
module Reports
|
|
252
|
+
class InferredReportUseCase < SenroUsecaser::Base
|
|
253
|
+
class Output
|
|
254
|
+
# : (message: String) -> void
|
|
255
|
+
def initialize: (message: String) -> void
|
|
256
|
+
|
|
257
|
+
# : () -> String
|
|
258
|
+
attr_reader message: untyped
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def report_generator: () -> NamespaceDemo::Admin::Reports::ReportGenerator
|
|
262
|
+
|
|
263
|
+
def user_repository: () -> NamespaceDemo::Admin::UserRepository
|
|
264
|
+
|
|
265
|
+
def logger: () -> NamespaceDemo::Logger
|
|
266
|
+
|
|
267
|
+
# : (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
268
|
+
def call: (?untyped, **untyped) -> SenroUsecaser::Result[Output]
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
# Inferred::ServiceProvider → namespace "inferred" として推論
|
|
274
|
+
module Inferred
|
|
275
|
+
class ServiceProvider < SenroUsecaser::Provider
|
|
276
|
+
# : (SenroUsecaser::Container) -> void
|
|
277
|
+
def register: (SenroUsecaser::Container) -> void
|
|
278
|
+
end
|
|
279
|
+
end
|