server/worker/src/handlers/mod.rs
vegard 50e26e3c48 Entiteter: merge-verktøy, detaljside og AI-worker
Admin-side for merge av duplikate entiteter med edge-migrering.
Entitetsside med inline redigering, slett, relasjoner og mentions.
AI text process worker-handler (fix_text, extract_facts, rewrite,
translate) med API-endepunkt som oppretter jobbkø-oppgaver.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 21:45:45 +01:00

45 lines
1.3 KiB
Rust

use serde_json::Value;
use sqlx::PgPool;
use std::collections::HashMap;
use uuid::Uuid;
mod ai_text_process;
mod echo;
/// Trait for jobbhandlere.
/// Hver jobbtype implementerer dette.
#[async_trait::async_trait]
pub trait JobHandler: Send + Sync {
async fn handle(
&self,
pool: &PgPool,
workspace_id: &Uuid,
payload: &Value,
) -> anyhow::Result<Option<Value>>;
}
pub type HandlerRegistry = HashMap<String, Box<dyn JobHandler>>;
/// Bygg registeret med alle tilgjengelige handlers.
pub fn build_registry(http: reqwest::Client, ai_gateway_url: String) -> HandlerRegistry {
let mut registry: HandlerRegistry = HashMap::new();
// Echo-handler for testing
registry.insert("echo".into(), Box::new(echo::EchoHandler));
// AI-behandling av tekst (✨-knappen i editoren)
registry.insert(
"ai_text_process".into(),
Box::new(ai_text_process::AiTextProcessHandler::new(
http.clone(),
ai_gateway_url.clone(),
)),
);
// Fremtidige handlers:
// registry.insert("whisper_transcribe".into(), ...);
// registry.insert("openrouter_analyze".into(), ...);
// registry.insert("research_clip".into(), ...);
registry
}