UNPKG

quaerateum

Version:

Simple typescript ORM for node.js based on data-mapper, unit-of-work and identity-map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JS.

45 lines (34 loc) 1.11 kB
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'fs'; import { CacheAdapter } from './CacheAdapter'; export class FileCacheAdapter implements CacheAdapter { constructor(private readonly options: { cacheDir: string }) { if (!existsSync(this.options.cacheDir)) { mkdirSync(this.options.cacheDir); } } get(name: string): any { if (!existsSync(this.path(name))) { return null; } const buffer = readFileSync(this.path(name)); const payload = JSON.parse(buffer.toString()); if (!existsSync(payload.origin) || payload.modified !== this.getModifiedTime(payload.origin)) { return null; } return payload.data; } set(name: string, data: any, origin: string): void { const payload = { modified: this.getModifiedTime(origin), data, origin, }; writeFileSync(this.path(name), JSON.stringify(payload)); } private path(name: string): string { return `${this.options.cacheDir}/${name}.json`; } private getModifiedTime(origin: string): number { return statSync(origin).mtimeMs; } }