1#![forbid(unsafe_code)]
2
3macro_rules! new_uuid {
5 ($name:ident) => {
6 #[derive(
7 Debug,
8 Copy,
9 Clone,
10 PartialEq,
11 Eq,
12 Hash,
13 PartialOrd,
14 Ord,
15 serde::Serialize,
16 serde::Deserialize,
17 )]
18 #[serde(transparent)]
19 pub struct $name(pub Uuid);
20
21 impl<DB: sqlx::Database> sqlx::Type<DB> for $name
22 where
23 Uuid: sqlx::Type<DB>,
24 {
25 fn type_info() -> <DB as sqlx::Database>::TypeInfo {
26 Uuid::type_info()
27 }
28 }
29
30 impl<'r, DB: sqlx::Database> sqlx::Decode<'r, DB> for $name
31 where
32 Uuid: sqlx::Decode<'r, DB>,
33 {
34 fn decode(
35 value: DB::ValueRef<'r>,
36 ) -> std::result::Result<Self, sqlx::error::BoxDynError> {
37 Uuid::decode(value).map(Self)
38 }
39 }
40
41 impl<'q, DB: sqlx::Database> sqlx::Encode<'q, DB> for $name
42 where
43 Uuid: sqlx::Encode<'q, DB>,
44 {
45 fn encode_by_ref(
46 &self,
47 buf: &mut DB::ArgumentBuffer<'q>,
48 ) -> Result<sqlx::encode::IsNull, Box<(dyn std::error::Error + Send + Sync + 'static)>>
49 {
50 self.0.encode_by_ref(buf)
51 }
52 }
53 };
54}
55
56pub mod api;
57pub mod record;
58pub mod shell;
59pub mod utils;