use anyhow::{Context, Result};
use chrono::Duration;
use systemprompt_analytics::{CreateSessionParams, SessionRepository};
use systemprompt_database::DbPool;
use systemprompt_identifiers::{SessionId, SessionSource, UserId};
use uuid::Uuid;
pub async fn create_local_session_row(db_pool: &DbPool, user: &UserId) -> Result<SessionId> {
let session_repo =
SessionRepository::new(db_pool).context("Failed to construct session repository")?;
let session_id = SessionId::new(format!("sess_{}", Uuid::new_v4()));
let expires_at = chrono::Utc::now() + Duration::hours(24);
let params = CreateSessionParams {
session_id: &session_id,
user_id: Some(user),
session_source: SessionSource::Cli,
fingerprint_hash: None,
ip_address: None,
user_agent: None,
device_type: None,
browser: None,
os: None,
country: None,
region: None,
city: None,
preferred_locale: None,
referrer_source: None,
referrer_url: None,
landing_page: None,
entry_url: None,
utm_source: None,
utm_medium: None,
utm_campaign: None,
utm_content: None,
utm_term: None,
is_bot: false,
is_ai_crawler: false,
expires_at,
};
session_repo
.create_session(¶ms)
.await
.context("Failed to insert CLI session row")?;
Ok(session_id)
}