1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use std::error::Error;
4use std::fmt;
5use utoipa::ToSchema;
6
7#[macro_export]
8macro_rules! meta {
9 ($name: expr) => {
10 Meta {
11 name: $name.to_string(),
12 message: "".to_string(),
13 data: None,
14 }
15 .into()
16 };
17 ($name: expr, $message: expr) => {
18 Meta {
19 name: $name.to_string(),
20 message: $message.to_string(),
21 data: None,
22 }
23 .into()
24 };
25 ($name: expr, $message: expr, $data: expr) => {
26 Meta {
27 name: $name.to_string(),
28 message: $message.to_string(),
29 data: Some($data),
30 }
31 .into()
32 };
33}
34
35pub type R<T> = std::result::Result<T, Meta>;
36
37#[derive(Debug, Serialize, Deserialize, ToSchema)]
38pub struct Meta {
39 pub name: String,
40 pub message: String,
41 pub data: Option<Value>,
42}
43
44unsafe impl Send for Meta {}
45
46unsafe impl Sync for Meta {}
47
48impl Error for Meta {}
49
50impl fmt::Display for Meta {
51 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
52 write!(f, "Meta: name={}, message={}, data: {:?}", self.name, self.message, self.data)
53 }
54}