From f0361894f1e82774a20fc59e86db74a0af1d4e14 Mon Sep 17 00:00:00 2001 From: Kyriakos Barbounakis Date: Sun, 12 May 2024 11:12:11 +0300 Subject: [PATCH] add load event (#145) * add load event * 2.11.6 --- data-model.d.ts | 4 ++++ data-model.js | 7 ++++++- package-lock.json | 2 +- package.json | 2 +- spec/DataModel.spec.ts | 13 ++++++++++++- 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/data-model.d.ts b/data-model.d.ts index 3005e97..ea3ae51 100644 --- a/data-model.d.ts +++ b/data-model.d.ts @@ -2,8 +2,12 @@ import {DataAssociationMapping, DataContext, DataField} from "./types"; import {DataModelBase, SequentialEventEmitter} from "@themost/common"; import {DataQueryable} from "./data-queryable"; +import {SyncSeriesEventEmitter} from '@themost/events'; export declare class DataModel extends SequentialEventEmitter implements DataModelBase { + + static load: SyncSeriesEventEmitter<{ target: DataModel }>; + constructor(obj:any); name: string; diff --git a/data-model.js b/data-model.js index 5e4ea9a..d7b904a 100644 --- a/data-model.js +++ b/data-model.js @@ -34,6 +34,7 @@ var {ZeroOrOneMultiplicityListener} = require('./zero-or-one-multiplicity'); var {OnNestedQueryListener} = require('./OnNestedQueryListener'); var {OnExecuteNestedQueryable} = require('./OnExecuteNestedQueryable'); var {hasOwnProperty} = require('./has-own-property'); +var { SyncSeriesEventEmitter } = require('@themost/events'); require('@themost/promise-sequence'); var DataObjectState = types.DataObjectState; /** @@ -564,7 +565,9 @@ DataModel.prototype.getDataObjectType = function() { * Initializes the current data model. This method is used for extending the behaviour of an install of DataModel class. */ DataModel.prototype.initialize = function() { - // + DataModel.load.emit({ + target: this + }); }; /** @@ -3315,6 +3318,8 @@ DataModel.prototype.upsertAsync = function(obj) { }); } +DataModel.load = new SyncSeriesEventEmitter(); + module.exports = { DataModel }; diff --git a/package-lock.json b/package-lock.json index d1685b6..cb0f918 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@themost/data", - "version": "2.11.5", + "version": "2.11.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7c30b7c..954a719 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@themost/data", - "version": "2.11.5", + "version": "2.11.6", "description": "MOST Web Framework Codename Blueshift - Data module", "main": "index.js", "scripts": { diff --git a/spec/DataModel.spec.ts b/spec/DataModel.spec.ts index f17d1f6..60c6b8f 100644 --- a/spec/DataModel.spec.ts +++ b/spec/DataModel.spec.ts @@ -1,6 +1,7 @@ import {DataModel, EdmMapping, DataContext} from '../index'; import { TestApplication } from './TestApplication'; import { resolve } from 'path'; +import {SqliteAdapter} from '@themost/sqlite'; class Employee { public EmployeeID?: number; @@ -69,7 +70,7 @@ describe('DataModel', () => { }); it('should use migrateAsync', async () => { - const db: TestAdapter = context.db as TestAdapter; + const db = context.db as SqliteAdapter; let exists = await db.table('OtherProducts').existsAsync(); expect(exists).toBeFalsy(); const upgraded = await context.model('OtherProduct').migrateAsync(); @@ -83,4 +84,14 @@ describe('DataModel', () => { }); }); + it('should use load event', async () => { + DataModel.load.subscribeOnce((event) => { + event.target.caching = 'always'; + }); + let model = context.model('Employee'); + expect(model.caching).toBe('always'); + model = context.model('Employee'); + expect(model.caching).toBe('none'); + }); + });