args_api/resource/
common.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize, de::DeserializeOwned};
3use uuid::Uuid;
4
5use crate::ApiResource;
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13pub struct Page<T> {
14 pub data: Vec<T>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub next_cursor: Option<String>,
17}
18
19impl<T: ApiResource + DeserializeOwned> ApiResource for Page<T> {}
20
21#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
23pub struct AuthorResource {
24 pub id: Uuid,
25 pub name: String,
26 #[serde(default, skip_serializing_if = "Option::is_none")]
27 pub image_updated_at: Option<DateTime<Utc>>,
28}
29
30#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
32#[serde(rename_all = "snake_case")]
33pub enum RepositoryRole {
34 Maintainer,
35 User,
36}
37
38#[derive(ApiResource, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
42#[serde(rename_all = "lowercase")]
43pub enum OrganizationRole {
44 Admin,
45 Member,
46 User,
47}