use serde::Deserialize;
use crate::{DateTime, EventType, User};
pub trait AppEvent {
fn installation(&self) -> Option<u64> {
None
}
}
#[derive(
Deserialize, Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash,
)]
#[serde(rename_all = "snake_case")]
pub enum Permission {
Read,
Write,
}
#[derive(Deserialize, Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct InstallationPermissions {
pub issues: Permission,
pub contents: Permission,
pub pull_requests: Permission,
pub metadata: Permission,
}
#[derive(Deserialize, Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct Installation {
pub id: u64,
pub account: User,
pub repository_selection: String,
pub access_tokens_url: String,
pub repositories_url: String,
pub html_url: String,
pub app_id: u64,
pub target_id: u64,
pub target_type: String,
pub permissions: InstallationPermissions,
pub events: Vec<EventType>,
pub created_at: DateTime,
pub updated_at: DateTime,
pub single_file_name: Option<String>,
}