Skip to content
Clone
951a522
91 lines 1.8 KB Rust
use std::sync::Arc;
use std::time::Duration;
use export::AppState;
use kenshell::KenShellClient;
use sea_orm::DatabaseConnection;
use crate::context::facade::GitContext;
use crate::rpcgit::GitBaby;
#[derive(Clone)]
pub struct GitService {
pub state: AppState,
ks: Arc<KenShellClient>,
}
impl GitService {
pub fn new(state: AppState) -> Self {
let cfg = &state.config.git;
let timeout = Duration::from_secs(cfg.kenshell_timeout_secs.max(1));
let ks = KenShellClient::connect_with_key(
&cfg.kenshell_endpoint,
&cfg.kenshell_rpc_key,
timeout,
)
.unwrap_or_else(|error| {
panic!(
"invalid git.kenshell_endpoint `{}`: {error}",
cfg.kenshell_endpoint
)
});
Self {
state,
ks: Arc::new(ks),
}
}
pub fn ks(&self) -> &KenShellClient {
&self.ks
}
pub fn baby(&self, ctx: &GitContext) -> GitBaby {
GitBaby::new(Arc::new(ctx.clone()))
}
pub fn db_write(&self) -> &DatabaseConnection {
self.state.database.write()
}
pub fn db_read(&self) -> &DatabaseConnection {
self.state.database.read()
}
}
pub mod analysis;
pub mod archives;
pub mod blame;
pub mod blobs;
pub mod branches;
pub mod cache;
pub mod clone;
pub mod code_comments;
pub mod commits;
pub mod conflicts;
pub mod content;
pub mod context;
pub mod diffs;
pub mod hooks;
pub mod lfs;
pub mod licenses;
pub mod logs;
pub mod maintenance;
pub mod merge;
pub mod packs;
pub mod patches;
pub mod path_log;
pub mod pdf;
pub mod protection;
pub mod refs;
pub mod releases;
pub mod remotes;
pub mod repos;
pub mod rpc;
pub mod signatures;
pub mod stars;
pub mod submodules;
pub mod tags;
pub mod topics;
pub mod trees;
pub mod watches;
pub mod whitelists;