feat(issues): add issues OpenAPI aggregator
zhenyi committed
Added lib/issues/handler/openapi.rs lib/issues/handler/openapi.rs +189 −0 View lib/issues/handler/openapi.rs
@@ -0,0 +1,189 @@
1use utoipa::OpenApi;
2
3use crate::features::comment;
4use crate::features::issue;
5use crate::features::issue_attachment;
6use crate::features::issue_content_history;
7use crate::features::issue_dependency;
8use crate::features::issue_event;
9use crate::features::issue_member;
10use crate::features::issue_pin;
11use crate::features::issue_reaction;
12use crate::features::issue_repo_rel;
13use crate::features::issue_stopwatch;
14use crate::features::issue_tracked_time;
15use crate::features::issue_user;
16use crate::features::issue_watch;
17use crate::features::issues;
18use crate::features::label;
19use crate::features::milestone;
20
21#[derive(OpenApi)]
22#[openapi(
23 info(
24 title = "lib/issues",
25 version = env!("CARGO_PKG_VERSION"),
26 description = "Issue tracking service (board / issue / comment / label / milestone)",
27 ),
28 paths(
29 crate::handler::issues::create::handler,
30 crate::handler::issues::list::handler,
31 crate::handler::issues::get::handler,
32 crate::handler::issues::update::handler,
33 crate::handler::issues::delete::handler,
34
35 crate::handler::issue::create::handler,
36 crate::handler::issue::get::handler,
37 crate::handler::issue::update::handler,
38 crate::handler::issue::delete::handler,
39 crate::handler::issue::close::handler,
40
41 crate::handler::comment::create::handler,
42 crate::handler::comment::list::handler,
43 crate::handler::comment::get::handler,
44 crate::handler::comment::update::handler,
45 crate::handler::comment::delete::handler,
46
47 crate::handler::label::create::handler,
48 crate::handler::label::list::handler,
49 crate::handler::label::get::handler,
50 crate::handler::label::update::handler,
51 crate::handler::label::delete::handler,
52 crate::handler::label::bind::handler,
53 crate::handler::label::unbind::handler,
54 crate::handler::label::list_for_issue::handler,
55
56 crate::handler::milestone::create::handler,
57 crate::handler::milestone::list::handler,
58 crate::handler::milestone::get::handler,
59 crate::handler::milestone::update::handler,
60 crate::handler::milestone::delete::handler,
61
62 crate::handler::issue_reaction::create::handler,
63 crate::handler::issue_reaction::create_comment::handler,
64 crate::handler::issue_reaction::delete::handler,
65 crate::handler::issue_reaction::list::handler,
66 crate::handler::issue_reaction::list_comment::handler,
67
68 crate::handler::issue_watch::get::handler,
69 crate::handler::issue_watch::upsert::handler,
70 crate::handler::issue_watch::delete::handler,
71
72 crate::handler::issue_member::create::handler,
73 crate::handler::issue_member::list::handler,
74 crate::handler::issue_member::delete::handler,
75
76 crate::handler::issue_pin::create::handler,
77 crate::handler::issue_pin::list::handler,
78 crate::handler::issue_pin::delete::handler,
79
80 crate::handler::issue_repo_rel::create::handler,
81 crate::handler::issue_repo_rel::list::handler,
82 crate::handler::issue_repo_rel::delete::handler,
83
84 crate::handler::issue_user::list::handler,
85 crate::handler::issue_user::update::handler,
86
87 crate::handler::issue_event::list::handler,
88
89 crate::handler::issue_dependency::create::handler,
90 crate::handler::issue_dependency::list::handler,
91 crate::handler::issue_dependency::delete::handler,
92
93 crate::handler::issue_content_history::list::handler,
94
95 crate::handler::issue_stopwatch::get::handler,
96 crate::handler::issue_stopwatch::start::handler,
97 crate::handler::issue_stopwatch::stop::handler,
98
99 crate::handler::issue_tracked_time::list::handler,
100
101 crate::handler::issue_attachment::upload::handler,
102 crate::handler::issue_attachment::list::handler,
103 crate::handler::issue_attachment::delete::handler,
104 ),
105 components(schemas(
106 issues::CollectionView,
107 issues::CollectionPage,
108 issues::CreateCollectionOption,
109 issues::UpdateCollectionOption,
110 issues::ListCollectionQuery,
111
112 issue::IssueView,
113 issue::IssuePage,
114 issue::IssueState,
115 issue::CreateIssueOption,
116 issue::UpdateIssueOption,
117 issue::CloseIssueOption,
118 issue::ListIssueQuery,
119
120 comment::CommentView,
121 comment::CommentPage,
122 comment::CreateCommentOption,
123 comment::UpdateCommentOption,
124 comment::ListCommentQuery,
125
126 label::LabelView,
127 label::LabelPage,
128 label::CreateLabelOption,
129 label::UpdateLabelOption,
130 label::ListLabelQuery,
131
132 milestone::MilestoneView,
133 milestone::MilestonePage,
134 milestone::CreateMilestoneOption,
135 milestone::UpdateMilestoneOption,
136 milestone::ListMilestoneQuery,
137
138 issue_reaction::ReactionScope,
139 issue_reaction::ReactionView,
140 issue_reaction::ReactionAggView,
141 issue_reaction::CreateReactionOption,
142 issue_reaction::ListReactionQuery,
143
144 issue_watch::WatchView,
145 issue_watch::UpsertWatchOption,
146
147 issue_member::MemberView,
148 issue_member::MemberPage,
149 issue_member::CreateMemberOption,
150 issue_member::ListMemberQuery,
151
152 issue_pin::PinView,
153 issue_pin::CreatePinOption,
154
155 issue_repo_rel::RepoRelView,
156 issue_repo_rel::CreateRepoRelOption,
157
158 issue_user::IssueUserView,
159 issue_user::UpdateIssueUserOption,
160
161 issue_event::EventView,
162 issue_event::EventPage,
163 issue_event::ListEventQuery,
164
165 issue_dependency::DependencyView,
166 issue_dependency::CreateDependencyOption,
167
168 issue_content_history::ContentHistoryView,
169 issue_content_history::ContentHistoryPage,
170 issue_content_history::ListContentHistoryQuery,
171
172 issue_stopwatch::StopwatchView,
173
174 issue_tracked_time::TrackedTimeView,
175 issue_tracked_time::TrackedTimePage,
176 issue_tracked_time::ListTrackedTimeQuery,
177
178 issue_attachment::AttachmentView,
179 issue_attachment::UploadAttachmentInput,
180 issue_attachment::AttachmentPage,
181 issue_attachment::ListAttachmentQuery,
182 )),
183 tags((name = "issues", description = "Issue tracking (lib/issues)"))
184)]
185pub struct IssuesApiDoc;
186
187pub fn build_openapi() -> utoipa::openapi::OpenApi {
188 <IssuesApiDoc as utoipa::OpenApi>::openapi()
189}
No newline at end of file