holger_ron/repository/
mod.rs1mod types;
2
3use std::sync::Arc;
4use serde::{Deserialize, Serialize};
5use holger_rust_repository::RustRepo;
6use holger_traits::RepositoryBackendTrait;
7use crate::{ExposedEndpoint, StorageEndpoint};
8
9#[derive(Serialize, Deserialize)]
10pub struct Repository {
11 pub ron_name: String,
13 pub ron_repo_type: String, pub ron_upstreams: Vec<String>, pub ron_in: Option<RepositoryIO>,
16 pub ron_out: Option<RepositoryIO>,
17
18 #[serde(skip_serializing, skip_deserializing, default)]
20 pub backend_repository: Option<Arc<dyn RepositoryBackendTrait>>,
21
22
23
24 #[serde(skip_serializing, skip_deserializing, default)]
25 pub wired_upstreams: Vec<*const Repository>, }
27impl Repository {
28 pub fn backend_from_config(&mut self) -> anyhow::Result<()> {
29 match self.ron_repo_type.as_str() {
30 "rust" => {
31 self.backend_repository = Some(Arc::new(RustRepo {
32 name: self.ron_name.clone(),
33 artifacts: vec![],
34 }));
35 Ok(())
36 }
37 other => anyhow::bail!("Unsupported repository type: {}", other),
38 }
39 }
40
41}
42
43
44
45
46#[derive(Serialize, Deserialize)]
47pub struct RepositoryIO {
48 pub ron_storage_endpoint: String,
49 pub ron_exposed_endpoint: String,
50
51
52 #[serde(skip_serializing, skip_deserializing, default = "std::ptr::null")]
53 pub wired_storage: *const StorageEndpoint,
54 #[serde(skip_serializing, skip_deserializing, default = "std::ptr::null")]
55 pub wired_exposed: *const ExposedEndpoint,
56}