diff options
author | Pietro Albini <pietro@pietroalbini.org> | 2019-01-22 16:53:19 +0100 |
---|---|---|
committer | Pietro Albini <pietro@pietroalbini.org> | 2019-01-22 23:22:42 +0100 |
commit | 260a5c06d9fb856dc0f65d97ba83d76bd4aaa945 (patch) | |
tree | 590f2b82efbb70fabae592df804b0980c73a4595 /rust_team_data | |
parent | 9cec8b78f83aac75a2c503d46c8c2e914a27fb15 (diff) |
add static api and fix website data
Diffstat (limited to 'rust_team_data')
-rw-r--r-- | rust_team_data/Cargo.toml | 9 | ||||
-rw-r--r-- | rust_team_data/src/lib.rs | 1 | ||||
-rw-r--r-- | rust_team_data/src/v1.rs | 50 |
3 files changed, 60 insertions, 0 deletions
diff --git a/rust_team_data/Cargo.toml b/rust_team_data/Cargo.toml new file mode 100644 index 0000000..296c8d5 --- /dev/null +++ b/rust_team_data/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "rust_team_data" +version = "1.0.0" +authors = ["Pietro Albini <pietro@pietroalbini.org>"] +edition = "2018" + +[dependencies] +serde = { version = "1.0.85", features = ["derive"] } +indexmap = { version = "1.0.2", features = ["serde-1"] } diff --git a/rust_team_data/src/lib.rs b/rust_team_data/src/lib.rs new file mode 100644 index 0000000..a3a6d96 --- /dev/null +++ b/rust_team_data/src/lib.rs @@ -0,0 +1 @@ +pub mod v1; diff --git a/rust_team_data/src/v1.rs b/rust_team_data/src/v1.rs new file mode 100644 index 0000000..8ea29ee --- /dev/null +++ b/rust_team_data/src/v1.rs @@ -0,0 +1,50 @@ +use serde::{Serialize, Deserialize}; +use indexmap::IndexMap; + +pub static BASE_URL: &str = "http://localhost:8000/build/v1"; + +#[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum TeamKind { + Team, + WorkingGroup, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Team { + pub name: String, + pub kind: TeamKind, + pub subteam_of: Option<String>, + pub members: Vec<TeamMember>, + pub website_data: Option<TeamWebsite>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TeamMember { + pub name: String, + pub github: String, + pub is_lead: bool, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TeamWebsite { + pub name: String, + pub description: String, + pub page: String, + pub email: Option<String>, + pub repo: Option<String>, + pub discord: Option<DiscordInvite>, + pub weight: i64, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DiscordInvite { + pub channel: String, + pub url: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Teams { + #[serde(flatten)] + pub teams: IndexMap<String, Team>, +} |