Mountain/Vine/Server/Notification/
RegisterScmResourceGroup.rs1#![allow(non_snake_case)]
2use serde_json::{Value, json};
22use tauri::Emitter;
23use CommonLibrary::SourceControlManagement::SourceControlManagementProvider::SourceControlManagementProvider;
24
25use crate::{Vine::Server::MountainVinegRPCService::MountainVinegRPCService, dev_log};
26
27pub async fn RegisterScmResourceGroup(Service:&MountainVinegRPCService, Parameter:&Value) {
28 let ScmHandle = Parameter
30 .get("scmHandle")
31 .or_else(|| Parameter.get("scm_handle"))
32 .and_then(Value::as_u64)
33 .unwrap_or(0) as u32;
34 let GroupHandleStr = Parameter
35 .get("groupHandle")
36 .or_else(|| Parameter.get("group_handle"))
37 .and_then(Value::as_str)
38 .unwrap_or("")
39 .to_string();
40 let GroupId = Parameter
41 .get("groupId")
42 .or_else(|| Parameter.get("group_id"))
43 .and_then(Value::as_str)
44 .unwrap_or("")
45 .to_string();
46 let Label = Parameter.get("label").and_then(Value::as_str).unwrap_or(&GroupId).to_string();
47
48 if GroupId.is_empty() {
49 dev_log!("provider-register", "[ProviderRegister] scm-group skip: missing group_id");
50 return;
51 }
52
53 let GroupData = json!({
60 "providerHandle": ScmHandle,
61 "groupId": &GroupId,
62 "label": &Label,
63 "resourceStates": [],
64 });
65 if let Err(Error) = Service
66 .RunTime()
67 .Environment
68 .UpdateSourceControlGroup(ScmHandle, GroupData)
69 .await
70 {
71 dev_log!(
72 "grpc",
73 "warn: [Scm] UpdateSourceControlGroup (seed) failed scm={} group={}: {}",
74 ScmHandle,
75 GroupId,
76 Error
77 );
78 }
79
80 let _ = Service.ApplicationHandle().emit(
81 "sky://scm/registerGroup",
82 json!({
83 "scmHandle": ScmHandle,
84 "groupHandle": &GroupHandleStr,
85 "groupId": &GroupId,
86 "label": &Label,
87 }),
88 );
89
90 dev_log!(
91 "grpc",
92 "[Scm] register group scm_handle={} group_id={} label={}",
93 ScmHandle,
94 GroupId,
95 Label
96 );
97}