UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

51 lines (50 loc) 1.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const node_fs_1 = __importDefault(require("node:fs")); const collect_js_1 = __importDefault(require("collect.js")); const CollectionRepository_1 = __importDefault(require("./CollectionRepository")); class FileRepository extends CollectionRepository_1.default { /** * Resolve items from the store path. */ resolveItems() { const data = node_fs_1.default.readFileSync(this.filepath()).toString(); return JSON.parse(data).filter((item) => (0, collect_js_1.default)(item).isNotEmpty()); } /** * Store given model into the storage. */ async store(model) { this.write(this.makeCollection() .push(model.setAttribute(model.getKeyName(), model.getKey() ?? this.newId())) .all()); return model; } /** * Store given model into the storage. */ async update(model) { this.write(this.makeCollection() .map((item) => (item.getKey() === model.getKey() ? model : item)) .all()); return model; } /** * Delete model for the given key. */ async delete(key) { this.write(this.makeCollection() .filter((item) => item.getKey() !== key) .all()); } /** * Write given items to storage. */ write(items) { node_fs_1.default.writeFileSync(this.filepath(), JSON.stringify(items.map((item) => item.getAttributes()))); } } exports.default = FileRepository;