Files
momentry_core/src/main.rs
Warren 2b23d1cfbd feat: update core API, database layer, and worker modules
- Remove unused imports (n8n_search, universal_search, Client, Arc, etc.)
- Update API endpoints for identity, face recognition, search
- Fix postgres_db.rs search_videos parent_uuid column
- Add snapshot API and identity agent API
- Clean up backup files (.bak, .bak2)
2026-04-30 15:07:02 +08:00

321 lines
7.9 KiB
Rust

//! Momentry Core - Digital asset management system with video analysis and RAG
//!
//! This is the main entry point for the CLI application.
use anyhow::Result;
use clap::Parser;
// Local modules
mod cli;
mod processing;
use cli::*;
use processing::handlers::*;
/// Main entry point
#[tokio::main]
async fn main() -> Result<()> {
let cli = Cli::parse();
match cli.command {
Commands::Register { path } => {
handle_register(&path).await?;
}
Commands::Process {
target,
modules,
cloud,
force,
resume,
} => {
handle_process(&target, modules, cloud, force, resume).await?;
}
Commands::Chunk { uuid } => {
handle_chunk(&uuid).await?;
}
Commands::Story { uuid } => {
handle_story(&uuid).await?;
}
Commands::Vectorize { uuid } => {
handle_vectorize(&uuid).await?;
}
Commands::Play { target } => {
handle_play(&target).await?;
}
Commands::Watch { directories } => {
handle_watch(directories).await?;
}
Commands::System { gpu } => {
handle_system(gpu).await?;
}
Commands::Server { host, port } => {
handle_server(&host, port).await?;
}
Commands::Worker {
max_concurrent,
poll_interval,
batch_size,
} => {
handle_worker(max_concurrent, poll_interval, batch_size).await?;
}
Commands::Query { query } => {
handle_query(&query).await?;
}
Commands::Lookup { path } => {
handle_lookup(&path).await?;
}
Commands::Resolve { uuid } => {
handle_resolve(&uuid).await?;
}
Commands::Thumbnails { uuid, count } => {
handle_thumbnails(uuid, count).await?;
}
Commands::Status { uuid } => {
handle_status(uuid).await?;
}
Commands::Backup { action, days } => {
handle_backup(&action, days).await?;
}
Commands::ApiKey {
action,
name,
key_type,
ttl,
key,
} => {
handle_api_key(action, name, key_type, ttl, key).await?;
}
Commands::Gitea {
action,
username,
password,
token_name,
scopes,
} => {
handle_gitea(action, username, password, token_name, scopes).await?;
}
Commands::N8n {
action,
api_key,
label,
expires_in_days,
} => {
handle_n8n(action, api_key, label, expires_in_days).await?;
}
}
Ok(())
}
/// Handle register command
async fn handle_register(path: &str) -> Result<()> {
println!("Registering video: {}", path);
// TODO: Implement registration logic
Ok(())
}
/// Handle process command
async fn handle_process(
target: &str,
modules: Option<Vec<String>>,
cloud: Option<Vec<String>>,
force: bool,
resume: bool,
) -> Result<()> {
println!("Processing video: {}", target);
println!("Modules: {:?}", modules);
println!("Cloud modules: {:?}", cloud);
println!("Force: {}, Resume: {}", force, resume);
// TODO: Implement processing logic
Ok(())
}
/// Handle chunk command
async fn handle_chunk(uuid: &str) -> Result<()> {
println!("Generating chunks for: {}", uuid);
// TODO: Implement chunk logic
Ok(())
}
/// Handle story command
async fn handle_story(uuid: &str) -> Result<()> {
println!("Generating story for: {}", uuid);
// TODO: Implement story logic
Ok(())
}
/// Handle vectorize command
async fn handle_vectorize(uuid: &str) -> Result<()> {
println!("Vectorizing chunks for: {}", uuid);
// TODO: Implement vectorize logic
Ok(())
}
/// Handle play command
async fn handle_play(target: &str) -> Result<()> {
println!("Playing video: {}", target);
// TODO: Implement play logic
Ok(())
}
/// Handle watch command
async fn handle_watch(directories: Option<String>) -> Result<()> {
println!("Watching directories: {:?}", directories);
// TODO: Implement watch logic
Ok(())
}
/// Handle system command
async fn handle_system(gpu: bool) -> Result<()> {
println!("Checking system resources...");
// TODO: Implement proper system resource checking
println!("System Information:");
println!(" CPU: (would show CPU info)");
println!(" Memory: (would show memory info)");
if gpu {
println!("GPU details: (would show GPU info if available)");
}
println!("(System resource checking would be implemented here)");
Ok(())
}
/// Handle server command
async fn handle_server(host: &str, port: Option<u16>) -> Result<()> {
let port = port.unwrap_or(3002);
println!("Starting API server on {}:{}", host, port);
// Start the actual API server
momentry_core::api::start_server(host, port).await?;
Ok(())
}
/// Handle worker command
async fn handle_worker(
max_concurrent: Option<usize>,
poll_interval: Option<u64>,
batch_size: Option<i32>,
) -> Result<()> {
println!("Starting job worker");
println!("Max concurrent: {:?}", max_concurrent);
println!("Poll interval: {:?}", poll_interval);
println!("Batch size: {:?}", batch_size);
// TODO: Implement worker logic
Ok(())
}
/// Handle query command
async fn handle_query(query: &str) -> Result<()> {
println!("Querying: {}", query);
// TODO: Implement query logic
Ok(())
}
/// Handle lookup command
async fn handle_lookup(path: &str) -> Result<()> {
println!("Looking up UUID for path: {}", path);
// TODO: Implement lookup logic
Ok(())
}
/// Handle resolve command
async fn handle_resolve(uuid: &str) -> Result<()> {
println!("Resolving path for UUID: {}", uuid);
// TODO: Implement resolve logic
Ok(())
}
/// Handle thumbnails command
async fn handle_thumbnails(uuid: Option<String>, count: u32) -> Result<()> {
println!("Generating thumbnails");
println!("UUID: {:?}", uuid);
println!("Count: {}", count);
// TODO: Implement thumbnails logic
Ok(())
}
/// Handle status command
async fn handle_status(uuid: Option<String>) -> Result<()> {
println!("Checking storage status");
println!("UUID: {:?}", uuid);
// TODO: Implement status logic
Ok(())
}
/// Handle backup command
async fn handle_backup(action: &str, days: Option<u32>) -> Result<()> {
println!("Backup action: {}", action);
println!("Days to keep: {:?}", days);
// TODO: Implement backup logic
Ok(())
}
/// Handle API key command
async fn handle_api_key(
action: ApiKeyAction,
name: Option<String>,
key_type: Option<String>,
ttl: Option<i64>,
key: Option<String>,
) -> Result<()> {
println!("API Key action: {:?}", action);
println!("Name: {:?}", name);
println!("Key type: {:?}", key_type);
println!("TTL: {:?}", ttl);
println!("Key: {:?}", key);
// TODO: Implement API key logic
Ok(())
}
/// Handle Gitea command
async fn handle_gitea(
action: GiteaAction,
username: Option<String>,
password: Option<String>,
token_name: Option<String>,
scopes: Option<String>,
) -> Result<()> {
println!("Gitea action: {:?}", action);
println!("Username: {:?}", username);
println!("Token name: {:?}", token_name);
println!("Scopes: {:?}", scopes);
// TODO: Implement Gitea logic
Ok(())
}
/// Handle n8n command
async fn handle_n8n(
action: N8nAction,
api_key: Option<String>,
label: Option<String>,
expires_in_days: Option<i64>,
) -> Result<()> {
println!("n8n action: {:?}", action);
println!("API key: {:?}", api_key);
println!("Label: {:?}", label);
println!("Expires in days: {:?}", expires_in_days);
// TODO: Implement n8n logic
Ok(())
}