Skip to content
Extraits de code Groupes Projets
Non vérifiée Valider 8a5e722a rédigé par Kubat's avatar Kubat
Parcourir les fichiers

REPO: Fix the repo-downloader with the updated NKDB

parent bfe1187b
Branches
Aucune étiquette associée trouvée
2 requêtes de fusion!205misc debug and harderning, mostly related to repo syncing,!197Draft: Refactor the whole code.
...@@ -13,8 +13,8 @@ use kurisu_api::{ ...@@ -13,8 +13,8 @@ use kurisu_api::{
use lektor_nkdb::{DatabaseStorage, KId, RemoteKId, UpdateHandler}; use lektor_nkdb::{DatabaseStorage, KId, RemoteKId, UpdateHandler};
use lektor_utils::config::LektorRepoConfig; use lektor_utils::config::LektorRepoConfig;
use reqwest::{ use reqwest::{
header::{self, HeaderName, HeaderValue}, header::{self, HeaderName, HeaderValue}, Client, Method, Request, RequestBuilder,
Client, Method, Request, RequestBuilder, Url, Url,
}; };
use serde::de::DeserializeOwned; use serde::de::DeserializeOwned;
use std::cmp::Ordering; use std::cmp::Ordering;
...@@ -80,7 +80,8 @@ pub async fn download_kara<Storage: DatabaseStorage>( ...@@ -80,7 +80,8 @@ pub async fn download_kara<Storage: DatabaseStorage>(
handle: &UpdateHandler<'_, Storage>, handle: &UpdateHandler<'_, Storage>,
(kid, rkid, sha256): (KId, RemoteKId, SHA256), (kid, rkid, sha256): (KId, RemoteKId, SHA256),
) -> Result<()> { ) -> Result<()> {
let mut stream = std::pin::pin!(stream::iter( let mut stream = std::pin::pin!(
stream::iter(
// Build the urls we will try // Build the urls we will try
config config
.urls .urls
...@@ -122,7 +123,8 @@ pub async fn download_kara<Storage: DatabaseStorage>( ...@@ -122,7 +123,8 @@ pub async fn download_kara<Storage: DatabaseStorage>(
handle.submit_kara(file, kid, sha256).await?; handle.submit_kara(file, kid, sha256).await?;
Ok(()) Ok(())
} }
})); })
);
loop { loop {
if let Some(x) = stream.next().await { if let Some(x) = stream.next().await {
...@@ -148,18 +150,13 @@ async fn download_from_urls<T: DeserializeOwned>(urls: Vec<String>) -> Option<T> ...@@ -148,18 +150,13 @@ async fn download_from_urls<T: DeserializeOwned>(urls: Vec<String>) -> Option<T>
.ok()?; .ok()?;
if r.status().is_success() { if r.status().is_success() {
match r.json::<T>().await { r.json::<T>()
Ok(list) => { .await
log::info!("success fetching {url}, keeping it..."); .inspect(|_| log::info!("success fetching {url}, keeping it..."))
Some(list) .map_err(|e| log::info!("error decoding data from {url} ({e}) skipping it..."))
} .ok()
Err(e) => {
log::info!("error decoding data from {url} ({e}) skipping it...");
None
}
}
} else { } else {
log::info!( log::warn!(
"error while fetching {url} ({}), skipping it...", "error while fetching {url} ({}), skipping it...",
r.text().await.unwrap_or(String::from("unknown error")) r.text().await.unwrap_or(String::from("unknown error"))
); );
......
...@@ -4,11 +4,11 @@ mod downloader; ...@@ -4,11 +4,11 @@ mod downloader;
mod routes; mod routes;
use crate::downloader::*; use crate::downloader::*;
use anyhow::{Result, bail}; use anyhow::{bail, Result};
use futures::future::join_all; use futures::future::join_all;
use kurisu_api::{ use kurisu_api::{
v2::{Infos, Kara, KaraList},
SHA256, SHA256,
v2::{Infos, KaraList},
}; };
use lektor_nkdb::{DatabaseStorage, UpdateHandler}; use lektor_nkdb::{DatabaseStorage, UpdateHandler};
use lektor_nkdb::{KId, RemoteKId}; use lektor_nkdb::{KId, RemoteKId};
...@@ -76,17 +76,17 @@ impl Repo { ...@@ -76,17 +76,17 @@ impl Repo {
vec![] vec![]
} }
} }
.into_iter() .into_iter();
let updated_list = updated_list
.map(|kara| async { .map(|kara| async {
let remote_id = kara.id; let Kara{id, file_hash, filesize, ..} = kara;
let hash = kara.file_hash;
let filesize = kara.filesize;
log::trace!("got kara from {}: {kara:#?}", repo_name); log::trace!("got kara from {}: {kara:#?}", repo_name);
if let Some((kid, rkid)) = handler.add_kara_v2(repo_name, kara).await { if let Some((kid, rkid)) = handler.add_kara_v2(repo_name, kara).await {
log::trace!("got from {repo_name}: {kid} / {rkid} is new (and non-virtual) or had a file update"); log::trace!("got from {repo_name}: {kid} / {rkid} is new (and non-virtual) or had a file update");
Some((kid, rkid, hash, filesize)) Some((kid, rkid, file_hash, filesize))
} else { } else {
log::trace!("got from {repo_name}: kara {remote_id} is the same or only metadata got changed"); log::trace!("got from {repo_name}: kara {id} is the same or only metadata got changed");
None None
} }
}); });
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter