systemprompt_cli/session/
api.rs1use anyhow::{Context, Result};
7use chrono::Duration;
8use std::sync::Arc;
9use systemprompt_database::DbPool;
10use systemprompt_identifiers::{SessionId, SessionSource, UserId};
11use systemprompt_oauth::services::SessionCreationService;
12use systemprompt_traits::{SessionAnalytics, SessionProvider, UserProvider};
13use systemprompt_users::{UserRepository, UserService};
14
15pub const DEFAULT_CLI_SESSION_HOURS: i64 = 24;
16
17pub async fn create_local_session_row(
18 db_pool: &DbPool,
19 user: &UserId,
20 ttl: Duration,
21) -> Result<SessionId> {
22 let sessions: Arc<dyn SessionProvider> =
23 Arc::new(systemprompt_users::SessionRepository::new(db_pool));
24 let user_repository = Arc::new(UserRepository::new(db_pool));
25 let users: Arc<dyn UserProvider> = Arc::new(UserService::new(user_repository));
26
27 SessionCreationService::new(sessions, users)
28 .create_authenticated_session_with_ttl(
29 user,
30 &SessionAnalytics::default(),
31 SessionSource::Cli,
32 ttl,
33 )
34 .await
35 .context("Failed to insert CLI session row")
36}