Class: Llmemory::LongTerm::Episodic::Storages::Base
- Inherits:
-
Object
- Object
- Llmemory::LongTerm::Episodic::Storages::Base
- Defined in:
- lib/llmemory/long_term/episodic/storages/base.rb
Overview
Storage contract for episodic memory. Implementations persist Episode hashes and expose recency-ordered listing plus keyword search so the retrieval Engine can rank episodes alongside other memory types.
Direct Known Subclasses
ActiveRecordStorage, DatabaseStorage, FileStorage, MemoryStorage
Instance Method Summary collapse
-
#archive_episodes(user_id, ids) ⇒ Object
Soft-archives episodes by id (sets archived_at on the record).
- #count_episodes(user_id) ⇒ Object
-
#delete_episodes(user_id, ids) ⇒ Object
Deletes episodes by id.
-
#expired_episode_ids(user_id, cutoff:) ⇒ Object
Returns episodes whose created_at is older than the cutoff and that are not already archived.
- #get_episode(user_id, id) ⇒ Object
-
#list_episodes(user_id, limit: nil, offset: nil) ⇒ Object
Newest first.
- #list_users ⇒ Object
- #save_episode(user_id, episode) ⇒ Object
- #search_episodes(user_id, query) ⇒ Object
Instance Method Details
#archive_episodes(user_id, ids) ⇒ Object
Soft-archives episodes by id (sets archived_at on the record). Archived episodes are excluded from list_episodes / search_episodes / count_episodes but remain accessible via get_episode. Returns the number archived.
40 41 42 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 40 def archive_episodes(user_id, ids) raise NotImplementedError, "#{self.class}#archive_episodes must be implemented" end |
#count_episodes(user_id) ⇒ Object
28 29 30 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 28 def count_episodes(user_id) raise NotImplementedError, "#{self.class}#count_episodes must be implemented" end |
#delete_episodes(user_id, ids) ⇒ Object
Deletes episodes by id. Returns the number actually removed.
33 34 35 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 33 def delete_episodes(user_id, ids) raise NotImplementedError, "#{self.class}#delete_episodes must be implemented" end |
#expired_episode_ids(user_id, cutoff:) ⇒ Object
Returns episodes whose created_at is older than the cutoff and that are not already archived. Used by the TTL maintenance job.
46 47 48 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 46 def expired_episode_ids(user_id, cutoff:) raise NotImplementedError, "#{self.class}#expired_episode_ids must be implemented" end |
#get_episode(user_id, id) ⇒ Object
15 16 17 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 15 def get_episode(user_id, id) raise NotImplementedError, "#{self.class}#get_episode must be implemented" end |
#list_episodes(user_id, limit: nil, offset: nil) ⇒ Object
Newest first. Optionally paginated with offset/limit.
20 21 22 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 20 def list_episodes(user_id, limit: nil, offset: nil) raise NotImplementedError, "#{self.class}#list_episodes must be implemented" end |
#list_users ⇒ Object
50 51 52 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 50 def list_users raise NotImplementedError, "#{self.class}#list_users must be implemented" end |
#save_episode(user_id, episode) ⇒ Object
11 12 13 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 11 def save_episode(user_id, episode) raise NotImplementedError, "#{self.class}#save_episode must be implemented" end |
#search_episodes(user_id, query) ⇒ Object
24 25 26 |
# File 'lib/llmemory/long_term/episodic/storages/base.rb', line 24 def search_episodes(user_id, query) raise NotImplementedError, "#{self.class}#search_episodes must be implemented" end |