Просмотр исходного кода

chore: replaces the builtin Service class by @e22m4u/service and upgrades @e22m4u/format to 0.0.3

e22m4u 2 лет назад
Родитель
Сommit
9a2027d976
56 измененных файлов с 669 добавлено и 695 удалено
  1. 2 1
      package.json
  2. 2 2
      src/adapter/adapter-loader.js
  3. 1 2
      src/adapter/adapter-loader.spec.js
  4. 6 3
      src/adapter/adapter-registry.js
  5. 2 2
      src/adapter/adapter-registry.spec.js
  6. 9 9
      src/adapter/adapter.js
  7. 13 12
      src/adapter/adapter.spec.js
  8. 47 39
      src/adapter/builtin/memory-adapter.js
  9. 95 95
      src/adapter/builtin/memory-adapter.spec.js
  10. 2 2
      src/adapter/decorator/data-sanitizing-decorator.js
  11. 2 2
      src/adapter/decorator/data-sanitizing-decorator.spec.js
  12. 4 4
      src/adapter/decorator/data-validation-decorator.js
  13. 2 2
      src/adapter/decorator/data-validation-decorator.spec.js
  14. 2 2
      src/adapter/decorator/default-values-decorator.js
  15. 2 2
      src/adapter/decorator/default-values-decorator.spec.js
  16. 2 2
      src/adapter/decorator/fields-filtering-decorator.js
  17. 2 2
      src/adapter/decorator/fields-filtering-decorator.spec.js
  18. 2 2
      src/adapter/decorator/inclusion-decorator.js
  19. 2 2
      src/adapter/decorator/inclusion-decorator.spec.js
  20. 1 1
      src/definition/datasource/datasource-definition-validator.js
  21. 3 3
      src/definition/definition-registry.js
  22. 2 2
      src/definition/definition-registry.spec.js
  23. 4 5
      src/definition/model/model-data-sanitizer.js
  24. 2 2
      src/definition/model/model-data-validator.js
  25. 109 105
      src/definition/model/model-data-validator.spec.js
  26. 9 7
      src/definition/model/model-definition-utils.js
  27. 72 72
      src/definition/model/model-definition-utils.spec.js
  28. 3 3
      src/definition/model/model-definition-validator.js
  29. 2 2
      src/definition/model/model-definition-validator.spec.js
  30. 2 2
      src/definition/model/properties/default-values-definition-validator.js
  31. 1 1
      src/definition/model/properties/primary-keys-definition-validator.js
  32. 9 3
      src/definition/model/properties/properties-definition-validator.js
  33. 2 2
      src/definition/model/properties/properties-definition-validator.spec.js
  34. 1 1
      src/definition/model/relations/relations-definition-validator.js
  35. 4 2
      src/filter/fields-clause-tool.js
  36. 1 1
      src/filter/fields-clause-tool.spec.js
  37. 13 14
      src/filter/include-clause-tool.js
  38. 1 1
      src/filter/operator-clause-tool.js
  39. 1 1
      src/filter/order-clause-tool.js
  40. 1 1
      src/filter/slice-clause-tool.js
  41. 2 2
      src/filter/where-clause-tool.js
  42. 12 6
      src/relations/belongs-to-resolver.js
  43. 36 36
      src/relations/belongs-to-resolver.spec.js
  44. 10 6
      src/relations/has-many-resolver.js
  45. 59 59
      src/relations/has-many-resolver.spec.js
  46. 10 6
      src/relations/has-one-resolver.js
  47. 59 59
      src/relations/has-one-resolver.spec.js
  48. 5 3
      src/relations/references-many-resolver.js
  49. 19 19
      src/relations/references-many-resolver.spec.js
  50. 2 2
      src/repository/repository-registry.js
  51. 2 2
      src/repository/repository-registry.spec.js
  52. 7 7
      src/repository/repository.js
  53. 4 4
      src/schema.js
  54. 0 1
      src/service/index.js
  55. 0 28
      src/service/service.js
  56. 0 37
      src/service/service.spec.js

+ 2 - 1
package.json

@@ -33,7 +33,8 @@
   "license": "MIT",
   "homepage": "https://github.com/e22m4u/repository",
   "dependencies": {
-    "@e22m4u/format": "0.0.2"
+    "@e22m4u/format": "0.0.3",
+    "@e22m4u/service": "0.0.2"
   },
   "devDependencies": {
     "@commitlint/cli": "^17.7.1",

+ 2 - 2
src/adapter/adapter-loader.js

@@ -1,5 +1,5 @@
 import {Adapter} from './adapter.js';
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../errors/index.js';
 
 /**
@@ -40,7 +40,7 @@ export class AdapterLoader extends Service {
         'The adapter %v is not found.',
         adapterName,
       );
-    return new adapterCtor(this._services, settings);
+    return new adapterCtor(this.container, settings);
   }
 }
 

+ 1 - 2
src/adapter/adapter-loader.spec.js

@@ -23,9 +23,8 @@ describe('AdapterLoader', function () {
     it('returns an adapter instance that is loaded from "builtin" folder', async function () {
       const settings = {};
       const adapter = await S.loadByName('memory', settings);
-      const services = S._services;
       expect(adapter).to.be.instanceof(Adapter);
-      expect(adapter._services).to.be.eq(services);
+      expect(adapter.container).to.be.eq(S.container);
       expect(adapter.settings).to.be.eq(settings);
     });
   });

+ 6 - 3
src/adapter/adapter-registry.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {AdapterLoader} from './adapter-loader.js';
 import {DefinitionRegistry} from '../definition/index.js';
 
@@ -23,9 +23,12 @@ export class AdapterRegistry extends Service {
     let adapter = this._adapters[datasourceName];
     if (adapter) return adapter;
     const datasource =
-      this.get(DefinitionRegistry).getDatasource(datasourceName);
+      this.getService(DefinitionRegistry).getDatasource(datasourceName);
     const adapterName = datasource.adapter;
-    adapter = await this.get(AdapterLoader).loadByName(adapterName, datasource);
+    adapter = await this.getService(AdapterLoader).loadByName(
+      adapterName,
+      datasource,
+    );
     this._adapters[datasourceName] = adapter;
     return adapter;
   }

+ 2 - 2
src/adapter/adapter-registry.spec.js

@@ -8,7 +8,7 @@ describe('AdapterRegistry', function () {
     it('instantiates a new or returns an existing adapter by a given datasource name', async function () {
       const S = new Schema();
       S.defineDatasource({name: 'datasource', adapter: 'memory'});
-      const R = S.get(AdapterRegistry);
+      const R = S.getService(AdapterRegistry);
       const adapter = await R.getAdapter('datasource');
       expect(adapter).to.be.instanceof(MemoryAdapter);
       const sameAdapter = await R.getAdapter('datasource');
@@ -26,7 +26,7 @@ describe('AdapterRegistry', function () {
     it('throws an error if an adapter is not exists', async function () {
       const S = new Schema();
       S.defineDatasource({name: 'datasource', adapter: 'unknown'});
-      const R = S.get(AdapterRegistry);
+      const R = S.getService(AdapterRegistry);
       const promise = R.getAdapter('datasource');
       await expect(promise).to.be.rejectedWith(
         'The adapter "unknown" is not found.',

+ 9 - 9
src/adapter/adapter.js

@@ -1,5 +1,5 @@
 /* eslint no-unused-vars: 0 */
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {NotImplementedError} from '../errors/index.js';
 import {InclusionDecorator} from './decorator/index.js';
 import {DefaultValuesDecorator} from './decorator/index.js';
@@ -28,19 +28,19 @@ export class Adapter extends Service {
   /**
    * Constructor.
    *
-   * @param services
+   * @param container
    * @param settings
    */
-  constructor(services = undefined, settings = undefined) {
-    super(services);
+  constructor(container = undefined, settings = undefined) {
+    super(container);
     this._settings = settings;
     // decorate only extended classes
     if (this.constructor !== Adapter) {
-      this.get(DataValidationDecorator).decorate(this);
-      this.get(DataSanitizingDecorator).decorate(this);
-      this.get(DefaultValuesDecorator).decorate(this);
-      this.get(FieldsFilteringDecorator).decorate(this);
-      this.get(InclusionDecorator).decorate(this);
+      this.getService(DataValidationDecorator).decorate(this);
+      this.getService(DataSanitizingDecorator).decorate(this);
+      this.getService(DefaultValuesDecorator).decorate(this);
+      this.getService(FieldsFilteringDecorator).decorate(this);
+      this.getService(InclusionDecorator).decorate(this);
     }
   }
 

+ 13 - 12
src/adapter/adapter.spec.js

@@ -2,12 +2,13 @@ import chai from 'chai';
 import {expect} from 'chai';
 import {Schema} from '../schema.js';
 import {Adapter} from './adapter.js';
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InclusionDecorator} from './decorator/index.js';
 import {DefaultValuesDecorator} from './decorator/index.js';
 import {DataValidationDecorator} from './decorator/index.js';
 import {DataSanitizingDecorator} from './decorator/index.js';
 import {FieldsFilteringDecorator} from './decorator/index.js';
+import {ServiceContainer} from '@e22m4u/service';
 
 const sandbox = chai.spy.sandbox();
 
@@ -22,21 +23,21 @@ describe('Adapter', function () {
       expect(adapter).to.be.instanceof(Service);
     });
 
-    it('sets given services an settings', function () {
-      const services = new Map();
+    it('sets given service container and settings', function () {
+      const container = new ServiceContainer();
       const settings = {};
-      const adapter = new Adapter(services, settings);
-      expect(adapter._services).to.be.eq(services);
+      const adapter = new Adapter(container, settings);
+      expect(adapter.container).to.be.eq(container);
       expect(adapter._settings).to.be.eq(settings);
     });
 
     it('decorates only extended adapter', function () {
       const schema = new Schema();
-      const dec1 = schema.get(DataValidationDecorator);
-      const dec2 = schema.get(DataSanitizingDecorator);
-      const dec3 = schema.get(DefaultValuesDecorator);
-      const dec4 = schema.get(FieldsFilteringDecorator);
-      const dec5 = schema.get(InclusionDecorator);
+      const dec1 = schema.getService(DataValidationDecorator);
+      const dec2 = schema.getService(DataSanitizingDecorator);
+      const dec3 = schema.getService(DefaultValuesDecorator);
+      const dec4 = schema.getService(FieldsFilteringDecorator);
+      const dec5 = schema.getService(InclusionDecorator);
       const order = [];
       const decorate = function (ctx) {
         expect(ctx).to.be.instanceof(Adapter);
@@ -47,7 +48,7 @@ describe('Adapter', function () {
       sandbox.on(dec3, 'decorate', decorate);
       sandbox.on(dec4, 'decorate', decorate);
       sandbox.on(dec5, 'decorate', decorate);
-      new Adapter(schema._services);
+      new Adapter(schema.container);
       expect(order).to.be.empty;
       expect(dec1.decorate).to.be.not.called;
       expect(dec2.decorate).to.be.not.called;
@@ -55,7 +56,7 @@ describe('Adapter', function () {
       expect(dec4.decorate).to.be.not.called;
       expect(dec5.decorate).to.be.not.called;
       class ExtendedAdapter extends Adapter {}
-      new ExtendedAdapter(schema._services);
+      new ExtendedAdapter(schema.container);
       expect(order[0]).to.be.eql(dec1);
       expect(order[1]).to.be.eql(dec2);
       expect(order[2]).to.be.eql(dec3);

+ 47 - 39
src/adapter/builtin/memory-adapter.js

@@ -34,7 +34,7 @@ export class MemoryAdapter extends Adapter {
    */
   _getTableOrCreate(modelName) {
     const tableName =
-      this.get(ModelDefinitionUtils).getTableNameByModelName(modelName);
+      this.getService(ModelDefinitionUtils).getTableNameByModelName(modelName);
     let table = this._tables.get(tableName);
     if (table) return table;
     table = new Map();
@@ -50,10 +50,9 @@ export class MemoryAdapter extends Adapter {
    * @return {number}
    */
   _genNextIdValue(modelName, propName) {
-    const propType = this.get(ModelDefinitionUtils).getDataTypeByPropertyName(
-      modelName,
-      propName,
-    );
+    const propType = this.getService(
+      ModelDefinitionUtils,
+    ).getDataTypeByPropertyName(modelName, propName);
     if (propType !== DataType.ANY && propType !== DataType.NUMBER)
       throw new InvalidArgumentError(
         'The memory adapter able to generate only Number identifiers, ' +
@@ -67,7 +66,7 @@ export class MemoryAdapter extends Adapter {
         propName,
       );
     const tableName =
-      this.get(ModelDefinitionUtils).getTableNameByModelName(modelName);
+      this.getService(ModelDefinitionUtils).getTableNameByModelName(modelName);
     const lastId = this._lastIds.get(tableName) ?? 0;
     const nextId = lastId + 1;
     this._lastIds.set(tableName, nextId);
@@ -89,7 +88,9 @@ export class MemoryAdapter extends Adapter {
   // eslint-disable-next-line no-unused-vars
   async create(modelName, modelData, filter = undefined) {
     const pkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(modelName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        modelName,
+      );
     let idValue = modelData[pkPropName];
     if (idValue == null) idValue = this._genNextIdValue(modelName, pkPropName);
 
@@ -105,15 +106,14 @@ export class MemoryAdapter extends Adapter {
     modelData = cloneDeep(modelData);
     modelData[pkPropName] = idValue;
 
-    const tableData = this.get(
+    const tableData = this.getService(
       ModelDefinitionUtils,
     ).convertPropertyNamesToColumnNames(modelName, modelData);
     table.set(idValue, tableData);
 
-    return this.get(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
-      modelName,
-      tableData,
-    );
+    return this.getService(
+      ModelDefinitionUtils,
+    ).convertColumnNamesToPropertyNames(modelName, tableData);
   }
 
   /**
@@ -130,7 +130,9 @@ export class MemoryAdapter extends Adapter {
     const table = this._getTableOrCreate(modelName);
     const isExists = table.has(id);
     const pkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(modelName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        modelName,
+      );
     if (!isExists)
       throw new InvalidArgumentError(
         'The value %v of the primary key %v does not exist in the model %v.',
@@ -142,15 +144,14 @@ export class MemoryAdapter extends Adapter {
     modelData = cloneDeep(modelData);
     modelData[pkPropName] = id;
 
-    const tableData = this.get(
+    const tableData = this.getService(
       ModelDefinitionUtils,
     ).convertPropertyNamesToColumnNames(modelName, modelData);
     table.set(id, tableData);
 
-    return this.get(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
-      modelName,
-      tableData,
-    );
+    return this.getService(
+      ModelDefinitionUtils,
+    ).convertColumnNamesToPropertyNames(modelName, tableData);
   }
 
   /**
@@ -167,7 +168,9 @@ export class MemoryAdapter extends Adapter {
     const table = this._getTableOrCreate(modelName);
     const existingTableData = table.get(id);
     const pkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(modelName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        modelName,
+      );
     if (existingTableData == null)
       throw new InvalidArgumentError(
         'The value %v of the primary key %v does not exist in the model %v.',
@@ -179,19 +182,18 @@ export class MemoryAdapter extends Adapter {
     modelData = cloneDeep(modelData);
     delete modelData[pkPropName];
 
-    const existingModelData = this.get(
+    const existingModelData = this.getService(
       ModelDefinitionUtils,
     ).convertColumnNamesToPropertyNames(modelName, existingTableData);
     const mergedModelData = Object.assign({}, existingModelData, modelData);
-    const mergedTableData = this.get(
+    const mergedTableData = this.getService(
       ModelDefinitionUtils,
     ).convertPropertyNamesToColumnNames(modelName, mergedModelData);
     table.set(id, mergedTableData);
 
-    return this.get(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
-      modelName,
-      mergedTableData,
-    );
+    return this.getService(
+      ModelDefinitionUtils,
+    ).convertColumnNamesToPropertyNames(modelName, mergedTableData);
   }
 
   /**
@@ -205,7 +207,7 @@ export class MemoryAdapter extends Adapter {
     const table = this._getTableOrCreate(modelName);
     const tableItems = Array.from(table.values());
     let modelItems = tableItems.map(tableItem =>
-      this.get(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
+      this.getService(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
         modelName,
         tableItem,
       ),
@@ -213,15 +215,18 @@ export class MemoryAdapter extends Adapter {
 
     if (filter && typeof filter === 'object') {
       if (filter.where)
-        modelItems = this.get(WhereClauseTool).filter(modelItems, filter.where);
+        modelItems = this.getService(WhereClauseTool).filter(
+          modelItems,
+          filter.where,
+        );
       if (filter.skip || filter.limit)
-        modelItems = this.get(SliceClauseTool).slice(
+        modelItems = this.getService(SliceClauseTool).slice(
           modelItems,
           filter.skip,
           filter.limit,
         );
       if (filter.order)
-        this.get(OrderClauseTool).sort(modelItems, filter.order);
+        this.getService(OrderClauseTool).sort(modelItems, filter.order);
     }
     return modelItems;
   }
@@ -239,7 +244,9 @@ export class MemoryAdapter extends Adapter {
     const table = this._getTableOrCreate(modelName);
     const tableData = table.get(id);
     const pkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(modelName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        modelName,
+      );
     if (!tableData)
       throw new InvalidArgumentError(
         'The value %v of the primary key %v does not exist in the model %v.',
@@ -247,10 +254,9 @@ export class MemoryAdapter extends Adapter {
         pkPropName,
         modelName,
       );
-    return this.get(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
-      modelName,
-      tableData,
-    );
+    return this.getService(
+      ModelDefinitionUtils,
+    ).convertColumnNamesToPropertyNames(modelName, tableData);
   }
 
   /**
@@ -265,18 +271,20 @@ export class MemoryAdapter extends Adapter {
     const tableItems = Array.from(table.values());
     if (!tableItems.length) return 0;
     let modelItems = tableItems.map(tableItem =>
-      this.get(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
+      this.getService(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
         modelName,
         tableItem,
       ),
     );
 
     if (where && typeof where === 'object')
-      modelItems = this.get(WhereClauseTool).filter(modelItems, where);
+      modelItems = this.getService(WhereClauseTool).filter(modelItems, where);
     const size = modelItems.length;
 
     const idPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(modelName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        modelName,
+      );
     modelItems.forEach(modelData => {
       const idValue = modelData[idPropName];
       table.delete(idValue);
@@ -321,14 +329,14 @@ export class MemoryAdapter extends Adapter {
     const table = this._getTableOrCreate(modelName);
     const tableItems = Array.from(table.values());
     let modelItems = tableItems.map(tableItem =>
-      this.get(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
+      this.getService(ModelDefinitionUtils).convertColumnNamesToPropertyNames(
         modelName,
         tableItem,
       ),
     );
 
     if (where && typeof where === 'object')
-      modelItems = this.get(WhereClauseTool).filter(modelItems, where);
+      modelItems = this.getService(WhereClauseTool).filter(modelItems, where);
     return modelItems.length;
   }
 }

+ 95 - 95
src/adapter/builtin/memory-adapter.spec.js

@@ -10,7 +10,7 @@ describe('MemoryAdapter', function () {
     it('returns an existing table or creates a new', function () {
       const S = new Schema();
       S.defineModel({name: 'model'});
-      const A = S.get(MemoryAdapter);
+      const A = S.getService(MemoryAdapter);
       const table = A._getTableOrCreate('model');
       expect(table).to.be.instanceof(Map);
       const sameTable = A._getTableOrCreate('model');
@@ -23,7 +23,7 @@ describe('MemoryAdapter', function () {
         name: 'myModel',
         tableName: 'myTable',
       });
-      const A = S.get(MemoryAdapter);
+      const A = S.getService(MemoryAdapter);
       const table = A._getTableOrCreate('myModel');
       expect(table).to.be.instanceof(Map);
       const sameTable = A._getTableOrCreate('myModel');
@@ -36,7 +36,7 @@ describe('MemoryAdapter', function () {
         name: 'myModel',
         tableName: 'myTable',
       });
-      const A = S.get(MemoryAdapter);
+      const A = S.getService(MemoryAdapter);
       const table = A._getTableOrCreate('myModel');
       expect(table).to.be.instanceof(Map);
       const sameTable = A._tables.get('myTable');
@@ -48,7 +48,7 @@ describe('MemoryAdapter', function () {
     it('returns an unique number identifier', function () {
       const S = new Schema();
       S.defineModel({name: 'model'});
-      const A = S.get(MemoryAdapter);
+      const A = S.getService(MemoryAdapter);
       const id1 = A._genNextIdValue('model', DEF_PK);
       const id2 = A._genNextIdValue('model', DEF_PK);
       const id3 = A._genNextIdValue('model', DEF_PK);
@@ -69,7 +69,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result1 = await adapter.create('model', {});
       const result2 = await adapter.create('model', {});
       const result3 = await adapter.create('model', {[DEF_PK]: 3});
@@ -96,7 +96,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result1 = await adapter.create('model', {});
       const result2 = await adapter.create('model', {});
       const result3 = await adapter.create('model', {myId: 3});
@@ -121,7 +121,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10};
       const created = await adapter.create('model', input);
       const idValue = created[DEF_PK];
@@ -145,7 +145,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {
         [DEF_PK]: undefined,
         foo: 'string',
@@ -173,7 +173,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {
         [DEF_PK]: null,
         foo: 'string',
@@ -203,7 +203,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result1 = await adapter.create('model', {});
       const result2 = await adapter.create('model', {});
       const result3 = await adapter.create('model', {});
@@ -228,7 +228,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result1 = await adapter.create('model', {});
       const result2 = await adapter.create('model', {});
       const result3 = await adapter.create('model', {});
@@ -253,7 +253,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const promise = adapter.create('model', {foo: 'string', bar: 10});
       await expect(promise).to.be.rejectedWith(
         'The memory adapter able to generate only Number identifiers, ' +
@@ -280,7 +280,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const promise = adapter.create('model', {foo: 'string', bar: 10});
       await expect(promise).to.be.rejectedWith(
         'The memory adapter able to generate only Number identifiers, ' +
@@ -308,7 +308,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const promise = adapter.create('model', {});
       await expect(promise).to.be.rejectedWith(
         'The memory adapter able to generate only Number identifiers, ' +
@@ -335,7 +335,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const promise = adapter.create('model', {});
       await expect(promise).to.be.rejectedWith(
         'The memory adapter able to generate only Number identifiers, ' +
@@ -360,7 +360,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const idValue = 5;
       const input = {foo: 'string', bar: 10};
       const created = await adapter.create('model', {
@@ -386,7 +386,7 @@ describe('MemoryAdapter', function () {
           foo: DataType.STRING,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {foo: 'string'});
       const promise = adapter.create('model', created);
       await expect(promise).to.be.rejectedWith(
@@ -417,7 +417,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {});
       const idValue = created[DEF_PK];
       const defaults = {foo: 10, bar: 'string'};
@@ -447,7 +447,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {foo: undefined});
       const idValue = created[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -477,7 +477,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {foo: null});
       const idValue = created[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -504,7 +504,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {});
       expect(created).to.be.eql({foo: created.foo});
       const table = adapter._getTableOrCreate('model');
@@ -528,7 +528,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {foo: 10});
       const idValue = created[DEF_PK];
       expect(created).to.be.eql({[DEF_PK]: idValue, foo: 10});
@@ -554,7 +554,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {});
       const idValue = created[DEF_PK];
       expect(created).to.be.eql({[DEF_PK]: idValue, foo: 10});
@@ -577,7 +577,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10};
       const filter = {fields: 'foo'};
       const result = await adapter.create('model', input, filter);
@@ -599,7 +599,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.BOOLEAN,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10, baz: true};
       const filter = {fields: ['foo', 'bar']};
       const result = await adapter.create('model', input, filter);
@@ -634,7 +634,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10, baz: true};
       const filter = {fields: ['foo', 'bar']};
       const result = await adapter.create('model', input, filter);
@@ -661,7 +661,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 1, bar: 2};
       const created = await adapter.create('model', input);
       const idValue = created[DEF_PK];
@@ -683,7 +683,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const createdModelData = await adapter.create('model', {[DEF_PK]: 10});
       expect(createdModelData).to.be.eql({[DEF_PK]: 10});
       const table = adapter._getTableOrCreate('model');
@@ -713,7 +713,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const createdModelData = await adapter.create('model', {myId: 10});
       expect(createdModelData).to.be.eql({myId: 10});
       const table = adapter._getTableOrCreate('model');
@@ -747,7 +747,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {});
       const idValue = created[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -788,7 +788,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {});
       const idValue = created[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -822,7 +822,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {});
       const idValue = created[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -850,7 +850,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const promise = adapter.replaceById('model', 1, {foo: 2});
       await expect(promise).to.be.rejectedWith(
         format(
@@ -879,7 +879,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {bar: 1, baz: 2};
       const createdModelData = await adapter.create('model', input);
       expect(createdModelData).to.be.eql({
@@ -926,7 +926,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 1, bar: 2};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -973,7 +973,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const createdModelData = await adapter.create('model', {});
       const idValue = createdModelData[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -1018,7 +1018,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1052,7 +1052,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.BOOLEAN,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10, baz: true};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1099,7 +1099,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10, baz: true};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1148,7 +1148,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 1, bar: 2};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1188,7 +1188,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 1, bar: 2};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1221,7 +1221,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const idValue = 10;
       const createdModelData = await adapter.create('model', {
         [DEF_PK]: idValue,
@@ -1254,7 +1254,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const idValue = 10;
       const createdModelData = await adapter.create('model', {myId: idValue});
       expect(createdModelData).to.be.eql({myId: idValue});
@@ -1289,7 +1289,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const createdModelData = await adapter.create('model', {});
       const idValue = createdModelData[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -1325,7 +1325,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const createdModelData = await adapter.create('model', {});
       const idValue = createdModelData[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -1355,7 +1355,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const promise = adapter.patchById('model', 1, {foo: 2});
       await expect(promise).to.be.rejectedWith(
         format(
@@ -1384,7 +1384,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {bar: 1, baz: 2};
       const createdModelData = await adapter.create('model', input);
       expect(createdModelData).to.be.eql({foo: createdModelData.foo, ...input});
@@ -1427,7 +1427,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 1, bar: 2};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1479,7 +1479,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const createdModelData = await adapter.create('model', {});
       const idValue = createdModelData[DEF_PK];
       const defaults = {foo: 1, bar: 2};
@@ -1524,7 +1524,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1561,7 +1561,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.BOOLEAN,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10, baz: true};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1608,7 +1608,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10, baz: true};
       const createdModelData = await adapter.create('model', input);
       const idValue = createdModelData[DEF_PK];
@@ -1653,7 +1653,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result = await adapter.find('model');
       expect(result).to.be.instanceof(Array);
       expect(result).to.be.empty;
@@ -1669,7 +1669,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {});
       await adapter.create('model', {});
       await adapter.create('model', {});
@@ -1697,7 +1697,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1});
       table.set(2, {[DEF_PK]: 2});
@@ -1731,7 +1731,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1, foo: undefined});
       table.set(2, {[DEF_PK]: 2, foo: undefined});
@@ -1765,7 +1765,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1, foo: null});
       table.set(2, {[DEF_PK]: 2, foo: null});
@@ -1797,7 +1797,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string1', bar: 10};
       await adapter.create('model', input);
       await adapter.create('model', input);
@@ -1831,7 +1831,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.BOOLEAN,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string1', bar: 10, baz: true};
       await adapter.create('model', input);
       await adapter.create('model', input);
@@ -1886,7 +1886,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {foo: 'string', bar: 10, baz: true};
       await adapter.create('model', input);
       await adapter.create('model', input);
@@ -1931,7 +1931,7 @@ describe('MemoryAdapter', function () {
           foo: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {foo: 20});
       await adapter.create('model', {foo: 10});
       await adapter.create('model', {foo: 15});
@@ -1966,7 +1966,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {foo: 2, bar: 20});
       await adapter.create('model', {foo: 2, bar: 10});
       await adapter.create('model', {foo: 1, bar: 15});
@@ -2016,7 +2016,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const tableInput1 = {fooCol: 2, barCol: 20};
       const tableInput2 = {fooCol: 2, barCol: 10};
@@ -2065,7 +2065,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.STRING,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input1 = {foo: 20, bar: true, baz: 'abc'};
       const input2 = {foo: 10, bar: true, baz: 'abc'};
       const input3 = {foo: 15, bar: false, baz: 'abe'};
@@ -2111,7 +2111,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const tableInput1 = {fooCol: 20, barCol: true, bazCol: 'abc'};
       const tableInput2 = {fooCol: 10, barCol: true, bazCol: 'abc'};
@@ -2160,7 +2160,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1, foo: undefined});
       table.set(2, {[DEF_PK]: 2, foo: undefined});
@@ -2190,7 +2190,7 @@ describe('MemoryAdapter', function () {
           foo: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {});
       await adapter.create('model', {});
       await adapter.create('model', {});
@@ -2221,7 +2221,7 @@ describe('MemoryAdapter', function () {
           foo: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {});
       await adapter.create('model', {});
       await adapter.create('model', {});
@@ -2251,7 +2251,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const promise = adapter.findById('model', 1);
       await expect(promise).to.be.rejectedWith(
         format(
@@ -2277,7 +2277,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
       table.set(idValue, {[DEF_PK]: idValue});
@@ -2303,7 +2303,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
       const input = {foo: undefined};
@@ -2330,7 +2330,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
       const input = {foo: null};
@@ -2360,7 +2360,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const input = {bar: 1, baz: 2};
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
@@ -2386,7 +2386,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
       const input = {foo: 1, bar: 2};
@@ -2420,7 +2420,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
       table.set(idValue, {[DEF_PK]: idValue});
@@ -2443,7 +2443,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const input = {foo: 'string', bar: 10};
       const idValue = 1;
@@ -2467,7 +2467,7 @@ describe('MemoryAdapter', function () {
           baz: DataType.BOOLEAN,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const input = {foo: 'string', bar: 10, baz: true};
       const idValue = 1;
@@ -2505,7 +2505,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const tableInput = {fooCol: 'string', barCol: 10, bazCol: true};
       const idValue = 1;
@@ -2534,7 +2534,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1});
       table.set(2, {[DEF_PK]: 2});
@@ -2555,7 +2555,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result = await adapter.delete('model');
       expect(result).to.be.eq(0);
     });
@@ -2573,7 +2573,7 @@ describe('MemoryAdapter', function () {
           foo: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {foo: 20});
       await adapter.create('model', {foo: 10});
       await adapter.create('model', {foo: 15});
@@ -2601,7 +2601,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1, fooCol: 20});
       table.set(2, {[DEF_PK]: 2, fooCol: 10});
@@ -2628,7 +2628,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const input1 = {[DEF_PK]: 1, foo: undefined};
       const input2 = {[DEF_PK]: 2, foo: undefined};
@@ -2666,7 +2666,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result = await adapter.deleteById('model', 1);
       expect(result).to.be.false;
     });
@@ -2681,7 +2681,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const created = await adapter.create('model', {});
       const idValue = created[DEF_PK];
       const result = await adapter.deleteById('model', idValue);
@@ -2706,7 +2706,7 @@ describe('MemoryAdapter', function () {
           bar: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
       table.set(idValue, {qux: idValue, bar: 10});
@@ -2728,7 +2728,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result = await adapter.exists('model', 1);
       expect(result).to.be.false;
     });
@@ -2743,7 +2743,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {});
       const result = await adapter.exists('model', 1);
       expect(result).to.be.true;
@@ -2766,7 +2766,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       const idValue = 1;
       table.set(idValue, {qux: idValue});
@@ -2786,7 +2786,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const result = await adapter.count('model');
       expect(result).to.be.eq(0);
     });
@@ -2804,7 +2804,7 @@ describe('MemoryAdapter', function () {
           foo: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {foo: 20});
       await adapter.create('model', {foo: 10});
       await adapter.create('model', {foo: 15});
@@ -2828,7 +2828,7 @@ describe('MemoryAdapter', function () {
         name: 'model',
         datasource: 'memory',
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {});
       await adapter.create('model', {});
       await adapter.create('model', {});
@@ -2849,7 +2849,7 @@ describe('MemoryAdapter', function () {
           foo: DataType.NUMBER,
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       await adapter.create('model', {foo: 20});
       await adapter.create('model', {foo: 10});
       await adapter.create('model', {foo: 15});
@@ -2879,7 +2879,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1, fooCol: 20});
       table.set(2, {[DEF_PK]: 2, fooCol: 10});
@@ -2909,7 +2909,7 @@ describe('MemoryAdapter', function () {
           },
         },
       });
-      const adapter = new MemoryAdapter(schema._services, {});
+      const adapter = new MemoryAdapter(schema.container, {});
       const table = adapter._getTableOrCreate('model');
       table.set(1, {[DEF_PK]: 1, foo: undefined});
       table.set(2, {[DEF_PK]: 2, foo: undefined});

+ 2 - 2
src/adapter/decorator/data-sanitizing-decorator.js

@@ -1,5 +1,5 @@
 import {Adapter} from '../adapter.js';
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../errors/index.js';
 import {ModelDataSanitizer} from '../../definition/index.js';
 
@@ -20,7 +20,7 @@ export class DataSanitizingDecorator extends Service {
         adapter,
       );
 
-    const sanitizer = adapter.get(ModelDataSanitizer);
+    const sanitizer = adapter.getService(ModelDataSanitizer);
     const sanitize = (...args) => sanitizer.sanitize(...args);
 
     const create = adapter.create;

+ 2 - 2
src/adapter/decorator/data-sanitizing-decorator.spec.js

@@ -24,8 +24,8 @@ class TestAdapter extends Adapter {
   }
 }
 
-const A = S.get(TestAdapter);
-const V = S.get(ModelDataSanitizer);
+const A = S.getService(TestAdapter);
+const V = S.getService(ModelDataSanitizer);
 const sandbox = chai.spy.sandbox();
 
 describe('DataSanitizingDecorator', function () {

+ 4 - 4
src/adapter/decorator/data-validation-decorator.js

@@ -1,5 +1,5 @@
 import {Adapter} from '../adapter.js';
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../errors/index.js';
 import {ModelDataValidator} from '../../definition/index.js';
 
@@ -22,19 +22,19 @@ export class DataValidationDecorator extends Service {
 
     const create = adapter.create;
     adapter.create = function (modelName, modelData, filter) {
-      this.get(ModelDataValidator).validate(modelName, modelData);
+      this.getService(ModelDataValidator).validate(modelName, modelData);
       return create.call(this, modelName, modelData, filter);
     };
 
     const replaceById = adapter.replaceById;
     adapter.replaceById = function (modelName, id, modelData, filter) {
-      this.get(ModelDataValidator).validate(modelName, modelData);
+      this.getService(ModelDataValidator).validate(modelName, modelData);
       return replaceById.call(this, modelName, id, modelData, filter);
     };
 
     const patchById = adapter.patchById;
     adapter.patchById = function (modelName, id, modelData, filter) {
-      this.get(ModelDataValidator).validate(modelName, modelData, true);
+      this.getService(ModelDataValidator).validate(modelName, modelData, true);
       return patchById.call(this, modelName, id, modelData, filter);
     };
   }

+ 2 - 2
src/adapter/decorator/data-validation-decorator.spec.js

@@ -24,8 +24,8 @@ class TestAdapter extends Adapter {
   }
 }
 
-const A = S.get(TestAdapter);
-const V = S.get(ModelDataValidator);
+const A = S.getService(TestAdapter);
+const V = S.getService(ModelDataValidator);
 const sandbox = chai.spy.sandbox();
 
 describe('DataValidationDecorator', function () {

+ 2 - 2
src/adapter/decorator/default-values-decorator.js

@@ -1,5 +1,5 @@
 import {Adapter} from '../adapter.js';
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../errors/index.js';
 import {ModelDefinitionUtils} from '../../definition/index.js';
 
@@ -20,7 +20,7 @@ export class DefaultValuesDecorator extends Service {
         adapter,
       );
 
-    const utils = adapter.get(ModelDefinitionUtils);
+    const utils = adapter.getService(ModelDefinitionUtils);
     const setDefaults = (...args) =>
       utils.setDefaultValuesToEmptyProperties(...args);
 

+ 2 - 2
src/adapter/decorator/default-values-decorator.spec.js

@@ -45,8 +45,8 @@ class TestAdapter extends Adapter {
   }
 }
 
-const A = S.get(TestAdapter);
-const U = S.get(ModelDefinitionUtils);
+const A = S.getService(TestAdapter);
+const U = S.getService(ModelDefinitionUtils);
 const sandbox = chai.spy.sandbox();
 
 describe('DefaultValuesDecorator', function () {

+ 2 - 2
src/adapter/decorator/fields-filtering-decorator.js

@@ -1,5 +1,5 @@
 import {Adapter} from '../adapter.js';
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {FieldsClauseTool} from '../../filter/index.js';
 import {InvalidArgumentError} from '../../errors/index.js';
 
@@ -20,7 +20,7 @@ export class FieldsFilteringDecorator extends Service {
         adapter,
       );
 
-    const tool = adapter.get(FieldsClauseTool);
+    const tool = adapter.getService(FieldsClauseTool);
     const selectFields = (...args) => tool.filter(...args);
 
     const create = adapter.create;

+ 2 - 2
src/adapter/decorator/fields-filtering-decorator.spec.js

@@ -48,8 +48,8 @@ class TestAdapter extends Adapter {
   }
 }
 
-const A = S.get(TestAdapter);
-const T = S.get(FieldsClauseTool);
+const A = S.getService(TestAdapter);
+const T = S.getService(FieldsClauseTool);
 const sandbox = chai.spy.sandbox();
 
 describe('FieldsFilteringDecorator', function () {

+ 2 - 2
src/adapter/decorator/inclusion-decorator.js

@@ -1,5 +1,5 @@
 import {Adapter} from '../adapter.js';
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {IncludeClauseTool} from '../../filter/index.js';
 import {InvalidArgumentError} from '../../errors/index.js';
 
@@ -20,7 +20,7 @@ export class InclusionDecorator extends Service {
         adapter,
       );
 
-    const tool = adapter.get(IncludeClauseTool);
+    const tool = adapter.getService(IncludeClauseTool);
     const includeTo = (...args) => tool.includeTo(...args);
 
     const create = adapter.create;

+ 2 - 2
src/adapter/decorator/inclusion-decorator.spec.js

@@ -46,8 +46,8 @@ class TestAdapter extends Adapter {
   }
 }
 
-const A = S.get(TestAdapter);
-const T = S.get(IncludeClauseTool);
+const A = S.getService(TestAdapter);
+const T = S.getService(IncludeClauseTool);
 const sandbox = chai.spy.sandbox();
 
 describe('InclusionDecorator', function () {

+ 1 - 1
src/definition/datasource/datasource-definition-validator.js

@@ -1,4 +1,4 @@
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../errors/index.js';
 
 /**

+ 3 - 3
src/definition/definition-registry.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../errors/index.js';
 import {ModelDefinitionValidator} from './model/index.js';
 import {DatasourceDefinitionValidator} from '../definition/index.js';
@@ -27,7 +27,7 @@ export class DefinitionRegistry extends Service {
    * @param datasourceDef
    */
   addDatasource(datasourceDef) {
-    this.get(DatasourceDefinitionValidator).validate(datasourceDef);
+    this.getService(DatasourceDefinitionValidator).validate(datasourceDef);
     const name = datasourceDef.name;
     if (name in this._datasources)
       throw new InvalidArgumentError(
@@ -66,7 +66,7 @@ export class DefinitionRegistry extends Service {
    * @param modelDef
    */
   addModel(modelDef) {
-    this.get(ModelDefinitionValidator).validate(modelDef);
+    this.getService(ModelDefinitionValidator).validate(modelDef);
     const name = modelDef.name;
     if (name in this._models)
       throw new InvalidArgumentError('The model %v is already defined.', name);

+ 2 - 2
src/definition/definition-registry.spec.js

@@ -39,7 +39,7 @@ describe('DefinitionRegistry', function () {
   });
 
   it('uses DatasourceDefinitionValidator to validate a given datasource', function () {
-    const V = S.get(DatasourceDefinitionValidator);
+    const V = S.getService(DatasourceDefinitionValidator);
     sandbox.on(V, 'validate');
     const datasource = {name: 'datasource', adapter: 'adapter'};
     S.addDatasource(datasource);
@@ -68,7 +68,7 @@ describe('DefinitionRegistry', function () {
   });
 
   it('uses ModelDefinitionValidator to validate a given model', function () {
-    const V = S.get(ModelDefinitionValidator);
+    const V = S.getService(ModelDefinitionValidator);
     sandbox.on(V, 'validate');
     const model = {name: 'model'};
     S.addModel(model);

+ 4 - 5
src/definition/model/model-data-sanitizer.js

@@ -1,4 +1,4 @@
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../errors/index.js';
 import {ModelDefinitionUtils} from './model-definition-utils.js';
 
@@ -26,9 +26,8 @@ export class ModelDataSanitizer extends Service {
           'must be an Object, but %v given.',
         modelData,
       );
-    return this.get(ModelDefinitionUtils).excludeObjectKeysByRelationNames(
-      modelName,
-      modelData,
-    );
+    return this.getService(
+      ModelDefinitionUtils,
+    ).excludeObjectKeysByRelationNames(modelName, modelData);
   }
 }

+ 2 - 2
src/definition/model/model-data-validator.js

@@ -1,4 +1,4 @@
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {DataType} from './properties/index.js';
 import {getCtorName} from '../../utils/index.js';
 import {isPureObject} from '../../utils/index.js';
@@ -24,7 +24,7 @@ export class ModelDataValidator extends Service {
         modelData,
       );
     const propDefs =
-      this.get(
+      this.getService(
         ModelDefinitionUtils,
       ).getPropertiesDefinitionInBaseModelHierarchy(modelName);
     const propNames = Object.keys(isPartial ? modelData : propDefs);

+ 109 - 105
src/definition/model/model-data-validator.spec.js

@@ -9,7 +9,7 @@ describe('ModelDataValidator', function () {
     it('does not throw an error if a model does not have a property of a given data', function () {
       const schema = new Schema();
       schema.defineModel({name: 'model'});
-      schema.get(ModelDataValidator).validate('model', {foo: 'bar'});
+      schema.getService(ModelDataValidator).validate('model', {foo: 'bar'});
     });
 
     it('throws an error if a given data is not a pure object', function () {
@@ -20,7 +20,7 @@ describe('ModelDataValidator', function () {
           datasource: 'datasource',
         });
         return () =>
-          schema.get(ModelDataValidator).validate('model', modelData);
+          schema.getService(ModelDataValidator).validate('model', modelData);
       };
       const error = given =>
         format(
@@ -49,7 +49,7 @@ describe('ModelDataValidator', function () {
         base: 'modelA',
       });
       const throwable = () =>
-        schema.get(ModelDataValidator).validate('modelB', {foo: 10});
+        schema.getService(ModelDataValidator).validate('modelB', {foo: 10});
       expect(throwable).to.throw(
         'The property "foo" of the model "modelB" must ' +
           'have a String, but Number given.',
@@ -68,7 +68,7 @@ describe('ModelDataValidator', function () {
         },
       });
       const throwable = () =>
-        schema.get(ModelDataValidator).validate('model', {});
+        schema.getService(ModelDataValidator).validate('model', {});
       expect(throwable).to.throw(
         'The property "foo" of the model "model" ' +
           'is required, but undefined given.',
@@ -87,7 +87,9 @@ describe('ModelDataValidator', function () {
         },
       });
       const throwable = () =>
-        schema.get(ModelDataValidator).validate('model', {foo: undefined});
+        schema
+          .getService(ModelDataValidator)
+          .validate('model', {foo: undefined});
       expect(throwable).to.throw(
         'The property "foo" of the model "model" is required, but undefined given.',
       );
@@ -105,7 +107,7 @@ describe('ModelDataValidator', function () {
         },
       });
       const throwable = () =>
-        schema.get(ModelDataValidator).validate('model', {foo: null});
+        schema.getService(ModelDataValidator).validate('model', {foo: null});
       expect(throwable).to.throw(
         'The property "foo" of the model "model" is required, but null given.',
       );
@@ -123,7 +125,7 @@ describe('ModelDataValidator', function () {
             },
           },
         });
-        schema.get(ModelDataValidator).validate('model', {}, true);
+        schema.getService(ModelDataValidator).validate('model', {}, true);
       });
 
       it('throws an error if a required property is undefined', function () {
@@ -139,7 +141,7 @@ describe('ModelDataValidator', function () {
         });
         const throwable = () =>
           schema
-            .get(ModelDataValidator)
+            .getService(ModelDataValidator)
             .validate('model', {foo: undefined}, true);
         expect(throwable).to.throw(
           'The property "foo" of the model "model" ' +
@@ -159,7 +161,9 @@ describe('ModelDataValidator', function () {
           },
         });
         const throwable = () =>
-          schema.get(ModelDataValidator).validate('model', {foo: null}, true);
+          schema
+            .getService(ModelDataValidator)
+            .validate('model', {foo: null}, true);
         expect(throwable).to.throw(
           'The property "foo" of the model "model" is required, but null given.',
         );
@@ -177,7 +181,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -191,7 +195,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -205,7 +209,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 'bar',
           });
         });
@@ -219,7 +223,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 10,
           });
         });
@@ -233,7 +237,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: true,
           });
         });
@@ -247,7 +251,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: false,
           });
         });
@@ -261,7 +265,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: [],
           });
         });
@@ -275,7 +279,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ANY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: {},
           });
         });
@@ -293,7 +297,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -309,7 +313,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -325,7 +329,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 'bar',
           });
         });
@@ -341,7 +345,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 10,
           });
         });
@@ -357,7 +361,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: true,
           });
         });
@@ -373,7 +377,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: false,
           });
         });
@@ -389,7 +393,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: [],
           });
         });
@@ -405,7 +409,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: {},
           });
         });
@@ -423,7 +427,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.STRING,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -437,7 +441,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.STRING,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -451,7 +455,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.STRING,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 'bar',
           });
         });
@@ -466,7 +470,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -485,7 +489,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -504,7 +508,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -523,7 +527,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -542,7 +546,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -564,7 +568,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -580,7 +584,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -596,7 +600,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 'bar',
           });
         });
@@ -613,7 +617,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -634,7 +638,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -655,7 +659,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -676,7 +680,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -697,7 +701,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -719,7 +723,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.NUMBER,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -733,7 +737,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.NUMBER,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -748,7 +752,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -766,7 +770,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.NUMBER,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 10,
           });
         });
@@ -781,7 +785,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -800,7 +804,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -819,7 +823,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -838,7 +842,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -860,7 +864,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -876,7 +880,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -893,7 +897,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -913,7 +917,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: 10,
           });
         });
@@ -930,7 +934,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -951,7 +955,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -972,7 +976,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -993,7 +997,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -1015,7 +1019,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.BOOLEAN,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -1029,7 +1033,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.BOOLEAN,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -1044,7 +1048,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -1063,7 +1067,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -1081,7 +1085,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.BOOLEAN,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: true,
           });
         });
@@ -1095,7 +1099,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.BOOLEAN,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: false,
           });
         });
@@ -1110,7 +1114,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -1129,7 +1133,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -1151,7 +1155,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -1167,7 +1171,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -1184,7 +1188,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -1205,7 +1209,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -1225,7 +1229,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: true,
           });
         });
@@ -1241,7 +1245,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: false,
           });
         });
@@ -1258,7 +1262,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -1279,7 +1283,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -1301,7 +1305,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ARRAY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -1315,7 +1319,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ARRAY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -1330,7 +1334,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -1349,7 +1353,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -1368,7 +1372,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -1387,7 +1391,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -1405,7 +1409,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.ARRAY,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: [],
           });
         });
@@ -1420,7 +1424,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -1442,7 +1446,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -1458,7 +1462,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -1475,7 +1479,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -1496,7 +1500,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -1517,7 +1521,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -1538,7 +1542,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -1558,7 +1562,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: [],
           });
         });
@@ -1575,7 +1579,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: {},
             });
           expect(throwable).to.throw(
@@ -1597,7 +1601,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.OBJECT,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -1611,7 +1615,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.OBJECT,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -1626,7 +1630,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -1645,7 +1649,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -1664,7 +1668,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -1683,7 +1687,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -1702,7 +1706,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -1720,7 +1724,7 @@ describe('ModelDataValidator', function () {
               foo: DataType.OBJECT,
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: {},
           });
         });
@@ -1738,7 +1742,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: undefined,
           });
         });
@@ -1754,7 +1758,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: null,
           });
         });
@@ -1771,7 +1775,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 'bar',
             });
           expect(throwable).to.throw(
@@ -1792,7 +1796,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: 10,
             });
           expect(throwable).to.throw(
@@ -1813,7 +1817,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: true,
             });
           expect(throwable).to.throw(
@@ -1834,7 +1838,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: false,
             });
           expect(throwable).to.throw(
@@ -1855,7 +1859,7 @@ describe('ModelDataValidator', function () {
             },
           });
           const throwable = () =>
-            S.get(ModelDataValidator).validate('model', {
+            S.getService(ModelDataValidator).validate('model', {
               foo: [],
             });
           expect(throwable).to.throw(
@@ -1875,7 +1879,7 @@ describe('ModelDataValidator', function () {
               },
             },
           });
-          S.get(ModelDataValidator).validate('model', {
+          S.getService(ModelDataValidator).validate('model', {
             foo: {},
           });
         });

+ 9 - 7
src/definition/model/model-definition-utils.js

@@ -1,4 +1,4 @@
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {DataType} from './properties/index.js';
 import {cloneDeep} from '../../utils/index.js';
 import {excludeObjectKeys} from '../../utils/index.js';
@@ -68,7 +68,7 @@ export class ModelDefinitionUtils extends Service {
    * @param modelName
    */
   getTableNameByModelName(modelName) {
-    const modelDef = this.get(DefinitionRegistry).getModel(modelName);
+    const modelDef = this.getService(DefinitionRegistry).getModel(modelName);
     return modelDef.tableName ?? modelName;
   }
 
@@ -224,7 +224,7 @@ export class ModelDefinitionUtils extends Service {
    * @return {Record<string, {}>}
    */
   getOwnPropertiesDefinitionOfPrimaryKeys(modelName) {
-    const modelDef = this.get(DefinitionRegistry).getModel(modelName);
+    const modelDef = this.getService(DefinitionRegistry).getModel(modelName);
     const propDefs = modelDef.properties ?? {};
     const pkPropNames = Object.keys(propDefs).filter(propName => {
       const propDef = propDefs[propName];
@@ -240,7 +240,7 @@ export class ModelDefinitionUtils extends Service {
    * @return {Record<string, {}>}
    */
   getOwnPropertiesDefinitionWithoutPrimaryKeys(modelName) {
-    const modelDef = this.get(DefinitionRegistry).getModel(modelName);
+    const modelDef = this.getService(DefinitionRegistry).getModel(modelName);
     const propDefs = modelDef.properties ?? {};
     return Object.keys(propDefs).reduce((result, propName) => {
       const propDef = propDefs[propName];
@@ -272,7 +272,8 @@ export class ModelDefinitionUtils extends Service {
       const regularPropDefs =
         this.getOwnPropertiesDefinitionWithoutPrimaryKeys(currModelName);
       result = {...regularPropDefs, ...result};
-      const modelDef = this.get(DefinitionRegistry).getModel(currModelName);
+      const modelDef =
+        this.getService(DefinitionRegistry).getModel(currModelName);
       if (modelDef.base) recursion(modelDef.base, currModelName);
     };
     recursion(modelName);
@@ -286,7 +287,7 @@ export class ModelDefinitionUtils extends Service {
    * @return {Record<string, {}>}
    */
   getOwnRelationsDefinition(modelName) {
-    const modelDef = this.get(DefinitionRegistry).getModel(modelName);
+    const modelDef = this.getService(DefinitionRegistry).getModel(modelName);
     return modelDef.relations ?? {};
   }
 
@@ -304,7 +305,8 @@ export class ModelDefinitionUtils extends Service {
           'The model %v has a circular inheritance.',
           currModelName,
         );
-      const modelDef = this.get(DefinitionRegistry).getModel(currModelName);
+      const modelDef =
+        this.getService(DefinitionRegistry).getModel(currModelName);
       const ownRelDefs = modelDef.relations ?? {};
       result = {...ownRelDefs, ...result};
       if (modelDef.base) recursion(modelDef.base, currModelName);

+ 72 - 72
src/definition/model/model-definition-utils.spec.js

@@ -22,14 +22,14 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsPropertyName('model');
       expect(result).to.be.eq(DEF_PK);
     });
 
     it('throws an error if a property name of a default primary key already in use as a regular property', function () {
       const schema = new Schema();
-      const S = schema.get(ModelDefinitionUtils);
+      const S = schema.getService(ModelDefinitionUtils);
       sandbox.on(
         S,
         'getPropertiesDefinitionInBaseModelHierarchy',
@@ -62,7 +62,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsPropertyName('model');
       expect(result).to.be.eql('myId');
     });
@@ -82,7 +82,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsPropertyName('model');
       expect(result).to.be.eq('foo');
     });
@@ -103,7 +103,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsPropertyName('modelB');
       expect(result).to.be.eq('foo');
     });
@@ -125,7 +125,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsColumnName('model');
       expect(result).to.be.eq('foo');
     });
@@ -146,7 +146,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsColumnName('model');
       expect(result).to.be.eq('fooColumn');
     });
@@ -157,14 +157,14 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsColumnName('model');
       expect(result).to.be.eq(DEF_PK);
     });
 
     it('throws an error if a property name of a default primary key already in use as a regular property', function () {
       const schema = new Schema();
-      const S = schema.get(ModelDefinitionUtils);
+      const S = schema.getService(ModelDefinitionUtils);
       sandbox.on(
         S,
         'getPropertiesDefinitionInBaseModelHierarchy',
@@ -197,7 +197,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsColumnName('model');
       expect(result).to.be.eql('myId');
     });
@@ -218,7 +218,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPrimaryKeyAsPropertyName('modelB');
       expect(result).to.be.eq('foo');
     });
@@ -231,7 +231,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getTableNameByModelName('model');
       expect(result).to.be.eq('model');
     });
@@ -243,7 +243,7 @@ describe('ModelDefinitionUtils', function () {
         tableName: 'table',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getTableNameByModelName('model');
       expect(result).to.be.eq('table');
     });
@@ -259,7 +259,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getColumnNameByPropertyName('model', 'foo');
       expect(result).to.be.eq('foo');
     });
@@ -276,7 +276,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getColumnNameByPropertyName('model', 'foo');
       expect(result).to.be.eq('bar');
     });
@@ -288,7 +288,7 @@ describe('ModelDefinitionUtils', function () {
       });
       const throwable = () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .getColumnNameByPropertyName('model', 'foo');
       expect(throwable).to.throw(InvalidArgumentError);
     });
@@ -309,7 +309,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getColumnNameByPropertyName('modelB', 'foo');
       expect(result).to.be.eq('fooColumn');
     });
@@ -325,7 +325,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDefaultPropertyValue('model', 'foo');
       expect(result).to.be.undefined;
     });
@@ -342,7 +342,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDefaultPropertyValue('model', 'foo');
       expect(result).to.be.eq('default');
     });
@@ -359,7 +359,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDefaultPropertyValue('model', 'foo');
       expect(result).to.be.eq('default');
     });
@@ -371,7 +371,7 @@ describe('ModelDefinitionUtils', function () {
       });
       const throwable = () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .getDefaultPropertyValue('model', 'foo');
       expect(throwable).to.throw(InvalidArgumentError);
     });
@@ -392,7 +392,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDefaultPropertyValue('modelB', 'foo');
       expect(result).to.be.eq('default');
     });
@@ -405,7 +405,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .setDefaultValuesToEmptyProperties('model', {foo: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -420,7 +420,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .setDefaultValuesToEmptyProperties('model', {foo: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -437,7 +437,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .setDefaultValuesToEmptyProperties('model', {});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -454,7 +454,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .setDefaultValuesToEmptyProperties('model', {foo: undefined});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -471,7 +471,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .setDefaultValuesToEmptyProperties('model', {foo: null});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -500,7 +500,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .setDefaultValuesToEmptyProperties('model', {});
       expect(result).to.be.eql({
         foo: 'string',
@@ -534,7 +534,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .setDefaultValuesToEmptyProperties('modelB', {});
       expect(result).to.be.eql({
         foo: 'string',
@@ -556,7 +556,7 @@ describe('ModelDefinitionUtils', function () {
           },
         });
         const result = schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .setDefaultValuesToEmptyProperties('model', {}, true);
         expect(result).to.be.eql({});
       });
@@ -573,7 +573,7 @@ describe('ModelDefinitionUtils', function () {
           },
         });
         const result = schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .setDefaultValuesToEmptyProperties('model', {foo: undefined}, true);
         expect(result).to.be.eql({foo: 'string'});
       });
@@ -590,7 +590,7 @@ describe('ModelDefinitionUtils', function () {
           },
         });
         const result = schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .setDefaultValuesToEmptyProperties('model', {foo: null}, true);
         expect(result).to.be.eql({foo: 'string'});
       });
@@ -604,7 +604,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertPropertyNamesToColumnNames('model', {foo: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -619,7 +619,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertPropertyNamesToColumnNames('model', {foo: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -640,7 +640,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertPropertyNamesToColumnNames('model', {foo: 'string'});
       expect(result).to.be.eql({fooColumn: 'string'});
     });
@@ -665,7 +665,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertPropertyNamesToColumnNames('modelB', {foo: 'string'});
       expect(result).to.be.eql({fooColumn: 'string'});
     });
@@ -678,7 +678,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertColumnNamesToPropertyNames('model', {foo: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -693,7 +693,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertColumnNamesToPropertyNames('model', {foo: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -714,7 +714,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertColumnNamesToPropertyNames('model', {fooColumn: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -739,7 +739,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .convertColumnNamesToPropertyNames('modelA', {fooColumn: 'string'});
       expect(result).to.be.eql({foo: 'string'});
     });
@@ -755,7 +755,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDataTypeByPropertyName('model', 'foo');
       expect(result).to.be.eq(DataType.STRING);
     });
@@ -771,7 +771,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDataTypeByPropertyName('model', 'foo');
       expect(result).to.be.eq(DataType.STRING);
     });
@@ -783,7 +783,7 @@ describe('ModelDefinitionUtils', function () {
       });
       const throwable = () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .getDataTypeByPropertyName('model', 'property');
       expect(throwable).to.throw(InvalidArgumentError);
     });
@@ -801,7 +801,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDataTypeByPropertyName('modelB', 'foo');
       expect(result).to.be.eq(DataType.STRING);
     });
@@ -821,7 +821,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getDataTypeByPropertyName('modelB', 'foo');
       expect(result).to.be.eq(DataType.STRING);
     });
@@ -834,7 +834,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnPropertiesDefinitionWithoutPrimaryKeys('model');
       expect(result).to.be.eql({});
     });
@@ -853,7 +853,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnPropertiesDefinitionWithoutPrimaryKeys('model');
       expect(result).to.be.eql({
         foo: DataType.STRING,
@@ -886,7 +886,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnPropertiesDefinitionWithoutPrimaryKeys('modelB');
       expect(result).to.be.eql({
         foo: DataType.NUMBER,
@@ -901,7 +901,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnPropertiesDefinitionOfPrimaryKeys('model');
       expect(result).to.be.eql({});
     });
@@ -920,7 +920,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnPropertiesDefinitionOfPrimaryKeys('model');
       expect(result).to.be.eql({
         id: {
@@ -955,7 +955,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnPropertiesDefinitionOfPrimaryKeys('modelB');
       expect(result).to.be.eql({
         id: {
@@ -973,7 +973,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPropertiesDefinitionInBaseModelHierarchy('model');
       expect(result).to.be.eql({});
     });
@@ -992,7 +992,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPropertiesDefinitionInBaseModelHierarchy('model');
       expect(result).to.be.eql({
         id: {
@@ -1020,7 +1020,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPropertiesDefinitionInBaseModelHierarchy('modelB');
       expect(result).to.be.eql({
         foo: DataType.STRING,
@@ -1053,7 +1053,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPropertiesDefinitionInBaseModelHierarchy('modelB');
       expect(result).to.be.eql({
         id: {
@@ -1089,7 +1089,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getPropertiesDefinitionInBaseModelHierarchy('modelB');
       expect(result).to.be.eql({
         id2: {
@@ -1109,7 +1109,7 @@ describe('ModelDefinitionUtils', function () {
       });
       const throwable = () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .getPropertiesDefinitionInBaseModelHierarchy('model');
       expect(throwable).to.throw(
         'The model "model" has a circular inheritance.',
@@ -1124,7 +1124,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnRelationsDefinition('model');
       expect(result).to.be.eql({});
     });
@@ -1141,7 +1141,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnRelationsDefinition('model');
       expect(result).to.be.eql({
         foo: {
@@ -1173,7 +1173,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getOwnRelationsDefinition('modelB');
       expect(result).to.be.eql({
         bar: {
@@ -1191,7 +1191,7 @@ describe('ModelDefinitionUtils', function () {
         name: 'model',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getRelationsDefinitionInBaseModelHierarchy('model');
       expect(result).to.be.eql({});
     });
@@ -1212,7 +1212,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getRelationsDefinitionInBaseModelHierarchy('model');
       expect(result).to.be.eql({
         foo: {
@@ -1248,7 +1248,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getRelationsDefinitionInBaseModelHierarchy('modelB');
       expect(result).to.be.eql({
         foo: {
@@ -1288,7 +1288,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getRelationsDefinitionInBaseModelHierarchy('modelB');
       expect(result).to.be.eql({
         foo: {
@@ -1310,7 +1310,7 @@ describe('ModelDefinitionUtils', function () {
       });
       const throwable = () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .getRelationsDefinitionInBaseModelHierarchy('model');
       expect(throwable).to.throw(
         'The model "model" has a circular inheritance.',
@@ -1323,7 +1323,7 @@ describe('ModelDefinitionUtils', function () {
       const schema = new Schema();
       const throwable = () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .getRelationDefinitionByName('model', 'myRelation');
       expect(throwable).to.throw('The model "model" is not defined.');
     });
@@ -1335,7 +1335,7 @@ describe('ModelDefinitionUtils', function () {
       });
       const throwable = () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .getRelationDefinitionByName('model', 'myRelation');
       expect(throwable).to.throw(
         'The model "model" does not have relation name "myRelation".',
@@ -1354,7 +1354,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getRelationDefinitionByName('model', 'myRelation');
       expect(result).to.be.eql({
         type: RelationType.BELONGS_TO,
@@ -1384,7 +1384,7 @@ describe('ModelDefinitionUtils', function () {
         },
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getRelationDefinitionByName('modelB', 'myRelation');
       expect(result).to.be.eql({
         type: RelationType.REFERENCES_MANY,
@@ -1408,7 +1408,7 @@ describe('ModelDefinitionUtils', function () {
         base: 'modelA',
       });
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .getRelationDefinitionByName('modelB', 'myRelation');
       expect(result).to.be.eql({
         type: RelationType.BELONGS_TO,
@@ -1440,7 +1440,7 @@ describe('ModelDefinitionUtils', function () {
         qux: {val: 'quxVal'},
       };
       const result = schema
-        .get(ModelDefinitionUtils)
+        .getService(ModelDefinitionUtils)
         .excludeObjectKeysByRelationNames('model', input);
       expect(result).to.be.eql({foo: 'fooVal', bar: {val: 'barVal'}});
       expect(result).to.be.not.eq(input);
@@ -1451,7 +1451,7 @@ describe('ModelDefinitionUtils', function () {
       schema.defineModel({name: 'model'});
       const throwable = v => () =>
         schema
-          .get(ModelDefinitionUtils)
+          .getService(ModelDefinitionUtils)
           .excludeObjectKeysByRelationNames('model', v);
       const error = v =>
         format(

+ 3 - 3
src/definition/model/model-definition-validator.js

@@ -1,4 +1,4 @@
-import {Service} from '../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../errors/index.js';
 import {RelationsDefinitionValidator} from './relations/index.js';
 import {PropertiesDefinitionValidator} from './properties/index.js';
@@ -57,7 +57,7 @@ export class ModelDefinitionValidator extends Service {
           modelDef.properties,
         );
       }
-      this.get(PropertiesDefinitionValidator).validate(
+      this.getService(PropertiesDefinitionValidator).validate(
         modelDef.name,
         modelDef.properties,
       );
@@ -74,7 +74,7 @@ export class ModelDefinitionValidator extends Service {
           modelDef.relations,
         );
       }
-      this.get(RelationsDefinitionValidator).validate(
+      this.getService(RelationsDefinitionValidator).validate(
         modelDef.name,
         modelDef.relations,
       );

+ 2 - 2
src/definition/model/model-definition-validator.spec.js

@@ -123,7 +123,7 @@ describe('ModelDefinitionValidator', function () {
     });
 
     it('uses PropertiesDefinitionValidator service to validate model properties', function () {
-      const V = S.get(PropertiesDefinitionValidator);
+      const V = S.getService(PropertiesDefinitionValidator);
       sandbox.on(V, 'validate');
       const properties = {};
       S.validate({name: 'model', properties});
@@ -132,7 +132,7 @@ describe('ModelDefinitionValidator', function () {
     });
 
     it('uses RelationsDefinitionValidator service to validate model relations', function () {
-      const V = S.get(RelationsDefinitionValidator);
+      const V = S.getService(RelationsDefinitionValidator);
       sandbox.on(V, 'validate');
       const relations = {};
       S.validate({name: 'model', relations});

+ 2 - 2
src/definition/model/properties/default-values-definition-validator.js

@@ -1,4 +1,4 @@
-import {Service} from '../../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../../errors/index.js';
 import {ModelDataValidator} from '../model-data-validator.js';
 
@@ -35,7 +35,7 @@ export class DefaultValuesDefinitionValidator extends Service {
           ? propDef.default()
           : propDef.default;
       try {
-        this.get(ModelDataValidator).validatePropertyValue(
+        this.getService(ModelDataValidator).validatePropertyValue(
           modelName,
           propName,
           propDef,

+ 1 - 1
src/definition/model/properties/primary-keys-definition-validator.js

@@ -1,4 +1,4 @@
-import {Service} from '../../../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../../../errors/index.js';
 import {DEFAULT_PRIMARY_KEY_PROPERTY_NAME as DEF_PK} from '../model-definition-utils.js';
 

+ 9 - 3
src/definition/model/properties/properties-definition-validator.js

@@ -1,5 +1,5 @@
+import {Service} from '@e22m4u/service';
 import {DataType as Type} from './data-type.js';
-import {Service} from '../../../service/index.js';
 import {InvalidArgumentError} from '../../../errors/index.js';
 import {PrimaryKeysDefinitionValidator} from './primary-keys-definition-validator.js';
 import {DefaultValuesDefinitionValidator} from './default-values-definition-validator.js';
@@ -34,8 +34,14 @@ export class PropertiesDefinitionValidator extends Service {
       const propDef = propDefs[propName];
       this._validateProperty(modelName, propName, propDef);
     });
-    this.get(PrimaryKeysDefinitionValidator).validate(modelName, propDefs);
-    this.get(DefaultValuesDefinitionValidator).validate(modelName, propDefs);
+    this.getService(PrimaryKeysDefinitionValidator).validate(
+      modelName,
+      propDefs,
+    );
+    this.getService(DefaultValuesDefinitionValidator).validate(
+      modelName,
+      propDefs,
+    );
   }
 
   /**

+ 2 - 2
src/definition/model/properties/properties-definition-validator.spec.js

@@ -353,7 +353,7 @@ describe('PropertiesDefinitionValidator', function () {
     });
 
     it('uses PrimaryKeysDefinitionValidator to validate primary keys', function () {
-      const V = S.get(PrimaryKeysDefinitionValidator);
+      const V = S.getService(PrimaryKeysDefinitionValidator);
       sandbox.on(V, 'validate');
       const propDefs = {};
       S.validate('model', propDefs);
@@ -362,7 +362,7 @@ describe('PropertiesDefinitionValidator', function () {
     });
 
     it('uses DefaultValuesDefinitionValidator to validate default values', function () {
-      const V = S.get(DefaultValuesDefinitionValidator);
+      const V = S.getService(DefaultValuesDefinitionValidator);
       sandbox.on(V, 'validate');
       const propDefs = {};
       S.validate('model', propDefs);

+ 1 - 1
src/definition/model/relations/relations-definition-validator.js

@@ -1,5 +1,5 @@
+import {Service} from '@e22m4u/service';
 import {RelationType} from './relation-type.js';
-import {Service} from '../../../service/index.js';
 import {RelationType as Type} from './relation-type.js';
 import {InvalidArgumentError} from '../../../errors/index.js';
 

+ 4 - 2
src/filter/fields-clause-tool.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {selectObjectKeys} from '../utils/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
 import {ModelDefinitionUtils} from '../definition/index.js';
@@ -38,7 +38,9 @@ export class FieldsClauseTool extends Service {
     });
 
     const pkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(modelName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        modelName,
+      );
     if (fields.indexOf(pkPropName) === -1) fields.push(pkPropName);
 
     entities = entities.map(entity => selectObjectKeys(entity, fields));

+ 1 - 1
src/filter/fields-clause-tool.spec.js

@@ -7,7 +7,7 @@ import {DEFAULT_PRIMARY_KEY_PROPERTY_NAME as DEF_PK} from '../definition/index.j
 const S = new Schema();
 const MODEL_NAME = 'model';
 S.defineModel({name: MODEL_NAME});
-const T = S.get(FieldsClauseTool);
+const T = S.getService(FieldsClauseTool);
 
 describe('FieldsClauseTool', function () {
   describe('filter', function () {

+ 13 - 14
src/filter/include-clause-tool.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {RelationType} from '../definition/index.js';
 import {HasOneResolver} from '../relations/index.js';
 import {HasManyResolver} from '../relations/index.js';
@@ -27,16 +27,15 @@ export class IncludeClauseTool extends Service {
     clause = IncludeClauseTool.normalizeIncludeClause(clause);
     const promises = [];
     clause.forEach(inclusion => {
-      const relDef = this.get(ModelDefinitionUtils).getRelationDefinitionByName(
-        modelName,
-        inclusion.relation,
-      );
+      const relDef = this.getService(
+        ModelDefinitionUtils,
+      ).getRelationDefinitionByName(modelName, inclusion.relation);
       switch (relDef.type) {
         // BELONGS_TO
         case RelationType.BELONGS_TO:
           if (relDef.polymorphic) {
             promises.push(
-              this.get(BelongsToResolver).includePolymorphicTo(
+              this.getService(BelongsToResolver).includePolymorphicTo(
                 entities,
                 modelName,
                 inclusion.relation,
@@ -47,7 +46,7 @@ export class IncludeClauseTool extends Service {
             );
           } else {
             promises.push(
-              this.get(BelongsToResolver).includeTo(
+              this.getService(BelongsToResolver).includeTo(
                 entities,
                 modelName,
                 relDef.model,
@@ -62,7 +61,7 @@ export class IncludeClauseTool extends Service {
         case RelationType.HAS_ONE:
           if (relDef.polymorphic && typeof relDef.polymorphic === 'string') {
             promises.push(
-              this.get(HasOneResolver).includePolymorphicByRelationName(
+              this.getService(HasOneResolver).includePolymorphicByRelationName(
                 entities,
                 modelName,
                 relDef.model,
@@ -73,7 +72,7 @@ export class IncludeClauseTool extends Service {
             );
           } else if (relDef.polymorphic) {
             promises.push(
-              this.get(HasOneResolver).includePolymorphicTo(
+              this.getService(HasOneResolver).includePolymorphicTo(
                 entities,
                 modelName,
                 relDef.model,
@@ -85,7 +84,7 @@ export class IncludeClauseTool extends Service {
             );
           } else {
             promises.push(
-              this.get(HasOneResolver).includeTo(
+              this.getService(HasOneResolver).includeTo(
                 entities,
                 modelName,
                 relDef.model,
@@ -100,7 +99,7 @@ export class IncludeClauseTool extends Service {
         case RelationType.HAS_MANY:
           if (relDef.polymorphic && typeof relDef.polymorphic === 'string') {
             promises.push(
-              this.get(HasManyResolver).includePolymorphicByRelationName(
+              this.getService(HasManyResolver).includePolymorphicByRelationName(
                 entities,
                 modelName,
                 relDef.model,
@@ -111,7 +110,7 @@ export class IncludeClauseTool extends Service {
             );
           } else if (relDef.polymorphic) {
             promises.push(
-              this.get(HasManyResolver).includePolymorphicTo(
+              this.getService(HasManyResolver).includePolymorphicTo(
                 entities,
                 modelName,
                 relDef.model,
@@ -123,7 +122,7 @@ export class IncludeClauseTool extends Service {
             );
           } else {
             promises.push(
-              this.get(HasManyResolver).includeTo(
+              this.getService(HasManyResolver).includeTo(
                 entities,
                 modelName,
                 relDef.model,
@@ -136,7 +135,7 @@ export class IncludeClauseTool extends Service {
           break;
         case RelationType.REFERENCES_MANY:
           promises.push(
-            this.get(ReferencesManyResolver).includeTo(
+            this.getService(ReferencesManyResolver).includeTo(
               entities,
               modelName,
               relDef.model,

+ 1 - 1
src/filter/operator-clause-tool.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {stringToRegexp} from '../utils/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
 import {InvalidOperatorValueError} from '../errors/index.js';

+ 1 - 1
src/filter/order-clause-tool.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {getValueByPath} from '../utils/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
 

+ 1 - 1
src/filter/slice-clause-tool.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {InvalidArgumentError} from '../errors/index.js';
 
 /**

+ 2 - 2
src/filter/where-clause-tool.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {getValueByPath} from '../utils/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
 import {OperatorClauseTool} from './operator-clause-tool.js';
@@ -133,7 +133,7 @@ export class WhereClauseTool extends Service {
     }
     // Operator clause.
     if (typeof example === 'object') {
-      const operatorsTest = this.get(OperatorClauseTool).testAll(
+      const operatorsTest = this.getService(OperatorClauseTool).testAll(
         example,
         value,
       );

+ 12 - 6
src/relations/belongs-to-resolver.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {cloneDeep} from '../utils/index.js';
 import {singularize} from '../utils/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
@@ -76,9 +76,11 @@ export class BelongsToResolver extends Service {
       return targetId != null ? [...acc, targetId] : acc;
     }, []);
     const targetRepository =
-      this.get(RepositoryRegistry).getRepository(targetName);
+      this.getService(RepositoryRegistry).getRepository(targetName);
     const targetPkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(targetName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        targetName,
+      );
     scope = scope ? cloneDeep(scope) : {};
     const filter = cloneDeep(scope);
     filter.where = {
@@ -183,7 +185,7 @@ export class BelongsToResolver extends Service {
       let targetRepository;
       try {
         targetRepository =
-          this.get(RepositoryRegistry).getRepository(targetName);
+          this.getService(RepositoryRegistry).getRepository(targetName);
       } catch (error) {
         if (error instanceof InvalidArgumentError) {
           if (
@@ -198,7 +200,9 @@ export class BelongsToResolver extends Service {
         }
       }
       const targetPkPropName =
-        this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(targetName);
+        this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+          targetName,
+        );
       const targetFilter = cloneDeep(scope);
       const targetIds = targetIdsByTargetName[targetName];
       targetFilter.where = {
@@ -228,7 +232,9 @@ export class BelongsToResolver extends Service {
       }
       const targetEntities = targetEntitiesByTargetNames[targetName] ?? [];
       const targetPkPropName =
-        this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(targetName);
+        this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+          targetName,
+        );
       const target = targetEntities.find(e => e[targetPkPropName] === targetId);
       if (target) entity[relationName] = target;
     });

+ 36 - 36
src/relations/belongs-to-resolver.spec.js

@@ -10,7 +10,7 @@ describe('BelongsToResolver', function () {
   describe('includeTo', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "entities" of BelongsToResolver.includeTo requires ' +
@@ -31,7 +31,7 @@ describe('BelongsToResolver', function () {
 
     it('requires elements of the "entities" parameter to be an Object', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "entities" of BelongsToResolver.includeTo requires ' +
@@ -52,7 +52,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of BelongsToResolver.includeTo requires ' +
@@ -72,7 +72,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "targetName" of BelongsToResolver.includeTo requires ' +
@@ -92,7 +92,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "relationName" of BelongsToResolver.includeTo requires ' +
@@ -112,7 +112,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the provided parameter "foreignKey" to be a string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The provided parameter "foreignKey" of BelongsToResolver.includeTo ' +
@@ -129,7 +129,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of BelongsToResolver.includeTo ' +
@@ -154,7 +154,7 @@ describe('BelongsToResolver', function () {
     it('throws an error if the given target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const promise = R.includeTo([], 'source', 'target', 'relation');
       await expect(promise).to.be.rejectedWith(
         'The model "target" is not defined',
@@ -164,7 +164,7 @@ describe('BelongsToResolver', function () {
     it('throws an error if the given target model does not have a datasource', async function () {
       const S = new Schema();
       S.defineModel({name: 'target'});
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const promise = R.includeTo([], 'source', 'target', 'relation');
       await expect(promise).to.be.rejectedWith(
         'The model "target" does not have a specified datasource.',
@@ -178,7 +178,7 @@ describe('BelongsToResolver', function () {
       S.defineModel({name: 'target', datasource: 'datasource'});
       const sourceRel = S.getRepository('source');
       const source = await sourceRel.create({parentId: 10});
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'parent');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -200,7 +200,7 @@ describe('BelongsToResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentId: target[DEF_PK],
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'parent');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -232,7 +232,7 @@ describe('BelongsToResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentId: target.myId,
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'parent');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -264,7 +264,7 @@ describe('BelongsToResolver', function () {
         myId: source.myId,
         parentId: target[DEF_PK],
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'parent');
       expect(source).to.be.eql({
         myId: source.myId,
@@ -287,7 +287,7 @@ describe('BelongsToResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentId: target[DEF_PK],
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'relation', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -319,7 +319,7 @@ describe('BelongsToResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentId: target[DEF_PK],
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'parent', undefined, {
         where: {foo: 'barVal'},
       });
@@ -360,7 +360,7 @@ describe('BelongsToResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentId: target[DEF_PK],
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'parent', undefined, {
         fields: [DEF_PK, 'bar'],
       });
@@ -454,7 +454,7 @@ describe('BelongsToResolver', function () {
         source: 'modelC',
         parentId: b.id,
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([c], 'modelC', 'modelB', 'parent', undefined, {
         include: 'parent',
       });
@@ -497,7 +497,7 @@ describe('BelongsToResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentId: target[DEF_PK],
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includeTo([source], 'source', 'target', 'parent', undefined, {
         where: {and: [{foo: 'barVal'}]},
         fields: [DEF_PK, 'bar'],
@@ -524,7 +524,7 @@ describe('BelongsToResolver', function () {
   describe('includePolymorphicTo', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "entities" of BelongsToResolver.includePolymorphicTo requires ' +
@@ -545,7 +545,7 @@ describe('BelongsToResolver', function () {
 
     it('requires elements of the "entities" parameter to be an Object', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "entities" of BelongsToResolver.includePolymorphicTo requires ' +
@@ -566,7 +566,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of BelongsToResolver.includePolymorphicTo requires ' +
@@ -587,7 +587,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The parameter "relationName" of BelongsToResolver.includePolymorphicTo requires ' +
@@ -607,7 +607,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the provided parameter "foreignKey" to be a string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The provided parameter "foreignKey" of BelongsToResolver.includePolymorphicTo ' +
@@ -624,7 +624,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the provided parameter "discriminator" to be a string', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The provided parameter "discriminator" of BelongsToResolver.includePolymorphicTo ' +
@@ -641,7 +641,7 @@ describe('BelongsToResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of BelongsToResolver.includePolymorphicTo ' +
@@ -666,7 +666,7 @@ describe('BelongsToResolver', function () {
     it('does not throw an error if a target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const entity = {[DEF_PK]: 1, parentId: 1, parentType: 'target'};
       await R.includePolymorphicTo([entity], 'source', 'parent');
       expect(entity).to.be.eql(entity);
@@ -676,7 +676,7 @@ describe('BelongsToResolver', function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
       S.defineModel({name: 'target'});
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const entity = {[DEF_PK]: 1, parentId: 1, parentType: 'target'};
       await R.includePolymorphicTo([entity], 'source', 'parent');
       expect(entity).to.be.eql(entity);
@@ -692,7 +692,7 @@ describe('BelongsToResolver', function () {
         parentId: 10,
         parentType: 'target',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo([source], 'source', 'parent');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -704,7 +704,7 @@ describe('BelongsToResolver', function () {
     it('does not throw an error if no discriminator value', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       const entity = {[DEF_PK]: 1, parentId: 1};
       await R.includePolymorphicTo([entity], 'source', 'parent');
       expect(entity).to.be.eql(entity);
@@ -728,7 +728,7 @@ describe('BelongsToResolver', function () {
         parentId: target[DEF_PK],
         parentType: 'target',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo([source], 'source', 'parent');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -765,7 +765,7 @@ describe('BelongsToResolver', function () {
         parentId: target[DEF_PK],
         parentType: 'target',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo([source], 'source', 'parent');
       expect(source).to.be.eql({
         myId: source.myId,
@@ -793,7 +793,7 @@ describe('BelongsToResolver', function () {
         parentId: target[DEF_PK],
         relationType: 'target',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo([source], 'source', 'relation', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -821,7 +821,7 @@ describe('BelongsToResolver', function () {
         relationId: target[DEF_PK],
         parentType: 'target',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -862,7 +862,7 @@ describe('BelongsToResolver', function () {
         parentId: target[DEF_PK],
         parentType: 'target',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -917,7 +917,7 @@ describe('BelongsToResolver', function () {
         parentId: target[DEF_PK],
         parentType: 'target',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1018,7 +1018,7 @@ describe('BelongsToResolver', function () {
         parentId: b.id,
         parentType: 'modelB',
       });
-      const R = S.get(BelongsToResolver);
+      const R = S.getService(BelongsToResolver);
       await R.includePolymorphicTo(
         [c],
         'modelC',

+ 10 - 6
src/relations/has-many-resolver.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {cloneDeep} from '../utils/index.js';
 import {RelationType} from '../definition/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
@@ -66,7 +66,9 @@ export class HasManyResolver extends Service {
       );
 
     const sourcePkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(sourceName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        sourceName,
+      );
     const sourceIds = [];
     entities.forEach(entity => {
       if (!entity || typeof entity !== 'object' || Array.isArray(entity))
@@ -82,7 +84,7 @@ export class HasManyResolver extends Service {
 
     const promises = [];
     const targetRepository =
-      this.get(RepositoryRegistry).getRepository(targetName);
+      this.getService(RepositoryRegistry).getRepository(targetName);
     scope = scope ? cloneDeep(scope) : {};
     const targetsBySourceId = new Map();
     sourceIds.forEach(sourceId => {
@@ -173,7 +175,9 @@ export class HasManyResolver extends Service {
       );
 
     const sourcePkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(sourceName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        sourceName,
+      );
     const sourceIds = [];
     entities.forEach(entity => {
       if (!entity || typeof entity !== 'object' || Array.isArray(entity))
@@ -189,7 +193,7 @@ export class HasManyResolver extends Service {
 
     const promises = [];
     const targetRepository =
-      this.get(RepositoryRegistry).getRepository(targetName);
+      this.getService(RepositoryRegistry).getRepository(targetName);
     scope = scope ? cloneDeep(scope) : {};
     const targetsBySourceId = new Map();
     sourceIds.forEach(sourceId => {
@@ -274,7 +278,7 @@ export class HasManyResolver extends Service {
         scope,
       );
 
-    const targetRelationDef = this.get(
+    const targetRelationDef = this.getService(
       ModelDefinitionUtils,
     ).getRelationDefinitionByName(targetName, targetRelationName);
     if (targetRelationDef.type !== RelationType.BELONGS_TO)

+ 59 - 59
src/relations/has-many-resolver.spec.js

@@ -10,7 +10,7 @@ describe('HasManyResolver', function () {
   describe('includeTo', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasManyResolver.includeTo requires ' +
@@ -38,7 +38,7 @@ describe('HasManyResolver', function () {
     it('requires elements of the "entities" parameter to be an Object', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasManyResolver.includeTo requires ' +
@@ -59,7 +59,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of HasManyResolver.includeTo requires ' +
@@ -80,7 +80,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "targetName" of HasManyResolver.includeTo requires ' +
@@ -101,7 +101,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "relationName" of HasManyResolver.includeTo requires ' +
@@ -122,7 +122,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "foreignKey" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "foreignKey" of HasManyResolver.includeTo requires ' +
@@ -143,7 +143,7 @@ describe('HasManyResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of HasManyResolver.includeTo ' +
@@ -168,7 +168,7 @@ describe('HasManyResolver', function () {
     it('throws an error if a target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const promise = R.includeTo(
         [],
         'source',
@@ -185,7 +185,7 @@ describe('HasManyResolver', function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
       S.defineModel({name: 'target'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const promise = R.includeTo(
         [],
         'source',
@@ -205,7 +205,7 @@ describe('HasManyResolver', function () {
       S.defineModel({name: 'target', datasource: 'datasource'});
       const sourceRel = S.getRepository('source');
       const source = await sourceRel.create({});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([source], 'source', 'target', 'children', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -237,7 +237,7 @@ describe('HasManyResolver', function () {
         [DEF_PK]: target3[DEF_PK],
         parentId: -1,
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([source], 'source', 'target', 'children', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -287,7 +287,7 @@ describe('HasManyResolver', function () {
         [DEF_PK]: target3[DEF_PK],
         parentId: -1,
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([source], 'source', 'target', 'children', 'parentId');
       expect(source).to.be.eql({
         myId: source.myId,
@@ -337,7 +337,7 @@ describe('HasManyResolver', function () {
         myId: target3.myId,
         parentId: -1,
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([source], 'source', 'target', 'children', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -390,7 +390,7 @@ describe('HasManyResolver', function () {
         featured: true,
         parentId: source[DEF_PK],
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([source], 'source', 'target', 'children', 'parentId', {
         where: {featured: false},
       });
@@ -468,7 +468,7 @@ describe('HasManyResolver', function () {
         bar: 'barVal3',
         parentId: -1,
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([source], 'source', 'target', 'children', 'parentId', {
         fields: [DEF_PK, 'bar'],
       });
@@ -599,7 +599,7 @@ describe('HasManyResolver', function () {
         source: 'modelC',
         parentId: b2.id,
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([a], 'modelA', 'modelB', 'children', 'parentId', {
         include: 'children',
       });
@@ -683,7 +683,7 @@ describe('HasManyResolver', function () {
         featured: true,
         parentId: source[DEF_PK],
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includeTo([source], 'source', 'target', 'children', 'parentId', {
         where: {and: [{featured: false}]},
       });
@@ -722,7 +722,7 @@ describe('HasManyResolver', function () {
   describe('includePolymorphicTo', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasManyResolver.includePolymorphicTo requires ' +
@@ -751,7 +751,7 @@ describe('HasManyResolver', function () {
     it('requires elements of the "entities" parameter to be an Object', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasManyResolver.includePolymorphicTo requires ' +
@@ -779,7 +779,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of HasManyResolver.includePolymorphicTo requires ' +
@@ -807,7 +807,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "targetName" of HasManyResolver.includePolymorphicTo requires ' +
@@ -835,7 +835,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "relationName" of HasManyResolver.includePolymorphicTo requires ' +
@@ -863,7 +863,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "foreignKey" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "foreignKey" of HasManyResolver.includePolymorphicTo requires ' +
@@ -891,7 +891,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "discriminator" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "discriminator" of HasManyResolver.includePolymorphicTo requires ' +
@@ -919,7 +919,7 @@ describe('HasManyResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of HasManyResolver.includePolymorphicTo ' +
@@ -945,7 +945,7 @@ describe('HasManyResolver', function () {
     it('throws an error if the given target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicTo(
         [entity],
@@ -964,7 +964,7 @@ describe('HasManyResolver', function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
       S.defineModel({name: 'target'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicTo(
         [entity],
@@ -989,7 +989,7 @@ describe('HasManyResolver', function () {
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1024,7 +1024,7 @@ describe('HasManyResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'unknown',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1075,7 +1075,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1146,7 +1146,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1217,7 +1217,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1285,7 +1285,7 @@ describe('HasManyResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1384,7 +1384,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1525,7 +1525,7 @@ describe('HasManyResolver', function () {
         parentId: b2.id,
         parentType: 'modelB',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [a],
         'modelA',
@@ -1627,7 +1627,7 @@ describe('HasManyResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1681,7 +1681,7 @@ describe('HasManyResolver', function () {
   describe('includePolymorphicByRelationName', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasManyResolver.includePolymorphicByRelationName requires ' +
@@ -1718,7 +1718,7 @@ describe('HasManyResolver', function () {
           },
         },
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasManyResolver.includePolymorphicTo requires ' +
@@ -1745,7 +1745,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of HasManyResolver.includePolymorphicByRelationName requires ' +
@@ -1772,7 +1772,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "targetName" of HasManyResolver.includePolymorphicByRelationName requires ' +
@@ -1799,7 +1799,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "relationName" of HasManyResolver.includePolymorphicByRelationName requires ' +
@@ -1826,7 +1826,7 @@ describe('HasManyResolver', function () {
 
     it('requires the "targetRelationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The parameter "targetRelationName" of HasManyResolver.includePolymorphicByRelationName requires ' +
@@ -1853,7 +1853,7 @@ describe('HasManyResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of HasManyResolver.includePolymorphicByRelationName ' +
@@ -1878,7 +1878,7 @@ describe('HasManyResolver', function () {
     it('throws an error if the given target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1896,7 +1896,7 @@ describe('HasManyResolver', function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
       S.defineModel({name: 'target'});
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1922,7 +1922,7 @@ describe('HasManyResolver', function () {
           },
         },
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1950,7 +1950,7 @@ describe('HasManyResolver', function () {
           },
         },
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1978,7 +1978,7 @@ describe('HasManyResolver', function () {
           },
         },
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -2011,7 +2011,7 @@ describe('HasManyResolver', function () {
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2054,7 +2054,7 @@ describe('HasManyResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'unknown',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2113,7 +2113,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2192,7 +2192,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2268,7 +2268,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2345,7 +2345,7 @@ describe('HasManyResolver', function () {
         relationId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2422,7 +2422,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         relationType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2498,7 +2498,7 @@ describe('HasManyResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2604,7 +2604,7 @@ describe('HasManyResolver', function () {
         parentId: -1,
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2750,7 +2750,7 @@ describe('HasManyResolver', function () {
         parentId: b2.id,
         parentType: 'modelB',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [a],
         'modelA',
@@ -2860,7 +2860,7 @@ describe('HasManyResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'source',
       });
-      const R = S.get(HasManyResolver);
+      const R = S.getService(HasManyResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',

+ 10 - 6
src/relations/has-one-resolver.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {cloneDeep} from '../utils/index.js';
 import {RelationType} from '../definition/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
@@ -66,7 +66,9 @@ export class HasOneResolver extends Service {
       );
 
     const sourcePkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(sourceName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        sourceName,
+      );
     const sourceIds = [];
     entities.forEach(entity => {
       if (!entity || typeof entity !== 'object' || Array.isArray(entity))
@@ -82,7 +84,7 @@ export class HasOneResolver extends Service {
 
     const promises = [];
     const targetRepository =
-      this.get(RepositoryRegistry).getRepository(targetName);
+      this.getService(RepositoryRegistry).getRepository(targetName);
     scope = scope ? cloneDeep(scope) : {};
     const targetBySourceId = new Map();
     sourceIds.forEach(sourceId => {
@@ -170,7 +172,9 @@ export class HasOneResolver extends Service {
       );
 
     const sourcePkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(sourceName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        sourceName,
+      );
     const sourceIds = [];
     entities.forEach(entity => {
       if (!entity || typeof entity !== 'object' || Array.isArray(entity))
@@ -186,7 +190,7 @@ export class HasOneResolver extends Service {
 
     const promises = [];
     const targetRepository =
-      this.get(RepositoryRegistry).getRepository(targetName);
+      this.getService(RepositoryRegistry).getRepository(targetName);
     scope = scope ? cloneDeep(scope) : {};
     const targetBySourceId = new Map();
     sourceIds.forEach(sourceId => {
@@ -268,7 +272,7 @@ export class HasOneResolver extends Service {
         scope,
       );
 
-    const targetRelationDef = this.get(
+    const targetRelationDef = this.getService(
       ModelDefinitionUtils,
     ).getRelationDefinitionByName(targetName, targetRelationName);
     if (targetRelationDef.type !== RelationType.BELONGS_TO)

+ 59 - 59
src/relations/has-one-resolver.spec.js

@@ -10,7 +10,7 @@ describe('HasOneResolver', function () {
   describe('includeTo', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasOneResolver.includeTo requires ' +
@@ -38,7 +38,7 @@ describe('HasOneResolver', function () {
     it('requires elements of the "entities" parameter to be an Object', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasOneResolver.includeTo requires ' +
@@ -59,7 +59,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of HasOneResolver.includeTo requires ' +
@@ -80,7 +80,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "targetName" of HasOneResolver.includeTo requires ' +
@@ -101,7 +101,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "relationName" of HasOneResolver.includeTo requires ' +
@@ -122,7 +122,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "foreignKey" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "foreignKey" of HasOneResolver.includeTo requires ' +
@@ -143,7 +143,7 @@ describe('HasOneResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of HasOneResolver.includeTo ' +
@@ -168,7 +168,7 @@ describe('HasOneResolver', function () {
     it('throws an error if a target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const promise = R.includeTo(
         [],
         'source',
@@ -185,7 +185,7 @@ describe('HasOneResolver', function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
       S.defineModel({name: 'target'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const promise = R.includeTo(
         [],
         'source',
@@ -205,7 +205,7 @@ describe('HasOneResolver', function () {
       S.defineModel({name: 'target', datasource: 'datasource'});
       const sourceRel = S.getRepository('source');
       const source = await sourceRel.create({});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([source], 'source', 'target', 'child', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -226,7 +226,7 @@ describe('HasOneResolver', function () {
         [DEF_PK]: target[DEF_PK],
         parentId: source[DEF_PK],
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([source], 'source', 'target', 'child', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -260,7 +260,7 @@ describe('HasOneResolver', function () {
         [DEF_PK]: target[DEF_PK],
         parentId: source.myId,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([source], 'source', 'target', 'child', 'parentId');
       expect(source).to.be.eql({
         myId: source.myId,
@@ -294,7 +294,7 @@ describe('HasOneResolver', function () {
         myId: target.myId,
         parentId: source[DEF_PK],
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([source], 'source', 'target', 'child', 'parentId');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -332,7 +332,7 @@ describe('HasOneResolver', function () {
         featured: true,
         parentId: source[DEF_PK],
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([source], 'source', 'target', 'child', 'parentId', {
         where: {featured: false},
       });
@@ -379,7 +379,7 @@ describe('HasOneResolver', function () {
         bar: target.bar,
         parentId: source[DEF_PK],
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([source], 'source', 'target', 'child', 'parentId', {
         fields: [DEF_PK, 'bar'],
       });
@@ -474,7 +474,7 @@ describe('HasOneResolver', function () {
         source: 'modelC',
         parentId: b.id,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([a], 'modelA', 'modelB', 'child', 'parentId', {
         include: 'child',
       });
@@ -523,7 +523,7 @@ describe('HasOneResolver', function () {
         featured: true,
         parentId: source[DEF_PK],
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includeTo([source], 'source', 'target', 'child', 'parentId', {
         where: {and: [{featured: false}]},
       });
@@ -553,7 +553,7 @@ describe('HasOneResolver', function () {
   describe('includePolymorphicTo', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasOneResolver.includePolymorphicTo requires ' +
@@ -582,7 +582,7 @@ describe('HasOneResolver', function () {
     it('requires elements of the "entities" parameter to be an Object', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasOneResolver.includePolymorphicTo requires ' +
@@ -610,7 +610,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of HasOneResolver.includePolymorphicTo requires ' +
@@ -638,7 +638,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "targetName" of HasOneResolver.includePolymorphicTo requires ' +
@@ -666,7 +666,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "relationName" of HasOneResolver.includePolymorphicTo requires ' +
@@ -694,7 +694,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "foreignKey" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "foreignKey" of HasOneResolver.includePolymorphicTo requires ' +
@@ -722,7 +722,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "discriminator" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "discriminator" of HasOneResolver.includePolymorphicTo requires ' +
@@ -750,7 +750,7 @@ describe('HasOneResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of HasOneResolver.includePolymorphicTo ' +
@@ -776,7 +776,7 @@ describe('HasOneResolver', function () {
     it('throws an error if the given target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicTo(
         [entity],
@@ -795,7 +795,7 @@ describe('HasOneResolver', function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
       S.defineModel({name: 'target'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicTo(
         [entity],
@@ -820,7 +820,7 @@ describe('HasOneResolver', function () {
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -854,7 +854,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'unknown',
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -886,7 +886,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -932,7 +932,7 @@ describe('HasOneResolver', function () {
         parentId: source.myId,
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -978,7 +978,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1028,7 +1028,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target2.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1091,7 +1091,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1198,7 +1198,7 @@ describe('HasOneResolver', function () {
         parentId: b.id,
         parentType: 'modelB',
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [a],
         'modelA',
@@ -1259,7 +1259,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target2.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicTo(
         [source],
         'source',
@@ -1303,7 +1303,7 @@ describe('HasOneResolver', function () {
   describe('includePolymorphicByRelationName', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasOneResolver.includePolymorphicByRelationName requires ' +
@@ -1340,7 +1340,7 @@ describe('HasOneResolver', function () {
           },
         },
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "entities" of HasOneResolver.includePolymorphicTo requires ' +
@@ -1367,7 +1367,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of HasOneResolver.includePolymorphicByRelationName requires ' +
@@ -1394,7 +1394,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "targetName" of HasOneResolver.includePolymorphicByRelationName requires ' +
@@ -1421,7 +1421,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "relationName" of HasOneResolver.includePolymorphicByRelationName requires ' +
@@ -1448,7 +1448,7 @@ describe('HasOneResolver', function () {
 
     it('requires the "targetRelationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The parameter "targetRelationName" of HasOneResolver.includePolymorphicByRelationName requires ' +
@@ -1475,7 +1475,7 @@ describe('HasOneResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of HasOneResolver.includePolymorphicByRelationName ' +
@@ -1500,7 +1500,7 @@ describe('HasOneResolver', function () {
     it('throws an error if the given target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1518,7 +1518,7 @@ describe('HasOneResolver', function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
       S.defineModel({name: 'target'});
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1544,7 +1544,7 @@ describe('HasOneResolver', function () {
           },
         },
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1572,7 +1572,7 @@ describe('HasOneResolver', function () {
           },
         },
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1600,7 +1600,7 @@ describe('HasOneResolver', function () {
           },
         },
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       const entity = {[DEF_PK]: 1};
       const promise = R.includePolymorphicByRelationName(
         [entity],
@@ -1633,7 +1633,7 @@ describe('HasOneResolver', function () {
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -1675,7 +1675,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: 'unknown',
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -1715,7 +1715,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -1769,7 +1769,7 @@ describe('HasOneResolver', function () {
         parentId: source.myId,
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -1820,7 +1820,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -1872,7 +1872,7 @@ describe('HasOneResolver', function () {
         relationId: source[DEF_PK],
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -1924,7 +1924,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         relationType: target.relationType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -1982,7 +1982,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target2.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2052,7 +2052,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',
@@ -2164,7 +2164,7 @@ describe('HasOneResolver', function () {
         parentId: b.id,
         parentType: 'modelB',
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [a],
         'modelA',
@@ -2233,7 +2233,7 @@ describe('HasOneResolver', function () {
         parentId: source[DEF_PK],
         parentType: target2.parentType,
       });
-      const R = S.get(HasOneResolver);
+      const R = S.getService(HasOneResolver);
       await R.includePolymorphicByRelationName(
         [source],
         'source',

+ 5 - 3
src/relations/references-many-resolver.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {cloneDeep} from '../utils/index.js';
 import {singularize} from '../utils/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
@@ -85,9 +85,11 @@ export class ReferencesManyResolver extends Service {
     }, []);
 
     const targetRepository =
-      this.get(RepositoryRegistry).getRepository(targetName);
+      this.getService(RepositoryRegistry).getRepository(targetName);
     const targetPkPropName =
-      this.get(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(targetName);
+      this.getService(ModelDefinitionUtils).getPrimaryKeyAsPropertyName(
+        targetName,
+      );
     scope = scope ? cloneDeep(scope) : {};
     const filter = cloneDeep(scope);
     filter.where = {

+ 19 - 19
src/relations/references-many-resolver.spec.js

@@ -10,7 +10,7 @@ describe('ReferencesManyResolver', function () {
   describe('includeTo', function () {
     it('requires the "entities" parameter to be an array', async function () {
       const S = new Schema();
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of ReferencesManyResolver.includeTo requires ' +
@@ -31,7 +31,7 @@ describe('ReferencesManyResolver', function () {
 
     it('requires elements of the "entities" parameter to be an Object', async function () {
       const S = new Schema();
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const error = v =>
         format(
           'The parameter "entities" of ReferencesManyResolver.includeTo requires ' +
@@ -52,7 +52,7 @@ describe('ReferencesManyResolver', function () {
 
     it('requires the "sourceName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const error = v =>
         format(
           'The parameter "sourceName" of ReferencesManyResolver.includeTo requires ' +
@@ -72,7 +72,7 @@ describe('ReferencesManyResolver', function () {
 
     it('requires the "targetName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const error = v =>
         format(
           'The parameter "targetName" of ReferencesManyResolver.includeTo requires ' +
@@ -92,7 +92,7 @@ describe('ReferencesManyResolver', function () {
 
     it('requires the "relationName" parameter to be a non-empty string', async function () {
       const S = new Schema();
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const error = v =>
         format(
           'The parameter "relationName" of ReferencesManyResolver.includeTo requires ' +
@@ -112,7 +112,7 @@ describe('ReferencesManyResolver', function () {
 
     it('requires the provided parameter "foreignKey" to be a string', async function () {
       const S = new Schema();
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const error = v =>
         format(
           'The provided parameter "foreignKey" of ReferencesManyResolver.includeTo ' +
@@ -129,7 +129,7 @@ describe('ReferencesManyResolver', function () {
 
     it('requires the provided parameter "scope" to be an object', async function () {
       const S = new Schema();
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const error = v =>
         format(
           'The provided parameter "scope" of ReferencesManyResolver.includeTo ' +
@@ -154,7 +154,7 @@ describe('ReferencesManyResolver', function () {
     it('throws an error if the given target model is not found', async function () {
       const S = new Schema();
       S.defineModel({name: 'source'});
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const promise = R.includeTo([], 'source', 'target', 'relation');
       await expect(promise).to.be.rejectedWith(
         'The model "target" is not defined',
@@ -164,7 +164,7 @@ describe('ReferencesManyResolver', function () {
     it('throws an error if the given target model does not have a datasource', async function () {
       const S = new Schema();
       S.defineModel({name: 'target'});
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       const promise = R.includeTo([], 'source', 'target', 'relation');
       await expect(promise).to.be.rejectedWith(
         'The model "target" does not have a specified datasource.',
@@ -178,7 +178,7 @@ describe('ReferencesManyResolver', function () {
       S.defineModel({name: 'target', datasource: 'datasource'});
       const sourceRel = S.getRepository('source');
       const source = await sourceRel.create({parentIds: [10, 20]});
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -207,7 +207,7 @@ describe('ReferencesManyResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentIds: [target1[DEF_PK], target2[DEF_PK]],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -245,7 +245,7 @@ describe('ReferencesManyResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentIds: [target1.myId, target2.myId],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -283,7 +283,7 @@ describe('ReferencesManyResolver', function () {
         myId: source.myId,
         parentIds: [target1[DEF_PK], target2[DEF_PK]],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents');
       expect(source).to.be.eql({
         myId: source.myId,
@@ -312,7 +312,7 @@ describe('ReferencesManyResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentIds: [target1[DEF_PK], target2[DEF_PK]],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'relations', 'parentIds');
       expect(source).to.be.eql({
         [DEF_PK]: source[DEF_PK],
@@ -341,7 +341,7 @@ describe('ReferencesManyResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentIds: [target1[DEF_PK], target2[DEF_PK], target3[DEF_PK]],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents', undefined, {
         where: {featured: false},
       });
@@ -393,7 +393,7 @@ describe('ReferencesManyResolver', function () {
           target4[DEF_PK],
         ],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents', undefined, {
         skip: 1,
         limit: 2,
@@ -446,7 +446,7 @@ describe('ReferencesManyResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentIds: [target1[DEF_PK], target2[DEF_PK]],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents', undefined, {
         fields: [DEF_PK, 'bar'],
       });
@@ -557,7 +557,7 @@ describe('ReferencesManyResolver', function () {
         source: 'modelC',
         parentIds: [b1.id, b2.id],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([c], 'modelC', 'modelB', 'parents', undefined, {
         include: 'parent',
       });
@@ -608,7 +608,7 @@ describe('ReferencesManyResolver', function () {
         [DEF_PK]: source[DEF_PK],
         parentIds: [target1[DEF_PK], target2[DEF_PK], target3[DEF_PK]],
       });
-      const R = S.get(ReferencesManyResolver);
+      const R = S.getService(ReferencesManyResolver);
       await R.includeTo([source], 'source', 'target', 'parents', undefined, {
         where: {and: [{featured: false}]},
       });

+ 2 - 2
src/repository/repository-registry.js

@@ -1,5 +1,5 @@
+import {Service} from '@e22m4u/service';
 import {Repository} from './repository.js';
-import {Service} from '../service/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
 
 /**
@@ -47,7 +47,7 @@ export class RepositoryRegistry extends Service {
   getRepository(modelName) {
     let repository = this._repositories[modelName];
     if (repository) return repository;
-    repository = new this._repositoryCtor(this._services, modelName);
+    repository = new this._repositoryCtor(this.container, modelName);
     this._repositories[modelName] = repository;
     return repository;
   }

+ 2 - 2
src/repository/repository-registry.spec.js

@@ -10,7 +10,7 @@ describe('RepositoryRegistry', function () {
       const schema = new Schema();
       schema.defineDatasource({name: 'datasource', adapter: 'memory'});
       schema.defineModel({name: 'model', datasource: 'datasource'});
-      const registry = schema.get(RepositoryRegistry);
+      const registry = schema.getService(RepositoryRegistry);
       registry.setRepositoryCtor(MyRepository);
       const rep = registry.getRepository('model');
       expect(rep).to.be.instanceof(Repository);
@@ -24,7 +24,7 @@ describe('RepositoryRegistry', function () {
       schema.defineDatasource({name: 'datasource', adapter: 'memory'});
       schema.defineModel({name: 'modelA', datasource: 'datasource'});
       schema.defineModel({name: 'modelB', datasource: 'datasource'});
-      const registry = schema.get(RepositoryRegistry);
+      const registry = schema.getService(RepositoryRegistry);
       const repA1 = registry.getRepository('modelA');
       const repA2 = registry.getRepository('modelA');
       const repB1 = registry.getRepository('modelB');

+ 7 - 7
src/repository/repository.js

@@ -1,4 +1,4 @@
-import {Service} from '../service/index.js';
+import {Service} from '@e22m4u/service';
 import {AdapterRegistry} from '../adapter/index.js';
 import {InvalidArgumentError} from '../errors/index.js';
 import {DefinitionRegistry} from '../definition/index.js';
@@ -39,13 +39,13 @@ export class Repository extends Service {
   /**
    * Constructor.
    *
-   * @param services
+   * @param container
    * @param modelName
    */
-  constructor(services, modelName) {
-    super(services);
+  constructor(container, modelName) {
+    super(container);
     this._modelName = modelName;
-    const modelDef = this.get(DefinitionRegistry).getModel(modelName);
+    const modelDef = this.getService(DefinitionRegistry).getModel(modelName);
     const datasourceName = modelDef.datasource;
     if (!datasourceName)
       throw new InvalidArgumentError(
@@ -61,7 +61,7 @@ export class Repository extends Service {
    * @return {Promise<Adapter>}
    */
   async getAdapter() {
-    return this.get(AdapterRegistry).getAdapter(this.datasourceName);
+    return this.getService(AdapterRegistry).getAdapter(this.datasourceName);
   }
 
   /**
@@ -97,7 +97,7 @@ export class Repository extends Service {
    * @return {Promise<object>}
    */
   async replaceOrCreate(data, filter = undefined) {
-    const pkPropName = this.get(
+    const pkPropName = this.getService(
       ModelDefinitionUtils,
     ).getPrimaryKeyAsPropertyName(this.modelName);
     const pkValue = data[pkPropName];

+ 4 - 4
src/schema.js

@@ -1,4 +1,4 @@
-import {Service} from './service/index.js';
+import {Service} from '@e22m4u/service';
 import {DefinitionRegistry} from './definition/index.js';
 import {RepositoryRegistry} from './repository/index.js';
 
@@ -12,7 +12,7 @@ export class Schema extends Service {
    * @param datasourceDef
    */
   defineDatasource(datasourceDef) {
-    this.get(DefinitionRegistry).addDatasource(datasourceDef);
+    this.getService(DefinitionRegistry).addDatasource(datasourceDef);
     return this;
   }
 
@@ -22,7 +22,7 @@ export class Schema extends Service {
    * @param modelDef
    */
   defineModel(modelDef) {
-    this.get(DefinitionRegistry).addModel(modelDef);
+    this.getService(DefinitionRegistry).addModel(modelDef);
     return this;
   }
 
@@ -32,6 +32,6 @@ export class Schema extends Service {
    * @param modelName
    */
   getRepository(modelName) {
-    return this.get(RepositoryRegistry).getRepository(modelName);
+    return this.getService(RepositoryRegistry).getRepository(modelName);
   }
 }

+ 0 - 1
src/service/index.js

@@ -1 +0,0 @@
-export * from './service.js';

+ 0 - 28
src/service/service.js

@@ -1,28 +0,0 @@
-/**
- * Service.
- */
-export class Service {
-  /**
-   * Constructor.
-   *
-   * @param services
-   */
-  constructor(services = undefined) {
-    this._services = services ?? new Map();
-  }
-
-  /**
-   * Get.
-   *
-   * @template T
-   * @param {typeof T} serviceCtor
-   * @return {T}
-   */
-  get(serviceCtor) {
-    let service = this._services.get(serviceCtor);
-    if (service) return service;
-    service = new serviceCtor(this._services);
-    this._services.set(serviceCtor, service);
-    return service;
-  }
-}

+ 0 - 37
src/service/service.spec.js

@@ -1,37 +0,0 @@
-import {expect} from 'chai';
-import {Service} from './service.js';
-
-describe('Service', function () {
-  describe('constructor', function () {
-    it('sets an empty service map by default', function () {
-      const service = new Service();
-      expect(service._services).to.be.instanceof(Map);
-      expect(service._services).to.be.empty;
-    });
-
-    it('sets a given service map', function () {
-      const map = new Map();
-      const service = new Service(map);
-      expect(service._services).to.be.eq(map);
-    });
-  });
-
-  describe('get', function () {
-    it('returns a new service from a given constructor as a singleton', function () {
-      let executed = 0;
-      class MyService extends Service {
-        constructor() {
-          super();
-          ++executed;
-        }
-      }
-      const service = new Service();
-      const myService1 = service.get(MyService);
-      const myService2 = service.get(MyService);
-      expect(myService1).to.be.instanceof(MyService);
-      expect(myService2).to.be.instanceof(MyService);
-      expect(myService1).to.be.eq(myService2);
-      expect(executed).to.be.eq(1);
-    });
-  });
-});