Class: CompletionKit::McpSession
Overview
MCP session marker — one row per active client session, kept in the database so sessions survive Puma restarts, deploys, and Rails.cache eviction. Expired rows are opportunistically pruned on every new session start, so the table stays bounded by recent activity.
Constant Summary
collapse
- SESSION_TTL =
1.hour
ApplicationRecord::TenantScopedUniquenessValidator
Class Method Summary
collapse
Class Method Details
.active?(session_id) ⇒ Boolean
16
17
18
19
|
# File 'app/models/completion_kit/mcp_session.rb', line 16
def self.active?(session_id)
return false if session_id.blank?
where(session_id: session_id).where("expires_at > ?", Time.current).exists?
end
|
.destroy_session(session_id) ⇒ Object
21
22
23
|
# File 'app/models/completion_kit/mcp_session.rb', line 21
def self.destroy_session(session_id)
where(session_id: session_id).delete_all
end
|
.prune_expired! ⇒ Object
25
26
27
|
# File 'app/models/completion_kit/mcp_session.rb', line 25
def self.prune_expired!
where("expires_at < ?", Time.current).delete_all
end
|
.start! ⇒ Object
11
12
13
14
|
# File 'app/models/completion_kit/mcp_session.rb', line 11
def self.start!
prune_expired!
create!(session_id: SecureRandom.uuid, expires_at: SESSION_TTL.from_now).session_id
end
|