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}