use serde::{Deserialize, Serialize};
use crate::CursorPage;
pub type RuntimeTemplatePage = CursorPage<RuntimeTemplate>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct RuntimeTemplate {
pub id: String,
pub name: String,
pub repository_url: String,
pub git_ref: String,
pub subdirectory: Option<String>,
pub description: Option<String>,
pub enabled: bool,
pub version: i64,
pub created_at: String,
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CreateRuntimeTemplateRequest {
pub name: String,
pub repository_url: String,
#[serde(default = "default_git_ref")]
pub git_ref: String,
pub subdirectory: Option<String>,
pub description: Option<String>,
#[serde(default = "enabled_by_default")]
pub enabled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct UpdateRuntimeTemplateRequest {
pub name: String,
pub repository_url: String,
pub git_ref: String,
pub subdirectory: Option<String>,
pub description: Option<String>,
pub enabled: bool,
pub expected_version: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct DeleteRuntimeTemplateRequest {
pub expected_version: i64,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum GitLabVisibility {
#[default]
Private,
Internal,
Public,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct InitializeRuntimeTemplateRequest {
pub namespace: String,
pub project_name: String,
pub project_path: Option<String>,
pub description: Option<String>,
#[serde(default)]
pub visibility: GitLabVisibility,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct RuntimeRepository {
pub project_id: u64,
pub path_with_namespace: String,
pub repository_url: String,
pub default_branch: Option<String>,
}
fn default_git_ref() -> String {
"main".to_string()
}
const fn enabled_by_default() -> bool {
true
}