MCPcopy Index your code
hub / github.com/3eif/gitmotion / start_gource

Function start_gource

api/src/main.rs:131–187  ·  view source on GitHub ↗
(
    repo_request: web::Json<GourceRequest>,
    job_store: web::Data<JobStore>,
)

Source from the content-addressed store, hash-verified

129}
130
131async fn start_gource(
132 repo_request: web::Json<GourceRequest>,
133 job_store: web::Data<JobStore>,
134) -> impl Responder {
135 let job_id = Uuid::new_v4().to_string();
136 log_message(
137 log::Level::Info,
138 &format!("Starting new job with ID: {}", job_id),
139 None,
140 );
141
142 let repo_url = repo_request.repo_url.clone();
143 let access_token = repo_request.access_token.clone();
144 let settings = repo_request.settings.clone().unwrap_or_default();
145
146 {
147 let mut store = job_store.lock().await;
148 store.insert(
149 job_id.clone(),
150 JobStatus {
151 step: ProgressStep::InitializingProject,
152 video_url: None,
153 repo_url: repo_url.clone(),
154 error: None,
155 settings: settings.clone(),
156 },
157 );
158 }
159
160 let job_store_clone = job_store.clone();
161 let job_id_clone = job_id.clone();
162
163 tokio::spawn(async move {
164 if let Err(e) = process_gource(
165 repo_url,
166 access_token,
167 Some(settings),
168 job_id_clone.clone(),
169 job_store_clone.clone(),
170 )
171 .await
172 {
173 log_message(
174 log::Level::Error,
175 &format!("Job failed: {}", e),
176 Some(&job_id_clone),
177 );
178 let mut store = job_store_clone.lock().await;
179 if let Some(status) = store.get_mut(&job_id_clone) {
180 status.step = ProgressStep::GeneratingVisualization;
181 status.error = Some(e.to_string());
182 }
183 }
184 });
185
186 HttpResponse::Ok().json(GourceResponse { job_id })
187}
188

Callers

nothing calls this directly

Calls 2

log_messageFunction · 0.85
process_gourceFunction · 0.85

Tested by

no test coverage detected