Browse Source

chore: bumps @e22m4u/js-repository to 0.4.0

e22m4u 3 months ago
parent
commit
8101935d32
5 changed files with 112 additions and 70 deletions
  1. 4 4
      README.md
  2. 1 1
      dist/cjs/index.cjs
  3. 2 2
      package.json
  4. 1 1
      src/mongodb-adapter.js
  5. 104 62
      src/mongodb-adapter.spec.js

+ 4 - 4
README.md

@@ -26,10 +26,10 @@ npm install @e22m4u/js-repository-mongodb-adapter
 ```js
 ```js
 import {DatabaseSchema} from '@e22m4u/js-repository';
 import {DatabaseSchema} from '@e22m4u/js-repository';
 
 
-const schema = new DatabaseSchema();
+const dbs = new DatabaseSchema();
 
 
 // объявление источника
 // объявление источника
-schema.defineDatasource({
+dbs.defineDatasource({
   name: 'myMongo', // название источника
   name: 'myMongo', // название источника
   adapter: 'mongodb', // имя адаптера
   adapter: 'mongodb', // имя адаптера
   // параметры
   // параметры
@@ -39,7 +39,7 @@ schema.defineDatasource({
 });
 });
 
 
 // объявление модели
 // объявление модели
-schema.defineModel({
+dbs.defineModel({
   name: 'user', // название модели
   name: 'user', // название модели
   datasource: 'myMongo', // используемый источник (см. выше)
   datasource: 'myMongo', // используемый источник (см. выше)
   properties: { // поля модели
   properties: { // поля модели
@@ -49,7 +49,7 @@ schema.defineModel({
 });
 });
 
 
 // получаем репозиторий по названию модели и создаем запись
 // получаем репозиторий по названию модели и создаем запись
-const userRep = schema.getRepository('user');
+const userRep = dbs.getRepository('user');
 const user = await userRep.create({name: 'John', surname: 'Doe'});
 const user = await userRep.create({name: 'John', surname: 'Doe'});
 
 
 console.log(user);
 console.log(user);

+ 1 - 1
dist/cjs/index.cjs

@@ -1215,7 +1215,7 @@ var _MongodbAdapter = class _MongodbAdapter extends import_js_repository3.Adapte
   _getCollectionNameByModelName(modelName) {
   _getCollectionNameByModelName(modelName) {
     const modelDef = this.getService(import_js_repository8.DefinitionRegistry).getModel(modelName);
     const modelDef = this.getService(import_js_repository8.DefinitionRegistry).getModel(modelName);
     if (modelDef.tableName != null) return modelDef.tableName;
     if (modelDef.tableName != null) return modelDef.tableName;
-    return modelNameToCollectionName(modelName);
+    return modelNameToCollectionName(modelDef.name);
   }
   }
   /**
   /**
    * Get collection.
    * Get collection.

+ 2 - 2
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "@e22m4u/js-repository-mongodb-adapter",
   "name": "@e22m4u/js-repository-mongodb-adapter",
-  "version": "0.6.0",
+  "version": "0.6.1",
   "description": "MongoDB адаптер для @e22m4u/js-repository",
   "description": "MongoDB адаптер для @e22m4u/js-repository",
   "author": "Mikhail Evstropov <e22m4u@yandex.ru>",
   "author": "Mikhail Evstropov <e22m4u@yandex.ru>",
   "license": "MIT",
   "license": "MIT",
@@ -42,7 +42,7 @@
   },
   },
   "peerDependencies": {
   "peerDependencies": {
     "@e22m4u/js-format": "~0.1.0",
     "@e22m4u/js-format": "~0.1.0",
-    "@e22m4u/js-repository": "~0.3.0"
+    "@e22m4u/js-repository": "~0.4.0"
   },
   },
   "devDependencies": {
   "devDependencies": {
     "@commitlint/cli": "~19.8.1",
     "@commitlint/cli": "~19.8.1",

+ 1 - 1
src/mongodb-adapter.js

@@ -307,7 +307,7 @@ export class MongodbAdapter extends Adapter {
   _getCollectionNameByModelName(modelName) {
   _getCollectionNameByModelName(modelName) {
     const modelDef = this.getService(DefinitionRegistry).getModel(modelName);
     const modelDef = this.getService(DefinitionRegistry).getModel(modelName);
     if (modelDef.tableName != null) return modelDef.tableName;
     if (modelDef.tableName != null) return modelDef.tableName;
-    return modelNameToCollectionName(modelName);
+    return modelNameToCollectionName(modelDef.name);
   }
   }
 
 
   /**
   /**

+ 104 - 62
src/mongodb-adapter.spec.js

@@ -45,56 +45,80 @@ describe('MongodbAdapter', function () {
   describe('_getCollectionNameByModelName', function () {
   describe('_getCollectionNameByModelName', function () {
     it('converts model name to camel case and pluralizes it', async function () {
     it('converts model name to camel case and pluralizes it', async function () {
       const schema = createSchema();
       const schema = createSchema();
-      schema.defineModel({name: 'fooBar', datasource: 'mongodb'});
-      schema.defineModel({name: 'FooBar', datasource: 'mongodb'});
-      schema.defineModel({name: 'foo_bar', datasource: 'mongodb'});
-      schema.defineModel({name: 'FOO_BAR', datasource: 'mongodb'});
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntity', 'camelCaseEntities'],
+        ['PascalCaseEntity', 'pascalCaseEntities'],
+        ['snake_case_entity', 'snakeCaseEntities'],
+        ['kebab-case-entity', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITY', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITY', 'upperKebabCaseEntities'],
+      ];
+      modelNamesToCollectionNames.forEach(tuple =>
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'}),
+      );
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      expect(A._getCollectionNameByModelName('fooBar')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FooBar')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('foo_bar')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FOO_BAR')).to.be.eq('fooBars');
+      modelNamesToCollectionNames.forEach(tuple =>
+        expect(A._getCollectionNameByModelName(tuple[0])).to.be.eq(tuple[1]),
+      );
     });
     });
 
 
     // prettier-ignore
     // prettier-ignore
     it('cuts off the "Model" suffix from the model name', async function () {
     it('cuts off the "Model" suffix from the model name', async function () {
       const schema = createSchema();
       const schema = createSchema();
-      schema.defineModel({name: 'fooBarModel', datasource: 'mongodb'});
-      schema.defineModel({name: 'FooBarModel', datasource: 'mongodb'});
-      schema.defineModel({name: 'foo_bar_model', datasource: 'mongodb'});
-      schema.defineModel({name: 'FOO_BAR_MODEL', datasource: 'mongodb'});
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntityModel', 'camelCaseEntities'],
+        ['PascalCaseEntityModel', 'pascalCaseEntities'],
+        ['snake_case_entity_model', 'snakeCaseEntities'],
+        ['kebab-case-entity-model', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITY_MODEL', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITY-MODEL', 'upperKebabCaseEntities'],
+      ];
+      modelNamesToCollectionNames.forEach(tuple =>
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'}),
+      );
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      expect(A._getCollectionNameByModelName('fooBarModel')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FooBarModel')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('foo_bar_model')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FOO_BAR_MODEL')).to.be.eq('fooBars');
+      modelNamesToCollectionNames.forEach(tuple =>
+        expect(A._getCollectionNameByModelName(tuple[0])).to.be.eq(tuple[1]),
+      );
     });
     });
 
 
     it('converts already pluralized model name to camel case', async function () {
     it('converts already pluralized model name to camel case', async function () {
       const schema = createSchema();
       const schema = createSchema();
-      schema.defineModel({name: 'fooBars', datasource: 'mongodb'});
-      schema.defineModel({name: 'FooBars', datasource: 'mongodb'});
-      schema.defineModel({name: 'foo_bars', datasource: 'mongodb'});
-      schema.defineModel({name: 'FOO_BARS', datasource: 'mongodb'});
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntities', 'camelCaseEntities'],
+        ['PascalCaseEntities', 'pascalCaseEntities'],
+        ['snake_case_entities', 'snakeCaseEntities'],
+        ['kebab-case-entities', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITIES', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITIES', 'upperKebabCaseEntities'],
+      ];
+      modelNamesToCollectionNames.forEach(tuple =>
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'}),
+      );
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      expect(A._getCollectionNameByModelName('fooBars')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FooBars')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('foo_bars')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FOO_BARS')).to.be.eq('fooBars');
+      modelNamesToCollectionNames.forEach(tuple =>
+        expect(A._getCollectionNameByModelName(tuple[0])).to.be.eq(tuple[1]),
+      );
     });
     });
 
 
     // prettier-ignore
     // prettier-ignore
     it('converts already pluralized model name to camel case and cut off the "Model" suffix', async function () {
     it('converts already pluralized model name to camel case and cut off the "Model" suffix', async function () {
       const schema = createSchema();
       const schema = createSchema();
-      schema.defineModel({name: 'fooBarsModel', datasource: 'mongodb'});
-      schema.defineModel({name: 'FooBarsModel', datasource: 'mongodb'});
-      schema.defineModel({name: 'foo_bars_model', datasource: 'mongodb'});
-      schema.defineModel({name: 'FOO_BARS_MODEL', datasource: 'mongodb'});
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntitiesModel', 'camelCaseEntities'],
+        ['PascalCaseEntitiesModel', 'pascalCaseEntities'],
+        ['snake_case_entities_model', 'snakeCaseEntities'],
+        ['kebab-case-entities-model', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITIES_MODEL', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITIES-MODEL', 'upperKebabCaseEntities'],
+      ];
+      modelNamesToCollectionNames.forEach(tuple =>
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'}),
+      );
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      expect(A._getCollectionNameByModelName('fooBarsModel')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FooBarsModel')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('foo_bars_model')).to.be.eq('fooBars');
-      expect(A._getCollectionNameByModelName('FOO_BARS_MODEL')).to.be.eq('fooBars');
+      modelNamesToCollectionNames.forEach(tuple =>
+        expect(A._getCollectionNameByModelName(tuple[0])).to.be.eq(tuple[1]),
+      );
     });
     });
 
 
     it('returns the value from the "tableName" option if defined', async function () {
     it('returns the value from the "tableName" option if defined', async function () {
@@ -142,55 +166,73 @@ describe('MongodbAdapter', function () {
 
 
     it('converts model name to camel case and pluralizes it', async function () {
     it('converts model name to camel case and pluralizes it', async function () {
       const schema = createSchema();
       const schema = createSchema();
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntity', 'camelCaseEntities'],
+        ['PascalCaseEntity', 'pascalCaseEntities'],
+        ['snake_case_entity', 'snakeCaseEntities'],
+        ['kebab-case-entity', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITY', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITY', 'upperKebabCaseEntities'],
+      ];
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      const modelNames = ['fooBar', 'FooBar', 'foo_bar', 'FOO_BAR'];
-      modelNames.forEach(modelName => {
-        schema.defineModel({name: modelName, datasource: 'mongodb'});
-        const collection = A._getCollection(modelName);
-        expect(collection.collectionName).to.equal('fooBars');
+      modelNamesToCollectionNames.forEach(tuple => {
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'});
+        const collection = A._getCollection(tuple[0]);
+        expect(collection.collectionName).to.equal(tuple[1]);
       });
       });
     });
     });
 
 
     it('cuts off the "Model" suffix from the model name', async function () {
     it('cuts off the "Model" suffix from the model name', async function () {
       const schema = createSchema();
       const schema = createSchema();
-      const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      const modelNames = [
-        'fooBarModel',
-        'FooBarModel',
-        'foo_bar_model',
-        'FOO_BAR_MODEL',
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntityModel', 'camelCaseEntities'],
+        ['PascalCaseEntityModel', 'pascalCaseEntities'],
+        ['snake_case_entity_model', 'snakeCaseEntities'],
+        ['kebab-case-entity-model', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITY_MODEL', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITY-MODEL', 'upperKebabCaseEntities'],
       ];
       ];
-      modelNames.forEach(modelName => {
-        schema.defineModel({name: modelName, datasource: 'mongodb'});
-        const collection = A._getCollection(modelName);
-        expect(collection.collectionName).to.equal('fooBars');
+      const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
+      modelNamesToCollectionNames.forEach(tuple => {
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'});
+        const collection = A._getCollection(tuple[0]);
+        expect(collection.collectionName).to.equal(tuple[1]);
       });
       });
     });
     });
 
 
     it('converts already pluralized model name to camel case', async function () {
     it('converts already pluralized model name to camel case', async function () {
       const schema = createSchema();
       const schema = createSchema();
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntities', 'camelCaseEntities'],
+        ['PascalCaseEntities', 'pascalCaseEntities'],
+        ['snake_case_entities', 'snakeCaseEntities'],
+        ['kebab-case-entities', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITIES', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITIES', 'upperKebabCaseEntities'],
+      ];
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
       const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      const modelNames = ['fooBars', 'FooBars', 'foo_bars', 'FOO_BARS'];
-      modelNames.forEach(modelName => {
-        schema.defineModel({name: modelName, datasource: 'mongodb'});
-        const collection = A._getCollection(modelName);
-        expect(collection.collectionName).to.equal('fooBars');
+      modelNamesToCollectionNames.forEach(tuple => {
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'});
+        const collection = A._getCollection(tuple[0]);
+        expect(collection.collectionName).to.equal(tuple[1]);
       });
       });
     });
     });
 
 
     it('converts already pluralized model name to camel case and cut off the "Model" suffix', async function () {
     it('converts already pluralized model name to camel case and cut off the "Model" suffix', async function () {
       const schema = createSchema();
       const schema = createSchema();
-      const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
-      const modelNames = [
-        'fooBarsModel',
-        'FooBarsModel',
-        'foo_bars_model',
-        'FOO_BARS_MODEL',
+      const modelNamesToCollectionNames = [
+        ['camelCaseEntitiesModel', 'camelCaseEntities'],
+        ['PascalCaseEntitiesModel', 'pascalCaseEntities'],
+        ['snake_case_entities_model', 'snakeCaseEntities'],
+        ['kebab-case-entities-model', 'kebabCaseEntities'],
+        ['UPPER_SNAKE_CASE_ENTITIES_MODEL', 'upperSnakeCaseEntities'],
+        ['UPPER-KEBAB-CASE-ENTITIES-MODEL', 'upperKebabCaseEntities'],
       ];
       ];
-      modelNames.forEach(modelName => {
-        schema.defineModel({name: modelName, datasource: 'mongodb'});
-        const collection = A._getCollection(modelName);
-        expect(collection.collectionName).to.equal('fooBars');
+      const A = await schema.getService(AdapterRegistry).getAdapter('mongodb');
+      modelNamesToCollectionNames.forEach(tuple => {
+        schema.defineModel({name: tuple[0], datasource: 'mongodb'});
+        const collection = A._getCollection(tuple[0]);
+        expect(collection.collectionName).to.equal(tuple[1]);
       });
       });
     });
     });