initial work on message history and data transfer
This commit is contained in:
@@ -1,18 +1,30 @@
|
||||
mod chatpersistence;
|
||||
|
||||
use genai::chat::{ChatMessage, ChatRequest, ChatResponse};
|
||||
use std::cell::Cell;
|
||||
use std::sync::atomic::AtomicI64;
|
||||
|
||||
use genai::chat::{ChatMessage, ChatRequest};
|
||||
use genai::Client;
|
||||
use shared::ai::ai_daemon_server::{AiDaemon, AiDaemonServer};
|
||||
use shared::ai::{
|
||||
ChatHistoryRequest, ChatHistoryResponse, ChatRequest as CRequest, ChatResponse as CResponse,
|
||||
PromptRequest, PromptResponse,
|
||||
ChatHistoryRequest, ChatHistoryResponse, ChatMessage as CMessage, ChatRequest as CRequest,
|
||||
ChatResponse as CResponse, PromptRequest, PromptResponse,
|
||||
};
|
||||
use tonic::{transport::Server, Request, Response, Status};
|
||||
|
||||
use chatpersistence::SqliteChatRepository;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct DaemonServer {}
|
||||
pub struct DaemonServer {
|
||||
message_counter: AtomicI64,
|
||||
}
|
||||
|
||||
impl Default for DaemonServer {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
message_counter: AtomicI64::new(0),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[tonic::async_trait]
|
||||
impl AiDaemon for DaemonServer {
|
||||
@@ -33,11 +45,26 @@ impl AiDaemon for DaemonServer {
|
||||
}
|
||||
|
||||
async fn chat(&self, request: Request<CRequest>) -> Result<Response<CResponse>, Status> {
|
||||
let r = request.into_inner();
|
||||
println!("<<<: {}", r.text());
|
||||
let response = CResponse {
|
||||
id: 1,
|
||||
chat_id: 1,
|
||||
text: "asdf".to_string(),
|
||||
is_user: false,
|
||||
messages: vec![
|
||||
CMessage {
|
||||
id: self
|
||||
.message_counter
|
||||
.fetch_add(1, std::sync::atomic::Ordering::Relaxed),
|
||||
text: r.text().to_string(),
|
||||
is_user: true,
|
||||
},
|
||||
CMessage {
|
||||
id: self
|
||||
.message_counter
|
||||
.fetch_add(1, std::sync::atomic::Ordering::Relaxed),
|
||||
text: format!("Pong: {}", r.text()),
|
||||
is_user: false,
|
||||
},
|
||||
],
|
||||
};
|
||||
return Ok(Response::new(response));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user