1use derive_empty_traits::EmptyTraits;
2use resolver_api::derive::Request;
3use serde::{Deserialize, Serialize};
4use typeshare::typeshare;
5
6use crate::entities::{
7 stack::{
8 Stack, StackActionState, StackListItem, StackQuery, StackService,
9 },
10 update::Log,
11 SearchCombinator, U64,
12};
13
14use super::MonitorReadRequest;
15
16#[typeshare]
20#[derive(
21 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
22)]
23#[empty_traits(MonitorReadRequest)]
24#[response(GetStackResponse)]
25pub struct GetStack {
26 #[serde(alias = "id", alias = "name")]
28 pub stack: String,
29}
30
31#[typeshare]
32pub type GetStackResponse = Stack;
33
34#[typeshare]
38#[derive(
39 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
40)]
41#[empty_traits(MonitorReadRequest)]
42#[response(ListStackServicesResponse)]
43pub struct ListStackServices {
44 #[serde(alias = "id", alias = "name")]
46 pub stack: String,
47}
48
49#[typeshare]
50pub type ListStackServicesResponse = Vec<StackService>;
51
52#[typeshare]
56#[derive(
57 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
58)]
59#[empty_traits(MonitorReadRequest)]
60#[response(GetStackServiceLogResponse)]
61pub struct GetStackServiceLog {
62 #[serde(alias = "id", alias = "name")]
64 pub stack: String,
65 pub service: String,
67 #[serde(default = "default_tail")]
71 pub tail: U64,
72}
73
74fn default_tail() -> u64 {
75 50
76}
77
78#[typeshare]
79pub type GetStackServiceLogResponse = Log;
80
81#[typeshare]
88#[derive(
89 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
90)]
91#[empty_traits(MonitorReadRequest)]
92#[response(SearchStackServiceLogResponse)]
93pub struct SearchStackServiceLog {
94 #[serde(alias = "id", alias = "name")]
96 pub stack: String,
97 pub service: String,
99 pub terms: Vec<String>,
101 #[serde(default)]
106 pub combinator: SearchCombinator,
107 #[serde(default)]
109 pub invert: bool,
110}
111
112#[typeshare]
113pub type SearchStackServiceLogResponse = Log;
114
115#[typeshare]
120#[derive(
121 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
122)]
123#[empty_traits(MonitorReadRequest)]
124#[response(ListCommonStackExtraArgsResponse)]
125pub struct ListCommonStackExtraArgs {
126 #[serde(default)]
128 pub query: StackQuery,
129}
130
131#[typeshare]
132pub type ListCommonStackExtraArgsResponse = Vec<String>;
133
134#[typeshare]
138#[derive(
139 Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
140)]
141#[empty_traits(MonitorReadRequest)]
142#[response(ListStacksResponse)]
143pub struct ListStacks {
144 #[serde(default)]
146 pub query: StackQuery,
147}
148
149#[typeshare]
150pub type ListStacksResponse = Vec<StackListItem>;
151
152#[typeshare]
156#[derive(
157 Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
158)]
159#[empty_traits(MonitorReadRequest)]
160#[response(ListFullStacksResponse)]
161pub struct ListFullStacks {
162 #[serde(default)]
164 pub query: StackQuery,
165}
166
167#[typeshare]
168pub type ListFullStacksResponse = Vec<Stack>;
169
170#[typeshare]
174#[derive(
175 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
176)]
177#[empty_traits(MonitorReadRequest)]
178#[response(GetStackActionStateResponse)]
179pub struct GetStackActionState {
180 #[serde(alias = "id", alias = "name")]
182 pub stack: String,
183}
184
185#[typeshare]
186pub type GetStackActionStateResponse = StackActionState;
187
188#[typeshare]
193#[derive(
194 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
195)]
196#[empty_traits(MonitorReadRequest)]
197#[response(GetStacksSummaryResponse)]
198pub struct GetStacksSummary {}
199
200#[typeshare]
202#[derive(Serialize, Deserialize, Debug, Clone, Default)]
203pub struct GetStacksSummaryResponse {
204 pub total: u32,
206 pub running: u32,
208 pub paused: u32,
210 pub stopped: u32,
212 pub restarting: u32,
214 pub dead: u32,
216 pub created: u32,
218 pub removing: u32,
220 pub unhealthy: u32,
222 pub down: u32,
224 pub unknown: u32,
226}
227
228#[typeshare]
232#[derive(
233 Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
234)]
235#[empty_traits(MonitorReadRequest)]
236#[response(GetStackWebhooksEnabledResponse)]
237pub struct GetStackWebhooksEnabled {
238 #[serde(alias = "id", alias = "name")]
240 pub stack: String,
241}
242
243#[typeshare]
245#[derive(Serialize, Deserialize, Debug, Clone)]
246pub struct GetStackWebhooksEnabledResponse {
247 pub managed: bool,
250 pub refresh_enabled: bool,
252 pub deploy_enabled: bool,
254}