systemprompt_users/repository/
api_key_session.rs1use systemprompt_identifiers::{ApiKeyId, SessionId};
7
8use crate::error::Result;
9use crate::repository::UserRepository;
10
11impl UserRepository {
12 pub async fn find_api_key_session(&self, api_key_id: &ApiKeyId) -> Result<Option<SessionId>> {
13 let row = sqlx::query_scalar!(
14 "SELECT session_id FROM api_key_sessions WHERE api_key_id = $1",
15 api_key_id.as_str(),
16 )
17 .fetch_optional(&*self.write_pool)
18 .await?;
19 Ok(row.map(SessionId::new))
20 }
21
22 pub async fn set_api_key_session(
23 &self,
24 api_key_id: &ApiKeyId,
25 session_id: &SessionId,
26 ) -> Result<()> {
27 sqlx::query!(
28 r#"
29 INSERT INTO api_key_sessions (api_key_id, session_id)
30 VALUES ($1, $2)
31 ON CONFLICT (api_key_id)
32 DO UPDATE SET session_id = EXCLUDED.session_id, bound_at = CURRENT_TIMESTAMP
33 "#,
34 api_key_id.as_str(),
35 session_id.as_str(),
36 )
37 .execute(&*self.write_pool)
38 .await?;
39 Ok(())
40 }
41}