diff --git a/src/lib.rs b/src/lib.rs index c2760f8..d6aa99c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,6 +25,7 @@ pub mod identities; pub mod issue; pub mod label; pub mod milestone; +pub mod project; pub mod reaction; pub mod repository; pub mod topic; @@ -35,6 +36,7 @@ pub use identities::Identities; pub use issue::Issue; pub use label::Label; pub use milestone::Milestone; +pub use project::Project; pub use reaction::Reaction; pub use repository::Repository; pub use topic::Topic; diff --git a/src/project.rs b/src/project.rs new file mode 100644 index 0000000..476895c --- /dev/null +++ b/src/project.rs @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2023 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +//! A software project that resides on a forge (Gitea, GitLab, etc.). +use serde::{Deserialize, Serialize}; + +use crate::Repository; + +/// A software project that resides on a forge (Gitea, GitLab, etc.). +#[derive(Clone, Debug, Serialize, Deserialize, Default, Eq, PartialEq)] +pub struct Project { + /// Unique identifier of the project + pub index: usize, + + /// Name of the project, relative to the owner + pub name: String, + + /// Owner of the project, either a forge user or an organization. + pub owner: String, + + /// True if the visibility of the project is not public. + pub is_private: bool, + + /// True if it is a mirror of a project residing on another forge + pub is_mirror: bool, + + /// Long, multiline, description of the project. + pub description: String, + + /// URL to clone the git repository of the project. + pub clone_url: String, + + /// URL of the homepage of the project + pub original_url: String, + + /// Name of the default branch in the git repository + pub default_branch: String, + + pub repositories: Vec, +}