systemprompt_cli/session/
api.rs1use anyhow::{Context, Result};
7use chrono::Duration;
8use std::sync::Arc;
9use systemprompt_analytics::AnalyticsService;
10use systemprompt_database::DbPool;
11use systemprompt_identifiers::{SessionId, SessionSource, UserId};
12use systemprompt_oauth::services::SessionCreationService;
13use systemprompt_traits::{AnalyticsProvider, SessionAnalytics, UserProvider};
14use systemprompt_users::UserService;
15
16pub const DEFAULT_CLI_SESSION_HOURS: i64 = 24;
19
20pub async fn create_local_session_row(
29 db_pool: &DbPool,
30 user: &UserId,
31 ttl: Duration,
32) -> Result<SessionId> {
33 let analytics: Arc<dyn AnalyticsProvider> = Arc::new(
34 AnalyticsService::new(db_pool, None, None)
35 .context("Failed to construct analytics service")?,
36 );
37 let users: Arc<dyn UserProvider> =
38 Arc::new(UserService::new(db_pool).context("Failed to construct user service")?);
39
40 SessionCreationService::new(analytics, users)
41 .create_authenticated_session_with_ttl(
42 user,
43 &SessionAnalytics::default(),
44 SessionSource::Cli,
45 ttl,
46 )
47 .await
48 .context("Failed to insert CLI session row")
49}