Skip to main content

zixcel_github/
execution_model.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{ConnectorError, GitHubAction, PermissionRequirement};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(deny_unknown_fields)]
7pub struct GitHubApiRequest {
8    pub schema: String,
9    pub request_id: String,
10    pub operation_id: String,
11    pub connection_ref: String,
12    pub owner: String,
13    pub repository: String,
14    pub action: GitHubAction,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
18pub struct RequestValidationReport {
19    pub schema: &'static str,
20    pub request_id: String,
21    pub operation_id: String,
22    pub valid: bool,
23    pub required_permission: PermissionRequirement,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq)]
27pub struct GitHubBackendReceipt {
28    pub provider_request_id: String,
29    pub remote_reference: String,
30    pub remote_digest_sha256: Option<String>,
31}
32
33#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
34pub struct GitHubApiReceipt {
35    pub schema: &'static str,
36    pub request_id: String,
37    pub operation_id: String,
38    pub owner: String,
39    pub repository: String,
40    pub permission: PermissionRequirement,
41    pub provider_request_id: String,
42    pub remote_reference: String,
43    pub remote_digest_sha256: Option<String>,
44}
45
46pub trait GitHubBackend {
47    fn perform(
48        &mut self,
49        request: &GitHubApiRequest,
50    ) -> Result<GitHubBackendReceipt, ConnectorError>;
51}