UNPKG

blow-data

Version:
70 lines (69 loc) 2.29 kB
'use strict'; const rxjs_1 = require('rxjs'); const blow_collection_1 = require('blow-collection'); const blow_query_1 = require('blow-query'); const Adapter_1 = require('./Adapter'); function copyObject(obj) { return Object.assign({}, obj); } class MemoryAdapter extends Adapter_1.Adapter { _connect() { this._db = new Map(); return rxjs_1.Observable.of(this); } _collection(metadata) { const collectionName = metadata.pluralName; const idKey = metadata.idProperty.name; if (!this._db.has(collectionName)) { this._db.set(collectionName, new blow_collection_1.Collection({ idKey: idKey })); } return this._db.get(collectionName); } _prepareQuery(query) { if (query) { if (query instanceof blow_query_1.Query) { query = query.toJSON(); } } return query; } count(metadata, where) { return this._collection(metadata).count(where); } create(metadata, data) { return this._collection(metadata).create(MemoryAdapter.toDB(data)).map(copyObject); } destroy(metadata, where) { return this._collection(metadata).destroy(where); } destroyById(metadata, id) { return this._collection(metadata).destroyById(id); } exists(metadata, id) { return this._collection(metadata).exists(id); } find(metadata, query) { query = this._prepareQuery(query); return this._collection(metadata).find(query).map(copyObject); } findOne(metadata, query) { query = this._prepareQuery(query); return this._collection(metadata).findOne(query).map(copyObject); } findById(metadata, id) { return this._collection(metadata).findById(id).map(copyObject); } findOrCreate(metadata, where, data) { return this._collection(metadata).findOrCreate(where, data).map(copyObject); } update(metadata, where, data) { return this._collection(metadata).update(where, data); } updateOrCreate(metadata, data) { return this._collection(metadata).updateOrCreate(data).map(copyObject); } static toDB(data) { return Object.assign({}, data); } } exports.MemoryAdapter = MemoryAdapter;