@orion-js/mongodb 3.2.4 → 3.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -2,3 +2,4 @@ import createCollection, { createIndexesPromises } from './createCollection';
2
2
  export { createCollection, createIndexesPromises };
3
3
  export * from './connect';
4
4
  export * from './types';
5
+ export * from './service';
package/lib/index.js CHANGED
@@ -32,3 +32,4 @@ exports.createCollection = createCollection_1.default;
32
32
  Object.defineProperty(exports, "createIndexesPromises", { enumerable: true, get: function () { return createCollection_1.createIndexesPromises; } });
33
33
  __exportStar(require("./connect"), exports);
34
34
  __exportStar(require("./types"), exports);
35
+ __exportStar(require("./service"), exports);
@@ -0,0 +1,3 @@
1
+ import { CreateCollectionOptions } from '../types';
2
+ export declare function MongoCollection(options: CreateCollectionOptions): (object: any, propertyName: string, index?: number) => void;
3
+ export declare function Repository(): ClassDecorator;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Repository = exports.MongoCollection = void 0;
7
+ const services_1 = require("@orion-js/services");
8
+ const createCollection_1 = __importDefault(require("../createCollection"));
9
+ function MongoCollection(options) {
10
+ return function (object, propertyName, index) {
11
+ services_1.Container.registerHandler({
12
+ object,
13
+ propertyName,
14
+ index,
15
+ value: containerInstance => {
16
+ if (!object.serviceType || object.serviceType !== 'repo') {
17
+ throw new Error('You must pass a class decorated with @Repository if you want to use @MongoCollection');
18
+ }
19
+ return (0, createCollection_1.default)(options);
20
+ }
21
+ });
22
+ };
23
+ }
24
+ exports.MongoCollection = MongoCollection;
25
+ function Repository() {
26
+ return function (target) {
27
+ (0, services_1.Service)()(target);
28
+ target.prototype.service = target;
29
+ target.prototype.serviceType = 'repo';
30
+ };
31
+ }
32
+ exports.Repository = Repository;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const services_1 = require("@orion-js/services");
13
+ const typed_model_1 = require("@orion-js/typed-model");
14
+ const _1 = require(".");
15
+ describe('Collection as IOC', () => {
16
+ it('should create the collection and set the methods', async () => {
17
+ let User = class User {
18
+ };
19
+ __decorate([
20
+ (0, typed_model_1.Prop)(),
21
+ __metadata("design:type", String)
22
+ ], User.prototype, "_id", void 0);
23
+ __decorate([
24
+ (0, typed_model_1.Prop)(),
25
+ __metadata("design:type", String)
26
+ ], User.prototype, "name", void 0);
27
+ User = __decorate([
28
+ (0, typed_model_1.TypedSchema)()
29
+ ], User);
30
+ let UserRepo = class UserRepo {
31
+ async createUser(user) {
32
+ return await this.users.insertOne(user);
33
+ }
34
+ async getUserByName(name) {
35
+ return await this.users.findOne({ name });
36
+ }
37
+ };
38
+ __decorate([
39
+ (0, _1.MongoCollection)({ name: 'users' }),
40
+ __metadata("design:type", Object)
41
+ ], UserRepo.prototype, "users", void 0);
42
+ UserRepo = __decorate([
43
+ (0, _1.Repository)()
44
+ ], UserRepo);
45
+ const instance = (0, services_1.getInstance)(UserRepo);
46
+ const userId = await instance.createUser({ name: 'Nico' });
47
+ const user = await instance.getUserByName('Nico');
48
+ expect(user._id).toBe(userId);
49
+ });
50
+ it('should throw an error when trying to set a collection param in a service that is not a repo', () => {
51
+ expect.assertions(1);
52
+ try {
53
+ let UserErrorRepo = class UserErrorRepo {
54
+ };
55
+ __decorate([
56
+ (0, _1.MongoCollection)({ name: 'users2' }),
57
+ __metadata("design:type", Object)
58
+ ], UserErrorRepo.prototype, "users", void 0);
59
+ UserErrorRepo = __decorate([
60
+ (0, services_1.Service)()
61
+ ], UserErrorRepo);
62
+ const instance = (0, services_1.getInstance)(UserErrorRepo);
63
+ }
64
+ catch (error) {
65
+ expect(error.message).toBe('You must pass a class decorated with @Repository if you want to use @MongoCollection');
66
+ }
67
+ });
68
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-js/mongodb",
3
- "version": "3.2.4",
3
+ "version": "3.2.10",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "files": [
@@ -22,7 +22,8 @@
22
22
  "@orion-js/models": "^3.2.0",
23
23
  "@orion-js/resolvers": "^3.2.0",
24
24
  "@orion-js/schema": "^3.2.0",
25
- "@orion-js/typed-model": "^3.2.4",
25
+ "@orion-js/services": "^3.2.10",
26
+ "@orion-js/typed-model": "^3.2.10",
26
27
  "dataloader": "2.1.0",
27
28
  "dot-object": "2.1.4",
28
29
  "mongodb": "4.5.0"
@@ -39,5 +40,5 @@
39
40
  "publishConfig": {
40
41
  "access": "public"
41
42
  },
42
- "gitHead": "a1c4cff581b31f24896ec96a0a180d043dbf802a"
43
+ "gitHead": "cae0afccac10f4b9bdbdeb1faaac3884eaef730c"
43
44
  }