@orion-js/mongodb 3.11.8 → 3.12.0
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/README.md +15 -0
- package/dist/index.cjs +81990 -0
- package/dist/index.d.ts +204 -0
- package/dist/index.js +81964 -0
- package/package.json +29 -27
- package/LICENSE +0 -21
- package/lib/connect/connections.d.ts +0 -13
- package/lib/connect/connections.js +0 -4
- package/lib/connect/getDBName.d.ts +0 -1
- package/lib/connect/getDBName.js +0 -23
- package/lib/connect/getMongoConnection.d.ts +0 -8
- package/lib/connect/getMongoConnection.js +0 -47
- package/lib/connect/getMongoConnection.test.d.ts +0 -1
- package/lib/connect/getMongoConnection.test.js +0 -43
- package/lib/connect/getMongoURLFromEnv.d.ts +0 -1
- package/lib/connect/getMongoURLFromEnv.js +0 -21
- package/lib/connect/index.d.ts +0 -4
- package/lib/connect/index.js +0 -8
- package/lib/createCollection/createIndexPromisesTest.d.ts +0 -1
- package/lib/createCollection/createIndexPromisesTest.js +0 -12
- package/lib/createCollection/createIndexes.d.ts +0 -3
- package/lib/createCollection/createIndexes.js +0 -67
- package/lib/createCollection/createIndexes.test.d.ts +0 -1
- package/lib/createCollection/createIndexes.test.js +0 -91
- package/lib/createCollection/createIndexesPromise.test.d.ts +0 -1
- package/lib/createCollection/createIndexesPromise.test.js +0 -32
- package/lib/createCollection/generateId.d.ts +0 -3
- package/lib/createCollection/generateId.js +0 -25
- package/lib/createCollection/generateId.test.d.ts +0 -1
- package/lib/createCollection/generateId.test.js +0 -108
- package/lib/createCollection/getMethods/aggregate.test.d.ts +0 -1
- package/lib/createCollection/getMethods/aggregate.test.js +0 -20
- package/lib/createCollection/getMethods/cleanModifier.d.ts +0 -4
- package/lib/createCollection/getMethods/cleanModifier.js +0 -75
- package/lib/createCollection/getMethods/cleanModifier.test.d.ts +0 -1
- package/lib/createCollection/getMethods/cleanModifier.test.js +0 -186
- package/lib/createCollection/getMethods/countDocuments.d.ts +0 -2
- package/lib/createCollection/getMethods/countDocuments.js +0 -16
- package/lib/createCollection/getMethods/countDocuments.test.d.ts +0 -1
- package/lib/createCollection/getMethods/countDocuments.test.js +0 -21
- package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.d.ts +0 -9
- package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.js +0 -25
- package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.test.d.ts +0 -1
- package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.test.js +0 -37
- package/lib/createCollection/getMethods/dataLoader/dataLoad/index.d.ts +0 -9
- package/lib/createCollection/getMethods/dataLoader/dataLoad/index.js +0 -21
- package/lib/createCollection/getMethods/dataLoader/index.d.ts +0 -5
- package/lib/createCollection/getMethods/dataLoader/index.js +0 -14
- package/lib/createCollection/getMethods/dataLoader/loadById.d.ts +0 -2
- package/lib/createCollection/getMethods/dataLoader/loadById.js +0 -13
- package/lib/createCollection/getMethods/dataLoader/loadById.test.d.ts +0 -1
- package/lib/createCollection/getMethods/dataLoader/loadById.test.js +0 -23
- package/lib/createCollection/getMethods/dataLoader/loadData.d.ts +0 -2
- package/lib/createCollection/getMethods/dataLoader/loadData.js +0 -49
- package/lib/createCollection/getMethods/dataLoader/loadMany.d.ts +0 -2
- package/lib/createCollection/getMethods/dataLoader/loadMany.js +0 -10
- package/lib/createCollection/getMethods/dataLoader/loadMany.test.d.ts +0 -1
- package/lib/createCollection/getMethods/dataLoader/loadMany.test.js +0 -85
- package/lib/createCollection/getMethods/dataLoader/loadOne.d.ts +0 -2
- package/lib/createCollection/getMethods/dataLoader/loadOne.js +0 -10
- package/lib/createCollection/getMethods/dataLoader/loadOne.test.d.ts +0 -1
- package/lib/createCollection/getMethods/dataLoader/loadOne.test.js +0 -76
- package/lib/createCollection/getMethods/deleteMany.d.ts +0 -2
- package/lib/createCollection/getMethods/deleteMany.js +0 -16
- package/lib/createCollection/getMethods/deleteOne.d.ts +0 -2
- package/lib/createCollection/getMethods/deleteOne.js +0 -16
- package/lib/createCollection/getMethods/estimatedDocumentCount.d.ts +0 -3
- package/lib/createCollection/getMethods/estimatedDocumentCount.js +0 -10
- package/lib/createCollection/getMethods/estimatedDocumentCount.test.d.ts +0 -1
- package/lib/createCollection/getMethods/estimatedDocumentCount.test.js +0 -15
- package/lib/createCollection/getMethods/find.d.ts +0 -2
- package/lib/createCollection/getMethods/find.js +0 -21
- package/lib/createCollection/getMethods/findOne.d.ts +0 -2
- package/lib/createCollection/getMethods/findOne.js +0 -18
- package/lib/createCollection/getMethods/findOneAndUpdate.d.ts +0 -3
- package/lib/createCollection/getMethods/findOneAndUpdate.js +0 -29
- package/lib/createCollection/getMethods/findOneAndUpdate.test.d.ts +0 -1
- package/lib/createCollection/getMethods/findOneAndUpdate.test.js +0 -15
- package/lib/createCollection/getMethods/getSelector.d.ts +0 -3
- package/lib/createCollection/getMethods/getSelector.js +0 -21
- package/lib/createCollection/getMethods/getSelector.test.d.ts +0 -1
- package/lib/createCollection/getMethods/getSelector.test.js +0 -46
- package/lib/createCollection/getMethods/index.d.ts +0 -16
- package/lib/createCollection/getMethods/index.js +0 -36
- package/lib/createCollection/getMethods/insertAndFind.d.ts +0 -3
- package/lib/createCollection/getMethods/insertAndFind.js +0 -31
- package/lib/createCollection/getMethods/insertAndFind.test.d.ts +0 -1
- package/lib/createCollection/getMethods/insertAndFind.test.js +0 -50
- package/lib/createCollection/getMethods/insertMany.d.ts +0 -3
- package/lib/createCollection/getMethods/insertMany.js +0 -36
- package/lib/createCollection/getMethods/insertMany.test.d.ts +0 -1
- package/lib/createCollection/getMethods/insertMany.test.js +0 -66
- package/lib/createCollection/getMethods/insertOne.d.ts +0 -3
- package/lib/createCollection/getMethods/insertOne.js +0 -31
- package/lib/createCollection/getMethods/insertOne.test.d.ts +0 -1
- package/lib/createCollection/getMethods/insertOne.test.js +0 -104
- package/lib/createCollection/getMethods/update.test.d.ts +0 -1
- package/lib/createCollection/getMethods/update.test.js +0 -287
- package/lib/createCollection/getMethods/updateAndFind.d.ts +0 -3
- package/lib/createCollection/getMethods/updateAndFind.js +0 -18
- package/lib/createCollection/getMethods/updateAndFind.test.d.ts +0 -1
- package/lib/createCollection/getMethods/updateAndFind.test.js +0 -38
- package/lib/createCollection/getMethods/updateItem.d.ts +0 -2
- package/lib/createCollection/getMethods/updateItem.js +0 -19
- package/lib/createCollection/getMethods/updateItem.test.d.ts +0 -1
- package/lib/createCollection/getMethods/updateItem.test.js +0 -38
- package/lib/createCollection/getMethods/updateMany.d.ts +0 -3
- package/lib/createCollection/getMethods/updateMany.js +0 -30
- package/lib/createCollection/getMethods/updateOne.d.ts +0 -3
- package/lib/createCollection/getMethods/updateOne.js +0 -30
- package/lib/createCollection/getMethods/upsert.d.ts +0 -3
- package/lib/createCollection/getMethods/upsert.js +0 -31
- package/lib/createCollection/getMethods/upsert.test.d.ts +0 -1
- package/lib/createCollection/getMethods/upsert.test.js +0 -92
- package/lib/createCollection/getMethods/validateModifier/index.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/index.js +0 -18
- package/lib/createCollection/getMethods/validateModifier/index.test.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/index.test.js +0 -74
- package/lib/createCollection/getMethods/validateModifier/validateInc.d.ts +0 -7
- package/lib/createCollection/getMethods/validateModifier/validateInc.js +0 -20
- package/lib/createCollection/getMethods/validateModifier/validateInc.test.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/validateInc.test.js +0 -12
- package/lib/createCollection/getMethods/validateModifier/validateOperator.d.ts +0 -5
- package/lib/createCollection/getMethods/validateModifier/validateOperator.js +0 -34
- package/lib/createCollection/getMethods/validateModifier/validatePush.d.ts +0 -8
- package/lib/createCollection/getMethods/validateModifier/validatePush.js +0 -27
- package/lib/createCollection/getMethods/validateModifier/validatePush.test.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/validatePush.test.js +0 -90
- package/lib/createCollection/getMethods/validateModifier/validateSet.d.ts +0 -7
- package/lib/createCollection/getMethods/validateModifier/validateSet.js +0 -19
- package/lib/createCollection/getMethods/validateModifier/validateSet.test.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/validateSet.test.js +0 -16
- package/lib/createCollection/getMethods/validateModifier/validateUnset.d.ts +0 -7
- package/lib/createCollection/getMethods/validateModifier/validateUnset.js +0 -19
- package/lib/createCollection/getMethods/validateModifier/validateUnset.test.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/validateUnset.test.js +0 -71
- package/lib/createCollection/getMethods/validateModifier/validateUpsert.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/validateUpsert.js +0 -43
- package/lib/createCollection/getMethods/validateModifier/validateUpsert.test.d.ts +0 -1
- package/lib/createCollection/getMethods/validateModifier/validateUpsert.test.js +0 -50
- package/lib/createCollection/getMethods/wrapErrors.d.ts +0 -1
- package/lib/createCollection/getMethods/wrapErrors.js +0 -29
- package/lib/createCollection/getSchemaAndModel.d.ts +0 -10
- package/lib/createCollection/getSchemaAndModel.js +0 -41
- package/lib/createCollection/handleError.d.ts +0 -1
- package/lib/createCollection/handleError.js +0 -25
- package/lib/createCollection/index.d.ts +0 -4
- package/lib/createCollection/index.js +0 -77
- package/lib/createCollection/initItem.d.ts +0 -2
- package/lib/createCollection/initItem.js +0 -13
- package/lib/createCollection/typedModel.test.d.ts +0 -1
- package/lib/createCollection/typedModel.test.js +0 -159
- package/lib/helpers/fromDot.d.ts +0 -1
- package/lib/helpers/fromDot.js +0 -12
- package/lib/helpers/fromDot.test.d.ts +0 -1
- package/lib/helpers/fromDot.test.js +0 -47
- package/lib/helpers/toDot.d.ts +0 -1
- package/lib/helpers/toDot.js +0 -11
- package/lib/helpers/toDot.test.d.ts +0 -1
- package/lib/helpers/toDot.test.js +0 -23
- package/lib/index.d.ts +0 -5
- package/lib/index.js +0 -35
- package/lib/service/index.d.ts +0 -3
- package/lib/service/index.js +0 -32
- package/lib/service/index.test.d.ts +0 -1
- package/lib/service/index.test.js +0 -73
- package/lib/tests/setup.d.ts +0 -1
- package/lib/tests/setup.js +0 -20
- package/lib/types/index.d.ts +0 -178
- package/lib/types/index.js +0 -2
- package/lib/types/types.test.d.ts +0 -1
- package/lib/types/types.test.js +0 -59
package/lib/service/index.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
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;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,73 +0,0 @@
|
|
|
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)({
|
|
40
|
-
name: 'users',
|
|
41
|
-
schema: User,
|
|
42
|
-
idGeneration: 'random',
|
|
43
|
-
idPrefix: 'user_'
|
|
44
|
-
}),
|
|
45
|
-
__metadata("design:type", Object)
|
|
46
|
-
], UserRepo.prototype, "users", void 0);
|
|
47
|
-
UserRepo = __decorate([
|
|
48
|
-
(0, _1.Repository)()
|
|
49
|
-
], UserRepo);
|
|
50
|
-
const instance = (0, services_1.getInstance)(UserRepo);
|
|
51
|
-
const userId = await instance.createUser({ name: 'Nico' });
|
|
52
|
-
const user = await instance.getUserByName('Nico');
|
|
53
|
-
expect(user._id).toBe(userId);
|
|
54
|
-
});
|
|
55
|
-
it('should throw an error when trying to set a collection param in a service that is not a repo', () => {
|
|
56
|
-
expect.assertions(1);
|
|
57
|
-
try {
|
|
58
|
-
let UserErrorRepo = class UserErrorRepo {
|
|
59
|
-
};
|
|
60
|
-
__decorate([
|
|
61
|
-
(0, _1.MongoCollection)({ name: 'users2' }),
|
|
62
|
-
__metadata("design:type", Object)
|
|
63
|
-
], UserErrorRepo.prototype, "users", void 0);
|
|
64
|
-
UserErrorRepo = __decorate([
|
|
65
|
-
(0, services_1.Service)()
|
|
66
|
-
], UserErrorRepo);
|
|
67
|
-
const instance = (0, services_1.getInstance)(UserErrorRepo);
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
expect(error.message).toBe('You must pass a class decorated with @Repository if you want to use @MongoCollection');
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
});
|
package/lib/tests/setup.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/tests/setup.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const __1 = require("..");
|
|
4
|
-
const connections_1 = require("../connect/connections");
|
|
5
|
-
const url = `${global.__MONGO_URI__}jest`;
|
|
6
|
-
process.env.MONGO_URL = url;
|
|
7
|
-
beforeAll(async () => {
|
|
8
|
-
const connection = (0, __1.getMongoConnection)({ name: 'main' });
|
|
9
|
-
await connection.connectionPromise;
|
|
10
|
-
});
|
|
11
|
-
afterAll(async () => {
|
|
12
|
-
/**
|
|
13
|
-
* We need to wait on indexes promises to be resolved to close all the handlers
|
|
14
|
-
*/
|
|
15
|
-
await Promise.all(__1.createIndexesPromises);
|
|
16
|
-
for (const connectionName in connections_1.connections) {
|
|
17
|
-
const connection = connections_1.connections[connectionName];
|
|
18
|
-
await connection.client.close();
|
|
19
|
-
}
|
|
20
|
-
});
|
package/lib/types/index.d.ts
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import * as MongoDB from 'mongodb';
|
|
2
|
-
import { Model } from '@orion-js/models';
|
|
3
|
-
import { Blackbox, Schema } from '@orion-js/schema';
|
|
4
|
-
import { OrionMongoClient } from '../connect/connections';
|
|
5
|
-
type RemoveFunctions<T extends ModelClassBase> = Pick<T, {
|
|
6
|
-
[Key in keyof T]-?: T[Key] extends Function ? never : Key;
|
|
7
|
-
}[keyof T]> & {
|
|
8
|
-
_id: ModelClassBase['_id'];
|
|
9
|
-
};
|
|
10
|
-
export type ModelClassBase = {
|
|
11
|
-
_id: string;
|
|
12
|
-
} & Blackbox;
|
|
13
|
-
export type DocumentWithIdOptional<T extends ModelClassBase> = Omit<T, '_id'> & {
|
|
14
|
-
/**
|
|
15
|
-
* The ID of the document
|
|
16
|
-
*/
|
|
17
|
-
_id?: T['_id'];
|
|
18
|
-
};
|
|
19
|
-
export type DocumentWithoutId<T> = Omit<T, '_id'>;
|
|
20
|
-
export type ModelToDocumentType<ModelClass extends ModelClassBase> = RemoveFunctions<ModelClass>;
|
|
21
|
-
export type ModelToDocumentTypeWithId<ModelClass extends ModelClassBase> = RemoveFunctions<ModelClass>;
|
|
22
|
-
export type ModelToDocumentTypeWithoutId<ModelClass extends ModelClassBase> = DocumentWithoutId<ModelToDocumentType<ModelClass>>;
|
|
23
|
-
export type ModelToDocumentTypeWithIdOptional<ModelClass extends ModelClassBase> = DocumentWithIdOptional<ModelToDocumentType<ModelClass>>;
|
|
24
|
-
export type ModelToMongoSelector<ModelClass extends ModelClassBase> = MongoSelector<ModelToDocumentType<ModelClass>>;
|
|
25
|
-
export type ModelToUpdateFilter<ModelClass extends ModelClassBase> = MongoDB.UpdateFilter<ModelToDocumentTypeWithoutId<ModelClass>> | Partial<ModelToDocumentTypeWithoutId<ModelClass>>;
|
|
26
|
-
export interface CollectionIndex {
|
|
27
|
-
keys: MongoDB.IndexSpecification;
|
|
28
|
-
options?: MongoDB.CreateIndexesOptions;
|
|
29
|
-
}
|
|
30
|
-
export declare namespace DataLoader {
|
|
31
|
-
interface LoadDataOptionsBase<ModelClass extends ModelClassBase> {
|
|
32
|
-
key: keyof ModelClass;
|
|
33
|
-
match?: MongoFilter<ModelClass>;
|
|
34
|
-
sort?: MongoDB.Sort;
|
|
35
|
-
project?: MongoDB.Document;
|
|
36
|
-
timeout?: number;
|
|
37
|
-
debug?: boolean;
|
|
38
|
-
}
|
|
39
|
-
export interface LoadDataOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
40
|
-
value?: any;
|
|
41
|
-
values?: Array<any>;
|
|
42
|
-
}
|
|
43
|
-
export interface LoadOneOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
44
|
-
value: any;
|
|
45
|
-
}
|
|
46
|
-
export type LoadData<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
47
|
-
export type LoadOne<ModelClass extends ModelClassBase> = (options: LoadOneOptions<ModelClass>) => Promise<ModelClass>;
|
|
48
|
-
export type LoadMany<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
49
|
-
export type LoadById<ModelClass extends ModelClassBase> = (id: ModelClass['_id']) => Promise<ModelClass>;
|
|
50
|
-
export {};
|
|
51
|
-
}
|
|
52
|
-
export type MongoFilter<ModelClass extends ModelClassBase = ModelClassBase> = MongoDB.Filter<ModelClass> & ({
|
|
53
|
-
_id?: ModelClass['_id'];
|
|
54
|
-
} | {
|
|
55
|
-
_id?: {
|
|
56
|
-
$in: ModelClass['_id'][];
|
|
57
|
-
};
|
|
58
|
-
});
|
|
59
|
-
export type MongoSelector<ModelClass extends ModelClassBase = ModelClassBase> = ModelClass['_id'] | MongoFilter<ModelClass>;
|
|
60
|
-
export interface FindCursor<ModelClass> extends MongoDB.FindCursor {
|
|
61
|
-
toArray: () => Promise<Array<ModelClass>>;
|
|
62
|
-
}
|
|
63
|
-
export interface UpdateOptions {
|
|
64
|
-
clean?: boolean;
|
|
65
|
-
validate?: boolean;
|
|
66
|
-
mongoOptions?: MongoDB.UpdateOptions;
|
|
67
|
-
}
|
|
68
|
-
export interface FindOneAndUpdateUpdateOptions {
|
|
69
|
-
clean?: boolean;
|
|
70
|
-
validate?: boolean;
|
|
71
|
-
mongoOptions?: MongoDB.FindOneAndUpdateOptions;
|
|
72
|
-
}
|
|
73
|
-
export interface InsertOptions {
|
|
74
|
-
clean?: boolean;
|
|
75
|
-
validate?: boolean;
|
|
76
|
-
mongoOptions?: MongoDB.InsertOneOptions;
|
|
77
|
-
}
|
|
78
|
-
export type InitItem<ModelClass extends ModelClassBase> = (doc: any) => ModelClass;
|
|
79
|
-
export type FindOne<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => Promise<ModelClass>;
|
|
80
|
-
export type Find<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => FindCursor<ModelClass>;
|
|
81
|
-
export type FindOneAndUpdate<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
82
|
-
export type UpdateAndFind<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
83
|
-
export type UpdateItem<ModelClass extends ModelClassBase> = (item: ModelClass, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<void>;
|
|
84
|
-
export type InsertOne<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass['_id']>;
|
|
85
|
-
export type InsertMany<ModelClass extends ModelClassBase> = (doc: Array<ModelToDocumentTypeWithIdOptional<ModelClass>>, options?: InsertOptions) => Promise<Array<ModelClass['_id']>>;
|
|
86
|
-
export type InsertAndFind<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass>;
|
|
87
|
-
export type DeleteMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
88
|
-
export type DeleteOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
89
|
-
export type UpdateOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
90
|
-
export type UpdateMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult | MongoDB.Document>;
|
|
91
|
-
export type Upsert<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
92
|
-
export interface CreateCollectionOptions<ModelClass extends ModelClassBase = ModelClassBase> {
|
|
93
|
-
/**
|
|
94
|
-
* The name of the collection on the Mongo Database
|
|
95
|
-
*/
|
|
96
|
-
name: string;
|
|
97
|
-
/**
|
|
98
|
-
* The name of the connection to use. The Mongo URL of this connection will be search on env variables.
|
|
99
|
-
* If not found, the connection url will be `env.mongo_url`
|
|
100
|
-
* If defined, the connection url will be `env.mongo_url_${name}`
|
|
101
|
-
*/
|
|
102
|
-
connectionName?: string;
|
|
103
|
-
/**
|
|
104
|
-
* The schema used for cleaning and validation of the documents
|
|
105
|
-
*/
|
|
106
|
-
schema?: any;
|
|
107
|
-
/**
|
|
108
|
-
* @deprecated Use schema instead. If you use model, all items will be initialized with the model to add resolvers (which are also deprecated)
|
|
109
|
-
*/
|
|
110
|
-
model?: any;
|
|
111
|
-
/**
|
|
112
|
-
* The indexes to use
|
|
113
|
-
*/
|
|
114
|
-
indexes?: Array<CollectionIndex>;
|
|
115
|
-
/**
|
|
116
|
-
* Select between random id generation o mongo (time based) id generation
|
|
117
|
-
*/
|
|
118
|
-
idGeneration?: 'mongo' | 'random' | 'uuid';
|
|
119
|
-
/**
|
|
120
|
-
* ID prefix. idGeneration will be forced to random. Recommended for type checking
|
|
121
|
-
*/
|
|
122
|
-
idPrefix?: ModelClass['_id'];
|
|
123
|
-
}
|
|
124
|
-
export type EstimatedDocumentCount<ModelClass extends ModelClassBase> = (options?: MongoDB.EstimatedDocumentCountOptions) => Promise<number>;
|
|
125
|
-
export type CountDocuments<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.CountDocumentsOptions) => Promise<number>;
|
|
126
|
-
export type CreateCollection = <ModelClass extends ModelClassBase = any>(options: CreateCollectionOptions<ModelClass>) => Collection<ModelClass>;
|
|
127
|
-
export interface Collection<ModelClass extends ModelClassBase = ModelClassBase> {
|
|
128
|
-
name: string;
|
|
129
|
-
connectionName?: string;
|
|
130
|
-
schema?: Schema;
|
|
131
|
-
/**
|
|
132
|
-
* @deprecated Use schema instead. If you use model, all items will be initialized with the model to add resolvers (which are also deprecated)
|
|
133
|
-
*/
|
|
134
|
-
model?: Model;
|
|
135
|
-
indexes: Array<CollectionIndex>;
|
|
136
|
-
generateId: () => ModelClass['_id'];
|
|
137
|
-
getSchema: () => Schema;
|
|
138
|
-
db: MongoDB.Db;
|
|
139
|
-
client: OrionMongoClient;
|
|
140
|
-
rawCollection: MongoDB.Collection<ModelClass>;
|
|
141
|
-
initItem: InitItem<ModelClass>;
|
|
142
|
-
findOne: FindOne<ModelClass>;
|
|
143
|
-
find: Find<ModelClass>;
|
|
144
|
-
insertOne: InsertOne<ModelClass>;
|
|
145
|
-
insertMany: InsertMany<ModelClass>;
|
|
146
|
-
insertAndFind: InsertAndFind<ModelClass>;
|
|
147
|
-
deleteMany: DeleteMany<ModelClass>;
|
|
148
|
-
deleteOne: DeleteOne<ModelClass>;
|
|
149
|
-
updateOne: UpdateOne<ModelClass>;
|
|
150
|
-
updateMany: UpdateMany<ModelClass>;
|
|
151
|
-
upsert: Upsert<ModelClass>;
|
|
152
|
-
findOneAndUpdate: FindOneAndUpdate<ModelClass>;
|
|
153
|
-
/**
|
|
154
|
-
* Updates a document and returns the updated document with the changes
|
|
155
|
-
*/
|
|
156
|
-
updateAndFind: UpdateAndFind<ModelClass>;
|
|
157
|
-
updateItem: UpdateItem<ModelClass>;
|
|
158
|
-
estimatedDocumentCount: EstimatedDocumentCount<ModelClass>;
|
|
159
|
-
countDocuments: CountDocuments<ModelClass>;
|
|
160
|
-
aggregate: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.AggregateOptions) => MongoDB.AggregationCursor<T>;
|
|
161
|
-
watch: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.ChangeStreamOptions) => MongoDB.ChangeStream<T>;
|
|
162
|
-
loadData: DataLoader.LoadData<ModelClass>;
|
|
163
|
-
loadOne: DataLoader.LoadOne<ModelClass>;
|
|
164
|
-
loadMany: DataLoader.LoadMany<ModelClass>;
|
|
165
|
-
loadById: DataLoader.LoadById<ModelClass>;
|
|
166
|
-
/**
|
|
167
|
-
* Use this function if you are using tests and you pass the
|
|
168
|
-
* env var DONT_CREATE_INDEXES_AUTOMATICALLY and you need to
|
|
169
|
-
* create the indexes for this collection
|
|
170
|
-
*/
|
|
171
|
-
createIndexes: () => Promise<string[]>;
|
|
172
|
-
createIndexesPromise: Promise<string[]>;
|
|
173
|
-
connectionPromise: Promise<MongoDB.MongoClient>;
|
|
174
|
-
}
|
|
175
|
-
export type DistinctDocumentId<DistinctId extends string> = string & {
|
|
176
|
-
__TYPE__: `DistinctDocumentId<${DistinctId}>`;
|
|
177
|
-
};
|
|
178
|
-
export {};
|
package/lib/types/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/types/types.test.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
16
|
-
const resolvers_1 = require("@orion-js/resolvers");
|
|
17
|
-
const typed_model_1 = require("@orion-js/typed-model");
|
|
18
|
-
const index_1 = __importDefault(require("../createCollection/index"));
|
|
19
|
-
it('uses correctly typescript for collections', async () => {
|
|
20
|
-
const fullName = (0, resolvers_1.modelResolver)({
|
|
21
|
-
returns: String,
|
|
22
|
-
async resolve(user) {
|
|
23
|
-
return `${user.firstName} ${user.lastName}`;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
let User = class User {
|
|
27
|
-
};
|
|
28
|
-
__decorate([
|
|
29
|
-
(0, typed_model_1.Prop)(),
|
|
30
|
-
__metadata("design:type", String)
|
|
31
|
-
], User.prototype, "_id", void 0);
|
|
32
|
-
__decorate([
|
|
33
|
-
(0, typed_model_1.Prop)(),
|
|
34
|
-
__metadata("design:type", String)
|
|
35
|
-
], User.prototype, "firstName", void 0);
|
|
36
|
-
__decorate([
|
|
37
|
-
(0, typed_model_1.Prop)(),
|
|
38
|
-
__metadata("design:type", String)
|
|
39
|
-
], User.prototype, "lastName", void 0);
|
|
40
|
-
__decorate([
|
|
41
|
-
(0, typed_model_1.ResolverProp)(fullName),
|
|
42
|
-
__metadata("design:type", Object)
|
|
43
|
-
], User.prototype, "fullName", void 0);
|
|
44
|
-
User = __decorate([
|
|
45
|
-
(0, typed_model_1.TypedSchema)()
|
|
46
|
-
], User);
|
|
47
|
-
const Users = (0, index_1.default)({ name: (0, helpers_1.generateId)(), model: User, idPrefix: `userId-` });
|
|
48
|
-
const userId = await Users.insertOne({
|
|
49
|
-
firstName: 'Nico',
|
|
50
|
-
lastName: 'López'
|
|
51
|
-
});
|
|
52
|
-
const user1 = await Users.findOne({ _id: userId });
|
|
53
|
-
expect(user1.firstName).toBe('Nico');
|
|
54
|
-
expect(await user1.fullName()).toBe('Nico López');
|
|
55
|
-
await Users.updateOne(userId, { $set: { firstName: 'Nicolás' } });
|
|
56
|
-
const user2 = await Users.findOne({ lastName: 'López' });
|
|
57
|
-
expect(user2.firstName).toBe('Nicolás');
|
|
58
|
-
await Users.deleteOne({ _id: user2._id });
|
|
59
|
-
});
|