fix: add language to cache key
This commit is contained in:
@@ -62,26 +62,26 @@ fn render_template(template_name: &str, file: &NamedTempFile, tera: NanoTera, cv
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
#[get("/cv/<username>/<language>/output.pdf?<force_rebuild>")]
|
||||
pub async fn render_pdf_cv(username: &str, tera: NanoTera, tracing: TracingSpan, request_client: OtelReqwestClient,
|
||||
cv_config: &State<CVBackendConfig>, language: RequestLanguage, browser: BrowserHolder, cache: &State<NanoCache<String, PdfStream>>,
|
||||
cv_config: &State<CVBackendConfig>, language: RequestLanguage, browser: BrowserHolder, cache: &State<NanoCache<(RequestLanguage, String), PdfStream>>,
|
||||
force_rebuild: Option<bool>) -> Result<PdfStream, Status> {
|
||||
async move {
|
||||
match fetch_cv_data_from_backend(&cv_config.cv_backend_path, &username.to_string(), &request_client.0).await {
|
||||
Ok(cv_data) => {
|
||||
// TODO: CV hasher
|
||||
let data = json!(cv_data).to_string();
|
||||
match cache.get(&data, force_rebuild).await {
|
||||
match cache.get(&(language.clone(), data.clone()), force_rebuild).await {
|
||||
Some(data) => {
|
||||
Ok(data.clone())
|
||||
}
|
||||
None => {
|
||||
let file = tempfile::Builder::new().suffix(".html").tempfile().unwrap();
|
||||
render_template("two_column", &file, tera, cv_data, language.language);
|
||||
render_template("two_column", &file, tera, cv_data, language.clone().language);
|
||||
let span = info_span!("render_pdf", username = username);
|
||||
let pdf = span.in_scope(||{
|
||||
generate_pdf(browser.browser, &file)
|
||||
});
|
||||
let result = PdfStream::new(pdf);
|
||||
cache.insert(data, result.clone()).await;
|
||||
cache.insert((language.clone(), data), result.clone()).await;
|
||||
Ok(result)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user