feat: customizable data storage path

This commit is contained in:
Per Stark
2025-05-09 23:28:36 +02:00
parent 89badb3bed
commit c49005c258
16 changed files with 261 additions and 40 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
use common::storage::db::SurrealDbClient;
use common::utils::template_engine::{ProvidesTemplateEngine, TemplateEngine};
use common::{create_template_engine, storage::db::ProvidesDb};
use common::{create_template_engine, storage::db::ProvidesDb, utils::config::AppConfig};
use std::sync::Arc;
use tracing::debug;
@@ -12,6 +12,7 @@ pub struct HtmlState {
pub openai_client: Arc<OpenAIClientType>,
pub templates: Arc<TemplateEngine>,
pub session_store: Arc<SessionStoreType>,
pub config: AppConfig,
}
impl HtmlState {
@@ -19,6 +20,7 @@ impl HtmlState {
db: Arc<SurrealDbClient>,
openai_client: Arc<OpenAIClientType>,
session_store: Arc<SessionStoreType>,
config: AppConfig,
) -> Result<Self, Box<dyn std::error::Error>> {
let template_engine = create_template_engine!("templates");
debug!("Template engine created for html_router.");
@@ -28,6 +30,7 @@ impl HtmlState {
openai_client,
session_store,
templates: Arc::new(template_engine),
config,
})
}
}

View File

@@ -39,7 +39,7 @@ pub async fn index_handler(
auth: AuthSessionType,
) -> Result<impl IntoResponse, HtmlError> {
let Some(user) = auth.current_user else {
return Ok(TemplateResponse::redirect("/"));
return Ok(TemplateResponse::redirect("/signin"));
};
let active_jobs = User::get_unfinished_ingestion_tasks(&user.id, &state.db).await?;

View File

@@ -14,6 +14,7 @@ use common::{
file_info::FileInfo, ingestion_payload::IngestionPayload, ingestion_task::IngestionTask,
user::User,
},
utils::config::AppConfig,
};
use crate::{
@@ -88,12 +89,9 @@ pub async fn process_ingress_form(
info!("{:?}", input);
let file_infos = try_join_all(
input
.files
.into_iter()
.map(|file| FileInfo::new(file, &state.db, &user.id).map_err(AppError::from)),
)
let file_infos = try_join_all(input.files.into_iter().map(|file| {
FileInfo::new(file, &state.db, &user.id, &state.config).map_err(AppError::from)
}))
.await?;
let payloads = IngestionPayload::create_ingestion_payload(

View File

@@ -1,6 +1,6 @@
<div class="columns-1 lg:columns-2 2xl:columns-3 gap-4" id="text_content_cards">
<div class="columns-1 md:columns-2 2xl:columns-3 gap-4" id="text_content_cards">
{% for text_content in text_contents %}
<div class="card cursor-pointer min-w-72 mb-4 bg-base-100 shadow break-inside-avoid-column"
<div class="card cursor-pointer mb-4 bg-base-100 shadow break-inside-avoid-column"
hx-get="/content/{{ text_content.id }}/read" hx-target="#modal" hx-swap="innerHTML">
{% if text_content.url_info %}
<figure>

View File

@@ -1,7 +1,7 @@
<nav class="bg-base-200 sticky top-0 z-10">
<div class="container mx-auto navbar">
<div class="flex-1">
<a class="text-2xl p-2 text-primary font-bold" href="/" hx-boost="true">Minne</a>
<a class="text-2xl text-primary font-bold" href="/" hx-boost="true">Minne</a>
</div>
<div class="flex-none">
<ul class="menu menu-horizontal px-2 items-center">

View File

@@ -13,7 +13,7 @@
<div class="drawer-side z-20">
<label for="my-drawer" aria-label="close sidebar" class="drawer-overlay"></label>
<ul class="menu p-0 w-64 h-full bg-base-200 text-base-content flex flex-col">
<ul class="menu p-0 w-72 h-full bg-base-200 text-base-content flex flex-col">
<!-- === TOP FIXED SECTION === -->
<div class="px-2 mt-14">