import { AnalyticUnitId } from "./analytic_unit_model"; import { Collection, makeDBQ } from '../services/data_service'; let db = makeDBQ(Collection.ANALYTIC_UNIT_CACHES); export type AnalyticUnitCacheId = string; export class AnalyticUnitCache { public constructor( public analyticUnitId: AnalyticUnitId, public data: any, public id?: AnalyticUnitCacheId, ) { } public toObject() { return { _id: this.id, analyticUnitId: self.analyticUnitId, data: self.data, obj._id }; } static fromObject(obj: any): AnalyticUnitCache { if(obj.method === undefined) { throw new Error('No method in obj:' + obj); } return new AnalyticUnitCache( obj.method, obj.data, obj._id ); } } export async function findById(id: AnalyticUnitCacheId): Promise { let obj = await db.findOne(id); return AnalyticUnitCache.fromObject(obj); } export async function create(unit: AnalyticUnitCache): Promise { let obj = unit.toObject(); return db.insertOne(obj); } export async function setData(id: AnalyticUnitCacheId, data: any) { return db.updateOne(id, { data }); } export async function remove(id: AnalyticUnitCacheId): Promise { await db.removeOne(id); }