summaryrefslogtreecommitdiffstats
path: root/rust_team_data
diff options
context:
space:
mode:
authorPietro Albini <pietro@pietroalbini.org>2019-01-22 16:53:19 +0100
committerPietro Albini <pietro@pietroalbini.org>2019-01-22 23:22:42 +0100
commit260a5c06d9fb856dc0f65d97ba83d76bd4aaa945 (patch)
tree590f2b82efbb70fabae592df804b0980c73a4595 /rust_team_data
parent9cec8b78f83aac75a2c503d46c8c2e914a27fb15 (diff)
add static api and fix website data
Diffstat (limited to 'rust_team_data')
-rw-r--r--rust_team_data/Cargo.toml9
-rw-r--r--rust_team_data/src/lib.rs1
-rw-r--r--rust_team_data/src/v1.rs50
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>,
+}