feat(export): add issues issue_watch export
zhenyi committed
Added lib/export/issues/issue_watch.rs lib/export/issues/issue_watch.rs +41 −0 View lib/export/issues/issue_watch.rs
@@ -0,0 +1,41 @@
1use db::issue::issue_watch as watch_entity;
2use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4use time::format_description::well_known::Rfc3339;
5use utoipa::ToSchema;
6use uuid::Uuid;
7
8fn fmt_ts(ts: OffsetDateTime) -> String {
9 ts.format(&Rfc3339).unwrap_or_default()
10}
11fn fmt_ts_opt(ts: Option<OffsetDateTime>) -> Option<String> {
12 ts.map(fmt_ts)
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
16pub struct WatchView {
17 pub id: Uuid,
18 pub issue_id: Option<Uuid>,
19 pub user_id: Uuid,
20 pub mode: String,
21 pub created_at: String,
22 pub updated_at: Option<String>,
23}
24
25impl From<watch_entity::Model> for WatchView {
26 fn from(m: watch_entity::Model) -> Self {
27 Self {
28 id: m.id,
29 issue_id: m.issue_id,
30 user_id: m.user_id,
31 mode: format!("{:?}", m.mode),
32 created_at: fmt_ts(m.created_at),
33 updated_at: fmt_ts_opt(m.updated_at),
34 }
35 }
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
39pub struct UpsertWatchOption {
40 pub mode: String,
41}
No newline at end of file