feat: add AppState and domain models

- Introduce state.rs with AppState (HTTP client + token/user_id state)
- Define core models in models.rs (User, Workspace, Conversation, Message, AuthTokenResponse)
- Integrate state management into lib.rs via .manage(AppState::new())
This commit is contained in:
2026-08-12 16:56:03 +02:00
parent a1032ddf11
commit 55133751cb
3 changed files with 68 additions and 0 deletions

View File

@@ -1,5 +1,11 @@
mod models;
mod state;
use state::AppState;
pub fn run() { pub fn run() {
tauri::Builder::default() tauri::Builder::default()
.manage(AppState::new())
.run(tauri::generate_context!()) .run(tauri::generate_context!())
.expect("error while running tauri application"); .expect("error while running tauri application");
} }

43
src-tauri/src/models.rs Normal file
View File

@@ -0,0 +1,43 @@
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone)]
pub struct User {
pub id: String,
pub email: String,
pub username: String,
pub display_name: String,
pub avatar_url: Option<String>,
pub bio: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct Workspace {
pub id: String,
pub name: String,
pub slug: String,
pub owner_id: String,
}
#[derive(Serialize, Deserialize)]
pub struct Conversation {
pub id: String,
pub workspace_id: Option<String>,
pub kind: String,
pub name: Option<String>,
pub is_public: bool,
pub created_by: String,
}
#[derive(Serialize, Deserialize)]
pub struct Message {
pub id: String,
pub conversation_id: String,
pub user_id: String,
pub content: String,
pub created_at: String,
}
#[derive(Deserialize)]
pub struct AuthTokenResponse {
pub token: String,
}

19
src-tauri/src/state.rs Normal file
View File

@@ -0,0 +1,19 @@
use std::sync::Mutex;
pub const BASE_URL: &str = "http://localhost:3000/api/v1";
pub struct AppState {
pub client: reqwest::Client,
pub token: Mutex<Option<String>>,
pub user_id: Mutex<Option<String>>,
}
impl AppState {
pub fn new() -> Self {
Self {
client: reqwest::Client::new(),
token: Mutex::new(None),
user_id: Mutex::new(None),
}
}
}