import Cache from './Cache.ts' import { Collection } from '../collection/Collection.ts' /** * Base interface for an item stored in a memory cache. */ export interface InMemCacheItem { key: string, item: string, } /** * A cache implementation stored in memory. * @extends Cache */ export class InMemCache extends Cache { /** * The stored cache items. * @type Collection */ protected items: Collection = new Collection() public async fetch(key: string) { const item = this.items.firstWhere('key', '=', key) if ( item ) return item.item } public async put(key: string, item: string) { const existing = this.items.firstWhere('key', '=', key) if ( existing ) existing.item = item else this.items.push({ key, item }) } public async has(key: string) { return this.items.where('key', '=', key).length > 0 } public async drop(key: string) { this.items = this.items.whereNot('key', '=', key) } }