custom_arrays/model/service/
mod.rs
1use crate::model::endpoint_type::Endpoint;
2use diesel::{AsChangeset, Insertable, Queryable, Selectable};
3
4mod service_impl;
5
6#[derive(Debug, Clone, Queryable, Selectable)]
7#[diesel(table_name= crate::schema::smdb::service, primary_key(service_id))]
8pub struct Service {
9 pub service_id: i32,
10 pub name: String,
11 pub version: i32,
12 pub online: bool,
13 pub description: String,
14 pub health_check_uri: String,
15 pub base_uri: String,
16 pub dependencies: Vec<Option<i32>>,
17 pub endpoints: Vec<Option<Endpoint>>,
18}
19
20#[derive(Debug, Clone, Queryable, Insertable)]
21#[diesel(table_name= crate::schema::smdb::service, primary_key(service_id))]
22pub struct CreateService {
23 pub service_id: i32,
24 pub name: String,
25 pub version: i32,
26 pub online: bool,
27 pub description: String,
28 pub health_check_uri: String,
29 pub base_uri: String,
30 pub dependencies: Vec<Option<i32>>,
31 pub endpoints: Vec<Option<Endpoint>>,
32}
33
34impl CreateService {
35 #[allow(clippy::too_many_arguments)]
36 pub fn new(
37 service_id: i32,
38 name: String,
39 version: i32,
40 online: bool,
41 description: String,
42 health_check_uri: String,
43 base_uri: String,
44 dependencies: Vec<Option<i32>>,
45 endpoints: Vec<Option<Endpoint>>,
46 ) -> Self {
47 Self {
48 service_id,
49 name,
50 version,
51 online,
52 description,
53 health_check_uri,
54 base_uri,
55 dependencies,
56 endpoints,
57 }
58 }
59}
60
61#[derive(Debug, Clone, Queryable, Insertable, AsChangeset)]
62#[diesel(table_name=crate::schema::smdb::service)]
63pub struct UpdateService {
64 pub name: Option<String>,
65 pub version: Option<i32>,
66 pub online: Option<bool>,
67 pub description: Option<String>,
68 pub health_check_uri: Option<String>,
69 pub base_uri: Option<String>,
70 pub dependencies: Option<Vec<Option<i32>>>,
71 pub endpoints: Option<Vec<Option<Endpoint>>>,
72}
73
74impl UpdateService {
75 #[allow(clippy::too_many_arguments)]
76 pub fn new(
77 name: Option<String>,
78 version: Option<i32>,
79 online: Option<bool>,
80 description: Option<String>,
81 health_check_uri: Option<String>,
82 base_uri: Option<String>,
83 dependencies: Option<Vec<Option<i32>>>,
84 endpoints: Option<Vec<Option<Endpoint>>>,
85 ) -> Self {
86 Self {
87 name,
88 version,
89 online,
90 description,
91 health_check_uri,
92 base_uri,
93 dependencies,
94 endpoints,
95 }
96 }
97}