mirror of
https://github.com/Lumither/nocturne.git
synced 2026-10-17 18:36:21 +00:00
feat(blog::components::check_update) add apply.rs
This commit is contained in:
7 files changed
+61
-18
No files matched your search
@@ -0,0 +1,39 @@
|
||||
use crate::modules::blog::components::check_update::changes::{
|
||||
Change, Create, Delete, Move, Update,
|
||||
};
|
||||
|
||||
use futures::{
|
||||
FutureExt,
|
||||
future::{BoxFuture, join_all},
|
||||
};
|
||||
use sqlx::PgPool;
|
||||
|
||||
pub async fn apply_deltas(db_conn: &PgPool, changes: Vec<Change>) {
|
||||
let handlers = changes
|
||||
.into_iter()
|
||||
.map(|change| match change {
|
||||
Change::Delete(del) => handle_delete(db_conn, del).boxed(),
|
||||
Change::Move(mv) => handle_move(db_conn, mv).boxed(),
|
||||
Change::Update(update) => handle_update(db_conn, update).boxed(),
|
||||
Change::Create(create) => handle_create(db_conn, create).boxed(),
|
||||
})
|
||||
.collect::<Vec<BoxFuture<'_, ()>>>();
|
||||
|
||||
join_all(handlers).await;
|
||||
}
|
||||
|
||||
async fn handle_delete(db: &PgPool, del: Delete) {
|
||||
todo!()
|
||||
}
|
||||
|
||||
async fn handle_move(db: &PgPool, mv: Move) {
|
||||
todo!()
|
||||
}
|
||||
|
||||
async fn handle_update(db: &PgPool, update: Update) {
|
||||
todo!()
|
||||
}
|
||||
|
||||
async fn handle_create(db: &PgPool, create: Create) {
|
||||
todo!()
|
||||
}
|
||||
@@ -11,11 +11,14 @@ use crate::{
|
||||
};
|
||||
use macros::panic_with_log;
|
||||
|
||||
use crate::modules::blog::components::check_update::apply::apply_deltas;
|
||||
use sqlx::PgPool;
|
||||
use tracing::{trace, warn, Level};
|
||||
use tracing::log::error;
|
||||
use tracing::{Level, trace, warn};
|
||||
|
||||
// mod error;
|
||||
// mod index;
|
||||
mod apply;
|
||||
mod changes;
|
||||
mod error;
|
||||
mod pull;
|
||||
@@ -85,7 +88,10 @@ async fn workflow(args: Arc<Args>) {
|
||||
.await
|
||||
{
|
||||
Ok(updates) => updates,
|
||||
Err(_) => return,
|
||||
Err(e) => {
|
||||
error!("delta parsing error: {}", e);
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
if deltas.is_empty() {
|
||||
@@ -93,5 +99,5 @@ async fn workflow(args: Arc<Args>) {
|
||||
return;
|
||||
}
|
||||
|
||||
// todo: load delta to database
|
||||
apply_deltas(&args.db_connection, deltas).await;
|
||||
}
|
||||
@@ -1,16 +1,14 @@
|
||||
use std::collections::HashMap;
|
||||
use std::path::PathBuf;
|
||||
use std::{collections::HashMap, path::PathBuf};
|
||||
|
||||
use crate::{
|
||||
modules::blog::components::check_update::{
|
||||
changes::{Change, Create, Delete, Update},
|
||||
changes::{Change, Create, CreateDelete2UpdateSlot, Delete, Update},
|
||||
error::Error,
|
||||
},
|
||||
utils::{git, git::FileDelta},
|
||||
};
|
||||
use markdown::MdFile;
|
||||
|
||||
use crate::modules::blog::components::check_update::changes::CreateDelete2UpdateSlot;
|
||||
use git2::{Delta, Repository};
|
||||
use tracing::error;
|
||||
use uuid::Uuid;
|
||||
|
||||
Reference in new issue
Block a user