zixcel_github/
execution_model.rs1use 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}