@orion-js/mongodb 4.0.0-next.1 → 4.0.0-next.2
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/dist/index.cjs +9037 -80575
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +206 -0
- package/dist/index.d.ts +184 -182
- package/dist/index.js +9032 -80564
- package/dist/index.js.map +1 -0
- package/package.json +20 -16
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import * as MongoDB from 'mongodb';
|
|
2
|
+
import { MongoClient, Db } from 'mongodb';
|
|
3
|
+
import { Model } from '@orion-js/models';
|
|
4
|
+
import { Blackbox, Schema } from '@orion-js/schema';
|
|
5
|
+
|
|
6
|
+
interface OrionMongoClient {
|
|
7
|
+
client: MongoClient;
|
|
8
|
+
db: Db;
|
|
9
|
+
uri: string;
|
|
10
|
+
dbName: string;
|
|
11
|
+
connectionPromise: Promise<MongoClient>;
|
|
12
|
+
connectionName: string;
|
|
13
|
+
}
|
|
14
|
+
interface OrionMongoConnectionsMap {
|
|
15
|
+
[key: string]: OrionMongoClient;
|
|
16
|
+
}
|
|
17
|
+
declare const connections: OrionMongoConnectionsMap;
|
|
18
|
+
|
|
19
|
+
type RemoveFunctions<T extends ModelClassBase> = Pick<T, {
|
|
20
|
+
[Key in keyof T]-?: T[Key] extends Function ? never : Key;
|
|
21
|
+
}[keyof T]> & {
|
|
22
|
+
_id: ModelClassBase['_id'];
|
|
23
|
+
};
|
|
24
|
+
type ModelClassBase = {
|
|
25
|
+
_id: string;
|
|
26
|
+
} & Blackbox;
|
|
27
|
+
type DocumentWithIdOptional<T extends ModelClassBase> = Omit<T, '_id'> & {
|
|
28
|
+
/**
|
|
29
|
+
* The ID of the document
|
|
30
|
+
*/
|
|
31
|
+
_id?: T['_id'];
|
|
32
|
+
};
|
|
33
|
+
type DocumentWithoutId<T> = Omit<T, '_id'>;
|
|
34
|
+
type ModelToDocumentType<ModelClass extends ModelClassBase> = RemoveFunctions<ModelClass>;
|
|
35
|
+
type ModelToDocumentTypeWithId<ModelClass extends ModelClassBase> = RemoveFunctions<ModelClass>;
|
|
36
|
+
type ModelToDocumentTypeWithoutId<ModelClass extends ModelClassBase> = DocumentWithoutId<ModelToDocumentType<ModelClass>>;
|
|
37
|
+
type ModelToDocumentTypeWithIdOptional<ModelClass extends ModelClassBase> = DocumentWithIdOptional<ModelToDocumentType<ModelClass>>;
|
|
38
|
+
type ModelToMongoSelector<ModelClass extends ModelClassBase> = MongoSelector<ModelToDocumentType<ModelClass>>;
|
|
39
|
+
type ModelToUpdateFilter<ModelClass extends ModelClassBase> = MongoDB.UpdateFilter<ModelToDocumentTypeWithoutId<ModelClass>> | Partial<ModelToDocumentTypeWithoutId<ModelClass>>;
|
|
40
|
+
interface CollectionIndex {
|
|
41
|
+
keys: MongoDB.IndexSpecification;
|
|
42
|
+
options?: MongoDB.CreateIndexesOptions;
|
|
43
|
+
}
|
|
44
|
+
declare namespace DataLoader {
|
|
45
|
+
interface LoadDataOptionsBase<ModelClass extends ModelClassBase> {
|
|
46
|
+
key: keyof ModelClass;
|
|
47
|
+
match?: MongoFilter<ModelClass>;
|
|
48
|
+
sort?: MongoDB.Sort;
|
|
49
|
+
project?: MongoDB.Document;
|
|
50
|
+
timeout?: number;
|
|
51
|
+
debug?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface LoadDataOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
54
|
+
value?: any;
|
|
55
|
+
values?: Array<any>;
|
|
56
|
+
}
|
|
57
|
+
export interface LoadOneOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
58
|
+
value: any;
|
|
59
|
+
}
|
|
60
|
+
export type LoadData<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
61
|
+
export type LoadOne<ModelClass extends ModelClassBase> = (options: LoadOneOptions<ModelClass>) => Promise<ModelClass>;
|
|
62
|
+
export type LoadMany<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
63
|
+
export type LoadById<ModelClass extends ModelClassBase> = (id: ModelClass['_id']) => Promise<ModelClass>;
|
|
64
|
+
export { };
|
|
65
|
+
}
|
|
66
|
+
type MongoFilter<ModelClass extends ModelClassBase = ModelClassBase> = MongoDB.Filter<ModelClass> & ({
|
|
67
|
+
_id?: ModelClass['_id'];
|
|
68
|
+
} | {
|
|
69
|
+
_id?: {
|
|
70
|
+
$in: ModelClass['_id'][];
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
type MongoSelector<ModelClass extends ModelClassBase = ModelClassBase> = ModelClass['_id'] | MongoFilter<ModelClass>;
|
|
74
|
+
interface FindCursor<ModelClass> extends MongoDB.FindCursor {
|
|
75
|
+
toArray: () => Promise<Array<ModelClass>>;
|
|
76
|
+
}
|
|
77
|
+
interface UpdateOptions {
|
|
78
|
+
clean?: boolean;
|
|
79
|
+
validate?: boolean;
|
|
80
|
+
mongoOptions?: MongoDB.UpdateOptions;
|
|
81
|
+
}
|
|
82
|
+
interface FindOneAndUpdateUpdateOptions {
|
|
83
|
+
clean?: boolean;
|
|
84
|
+
validate?: boolean;
|
|
85
|
+
mongoOptions?: MongoDB.FindOneAndUpdateOptions;
|
|
86
|
+
}
|
|
87
|
+
interface InsertOptions {
|
|
88
|
+
clean?: boolean;
|
|
89
|
+
validate?: boolean;
|
|
90
|
+
mongoOptions?: MongoDB.InsertOneOptions;
|
|
91
|
+
}
|
|
92
|
+
type InitItem<ModelClass extends ModelClassBase> = (doc: any) => ModelClass;
|
|
93
|
+
type FindOne<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => Promise<ModelClass>;
|
|
94
|
+
type Find<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => FindCursor<ModelClass>;
|
|
95
|
+
type FindOneAndUpdate<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
96
|
+
type UpdateAndFind<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
97
|
+
type UpdateItem<ModelClass extends ModelClassBase> = (item: ModelClass, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<void>;
|
|
98
|
+
type InsertOne<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass['_id']>;
|
|
99
|
+
type InsertMany<ModelClass extends ModelClassBase> = (doc: Array<ModelToDocumentTypeWithIdOptional<ModelClass>>, options?: InsertOptions) => Promise<Array<ModelClass['_id']>>;
|
|
100
|
+
type InsertAndFind<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass>;
|
|
101
|
+
type DeleteMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
102
|
+
type DeleteOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
103
|
+
type UpdateOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
104
|
+
type UpdateMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult | MongoDB.Document>;
|
|
105
|
+
type Upsert<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
106
|
+
interface CreateCollectionOptions<ModelClass extends ModelClassBase = ModelClassBase> {
|
|
107
|
+
/**
|
|
108
|
+
* The name of the collection on the Mongo Database
|
|
109
|
+
*/
|
|
110
|
+
name: string;
|
|
111
|
+
/**
|
|
112
|
+
* The name of the connection to use. The Mongo URL of this connection will be search on env variables.
|
|
113
|
+
* If not found, the connection url will be `env.mongo_url`
|
|
114
|
+
* If defined, the connection url will be `env.mongo_url_${name}`
|
|
115
|
+
*/
|
|
116
|
+
connectionName?: string;
|
|
117
|
+
/**
|
|
118
|
+
* The schema used for cleaning and validation of the documents
|
|
119
|
+
*/
|
|
120
|
+
schema?: any;
|
|
121
|
+
/**
|
|
122
|
+
* @deprecated Use schema instead. If you use model, all items will be initialized with the model to add resolvers (which are also deprecated)
|
|
123
|
+
*/
|
|
124
|
+
model?: any;
|
|
125
|
+
/**
|
|
126
|
+
* The indexes to use
|
|
127
|
+
*/
|
|
128
|
+
indexes?: Array<CollectionIndex>;
|
|
129
|
+
/**
|
|
130
|
+
* Select between random id generation o mongo (time based) id generation
|
|
131
|
+
*/
|
|
132
|
+
idGeneration?: 'mongo' | 'random' | 'uuid';
|
|
133
|
+
/**
|
|
134
|
+
* ID prefix. idGeneration will be forced to random. Recommended for type checking
|
|
135
|
+
*/
|
|
136
|
+
idPrefix?: ModelClass['_id'];
|
|
137
|
+
}
|
|
138
|
+
type EstimatedDocumentCount<ModelClass extends ModelClassBase> = (options?: MongoDB.EstimatedDocumentCountOptions) => Promise<number>;
|
|
139
|
+
type CountDocuments<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.CountDocumentsOptions) => Promise<number>;
|
|
140
|
+
type CreateCollection = <ModelClass extends ModelClassBase = any>(options: CreateCollectionOptions<ModelClass>) => Collection<ModelClass>;
|
|
141
|
+
declare class Collection<ModelClass extends ModelClassBase = ModelClassBase> {
|
|
142
|
+
name: string;
|
|
143
|
+
connectionName?: string;
|
|
144
|
+
schema?: Schema;
|
|
145
|
+
/**
|
|
146
|
+
* @deprecated Use schema instead. If you use model, all items will be initialized with the model to add resolvers (which are also deprecated)
|
|
147
|
+
*/
|
|
148
|
+
model?: Model;
|
|
149
|
+
indexes: Array<CollectionIndex>;
|
|
150
|
+
generateId: () => ModelClass['_id'];
|
|
151
|
+
getSchema: () => Schema;
|
|
152
|
+
db: MongoDB.Db;
|
|
153
|
+
client: OrionMongoClient;
|
|
154
|
+
rawCollection: MongoDB.Collection<ModelClass>;
|
|
155
|
+
initItem: InitItem<ModelClass>;
|
|
156
|
+
findOne: FindOne<ModelClass>;
|
|
157
|
+
find: Find<ModelClass>;
|
|
158
|
+
insertOne: InsertOne<ModelClass>;
|
|
159
|
+
insertMany: InsertMany<ModelClass>;
|
|
160
|
+
insertAndFind: InsertAndFind<ModelClass>;
|
|
161
|
+
deleteMany: DeleteMany<ModelClass>;
|
|
162
|
+
deleteOne: DeleteOne<ModelClass>;
|
|
163
|
+
updateOne: UpdateOne<ModelClass>;
|
|
164
|
+
updateMany: UpdateMany<ModelClass>;
|
|
165
|
+
upsert: Upsert<ModelClass>;
|
|
166
|
+
findOneAndUpdate: FindOneAndUpdate<ModelClass>;
|
|
167
|
+
/**
|
|
168
|
+
* Updates a document and returns the updated document with the changes
|
|
169
|
+
*/
|
|
170
|
+
updateAndFind: UpdateAndFind<ModelClass>;
|
|
171
|
+
updateItem: UpdateItem<ModelClass>;
|
|
172
|
+
estimatedDocumentCount: EstimatedDocumentCount<ModelClass>;
|
|
173
|
+
countDocuments: CountDocuments<ModelClass>;
|
|
174
|
+
aggregate: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.AggregateOptions) => MongoDB.AggregationCursor<T>;
|
|
175
|
+
watch: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.ChangeStreamOptions) => MongoDB.ChangeStream<T>;
|
|
176
|
+
loadData: DataLoader.LoadData<ModelClass>;
|
|
177
|
+
loadOne: DataLoader.LoadOne<ModelClass>;
|
|
178
|
+
loadMany: DataLoader.LoadMany<ModelClass>;
|
|
179
|
+
loadById: DataLoader.LoadById<ModelClass>;
|
|
180
|
+
/**
|
|
181
|
+
* Use this function if you are using tests and you pass the
|
|
182
|
+
* env var DONT_CREATE_INDEXES_AUTOMATICALLY and you need to
|
|
183
|
+
* create the indexes for this collection
|
|
184
|
+
*/
|
|
185
|
+
createIndexes: () => Promise<string[]>;
|
|
186
|
+
createIndexesPromise: Promise<string[]>;
|
|
187
|
+
connectionPromise: Promise<MongoDB.MongoClient>;
|
|
188
|
+
}
|
|
189
|
+
type DistinctDocumentId<DistinctId extends string> = string & {
|
|
190
|
+
__TYPE__: `DistinctDocumentId<${DistinctId}>`;
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
declare const createIndexesPromises: any[];
|
|
194
|
+
declare const createCollection: CreateCollection;
|
|
195
|
+
|
|
196
|
+
declare const allConnectionPromises: any[];
|
|
197
|
+
interface MongoConnectOptions {
|
|
198
|
+
name: string;
|
|
199
|
+
uri?: string;
|
|
200
|
+
}
|
|
201
|
+
declare const getMongoConnection: ({ name, uri }: MongoConnectOptions) => OrionMongoClient;
|
|
202
|
+
|
|
203
|
+
declare function MongoCollection<ModelClass extends ModelClassBase = ModelClassBase>(options: CreateCollectionOptions<ModelClass>): (object: any, propertyName: string, index?: number) => void;
|
|
204
|
+
declare function Repository(): ClassDecorator;
|
|
205
|
+
|
|
206
|
+
export { Collection, type CollectionIndex, type CountDocuments, type CreateCollection, type CreateCollectionOptions, DataLoader, type DeleteMany, type DeleteOne, type DistinctDocumentId, type DocumentWithIdOptional, type DocumentWithoutId, type EstimatedDocumentCount, type Find, type FindCursor, type FindOne, type FindOneAndUpdate, type FindOneAndUpdateUpdateOptions, type InitItem, type InsertAndFind, type InsertMany, type InsertOne, type InsertOptions, type ModelClassBase, type ModelToDocumentType, type ModelToDocumentTypeWithId, type ModelToDocumentTypeWithIdOptional, type ModelToDocumentTypeWithoutId, type ModelToMongoSelector, type ModelToUpdateFilter, MongoCollection, type MongoFilter, type MongoSelector, Repository, type UpdateAndFind, type UpdateItem, type UpdateMany, type UpdateOne, type UpdateOptions, type Upsert, allConnectionPromises, connections, createCollection, createIndexesPromises, getMongoConnection };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,204 +1,206 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as MongoDB from 'mongodb';
|
|
2
|
+
import { MongoClient, Db } from 'mongodb';
|
|
3
3
|
import { Model } from '@orion-js/models';
|
|
4
4
|
import { Blackbox, Schema } from '@orion-js/schema';
|
|
5
|
-
import * as MongoDB from 'mongodb';
|
|
6
|
-
import { Db, MongoClient } from 'mongodb';
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
interface OrionMongoClient {
|
|
7
|
+
client: MongoClient;
|
|
8
|
+
db: Db;
|
|
9
|
+
uri: string;
|
|
10
|
+
dbName: string;
|
|
11
|
+
connectionPromise: Promise<MongoClient>;
|
|
12
|
+
connectionName: string;
|
|
15
13
|
}
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
interface OrionMongoConnectionsMap {
|
|
15
|
+
[key: string]: OrionMongoClient;
|
|
18
16
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
declare const connections: OrionMongoConnectionsMap;
|
|
18
|
+
|
|
19
|
+
type RemoveFunctions<T extends ModelClassBase> = Pick<T, {
|
|
20
|
+
[Key in keyof T]-?: T[Key] extends Function ? never : Key;
|
|
22
21
|
}[keyof T]> & {
|
|
23
|
-
|
|
22
|
+
_id: ModelClassBase['_id'];
|
|
24
23
|
};
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
type ModelClassBase = {
|
|
25
|
+
_id: string;
|
|
27
26
|
} & Blackbox;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
type DocumentWithIdOptional<T extends ModelClassBase> = Omit<T, '_id'> & {
|
|
28
|
+
/**
|
|
29
|
+
* The ID of the document
|
|
30
|
+
*/
|
|
31
|
+
_id?: T['_id'];
|
|
33
32
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
type DocumentWithoutId<T> = Omit<T, '_id'>;
|
|
34
|
+
type ModelToDocumentType<ModelClass extends ModelClassBase> = RemoveFunctions<ModelClass>;
|
|
35
|
+
type ModelToDocumentTypeWithId<ModelClass extends ModelClassBase> = RemoveFunctions<ModelClass>;
|
|
36
|
+
type ModelToDocumentTypeWithoutId<ModelClass extends ModelClassBase> = DocumentWithoutId<ModelToDocumentType<ModelClass>>;
|
|
37
|
+
type ModelToDocumentTypeWithIdOptional<ModelClass extends ModelClassBase> = DocumentWithIdOptional<ModelToDocumentType<ModelClass>>;
|
|
38
|
+
type ModelToMongoSelector<ModelClass extends ModelClassBase> = MongoSelector<ModelToDocumentType<ModelClass>>;
|
|
39
|
+
type ModelToUpdateFilter<ModelClass extends ModelClassBase> = MongoDB.UpdateFilter<ModelToDocumentTypeWithoutId<ModelClass>> | Partial<ModelToDocumentTypeWithoutId<ModelClass>>;
|
|
40
|
+
interface CollectionIndex {
|
|
41
|
+
keys: MongoDB.IndexSpecification;
|
|
42
|
+
options?: MongoDB.CreateIndexesOptions;
|
|
44
43
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
44
|
+
declare namespace DataLoader {
|
|
45
|
+
interface LoadDataOptionsBase<ModelClass extends ModelClassBase> {
|
|
46
|
+
key: keyof ModelClass;
|
|
47
|
+
match?: MongoFilter<ModelClass>;
|
|
48
|
+
sort?: MongoDB.Sort;
|
|
49
|
+
project?: MongoDB.Document;
|
|
50
|
+
timeout?: number;
|
|
51
|
+
debug?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface LoadDataOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
54
|
+
value?: any;
|
|
55
|
+
values?: Array<any>;
|
|
56
|
+
}
|
|
57
|
+
export interface LoadOneOptions<ModelClass extends ModelClassBase> extends LoadDataOptionsBase<ModelClass> {
|
|
58
|
+
value: any;
|
|
59
|
+
}
|
|
60
|
+
export type LoadData<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
61
|
+
export type LoadOne<ModelClass extends ModelClassBase> = (options: LoadOneOptions<ModelClass>) => Promise<ModelClass>;
|
|
62
|
+
export type LoadMany<ModelClass extends ModelClassBase> = (options: LoadDataOptions<ModelClass>) => Promise<Array<ModelClass>>;
|
|
63
|
+
export type LoadById<ModelClass extends ModelClassBase> = (id: ModelClass['_id']) => Promise<ModelClass>;
|
|
64
|
+
export { };
|
|
66
65
|
}
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
type MongoFilter<ModelClass extends ModelClassBase = ModelClassBase> = MongoDB.Filter<ModelClass> & ({
|
|
67
|
+
_id?: ModelClass['_id'];
|
|
69
68
|
} | {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
_id?: {
|
|
70
|
+
$in: ModelClass['_id'][];
|
|
71
|
+
};
|
|
73
72
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
type MongoSelector<ModelClass extends ModelClassBase = ModelClassBase> = ModelClass['_id'] | MongoFilter<ModelClass>;
|
|
74
|
+
interface FindCursor<ModelClass> extends MongoDB.FindCursor {
|
|
75
|
+
toArray: () => Promise<Array<ModelClass>>;
|
|
77
76
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
interface UpdateOptions {
|
|
78
|
+
clean?: boolean;
|
|
79
|
+
validate?: boolean;
|
|
80
|
+
mongoOptions?: MongoDB.UpdateOptions;
|
|
82
81
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
interface FindOneAndUpdateUpdateOptions {
|
|
83
|
+
clean?: boolean;
|
|
84
|
+
validate?: boolean;
|
|
85
|
+
mongoOptions?: MongoDB.FindOneAndUpdateOptions;
|
|
87
86
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
interface InsertOptions {
|
|
88
|
+
clean?: boolean;
|
|
89
|
+
validate?: boolean;
|
|
90
|
+
mongoOptions?: MongoDB.InsertOneOptions;
|
|
92
91
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
92
|
+
type InitItem<ModelClass extends ModelClassBase> = (doc: any) => ModelClass;
|
|
93
|
+
type FindOne<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => Promise<ModelClass>;
|
|
94
|
+
type Find<ModelClass extends ModelClassBase> = (selector?: ModelToMongoSelector<ModelClass>, options?: MongoDB.FindOptions) => FindCursor<ModelClass>;
|
|
95
|
+
type FindOneAndUpdate<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
96
|
+
type UpdateAndFind<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<ModelClass>;
|
|
97
|
+
type UpdateItem<ModelClass extends ModelClassBase> = (item: ModelClass, modifier: ModelToUpdateFilter<ModelClass>, options?: FindOneAndUpdateUpdateOptions) => Promise<void>;
|
|
98
|
+
type InsertOne<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass['_id']>;
|
|
99
|
+
type InsertMany<ModelClass extends ModelClassBase> = (doc: Array<ModelToDocumentTypeWithIdOptional<ModelClass>>, options?: InsertOptions) => Promise<Array<ModelClass['_id']>>;
|
|
100
|
+
type InsertAndFind<ModelClass extends ModelClassBase> = (doc: ModelToDocumentTypeWithIdOptional<ModelClass>, options?: InsertOptions) => Promise<ModelClass>;
|
|
101
|
+
type DeleteMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
102
|
+
type DeleteOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.DeleteOptions) => Promise<MongoDB.DeleteResult>;
|
|
103
|
+
type UpdateOne<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
104
|
+
type UpdateMany<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult | MongoDB.Document>;
|
|
105
|
+
type Upsert<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, modifier: ModelToUpdateFilter<ModelClass>, options?: UpdateOptions) => Promise<MongoDB.UpdateResult>;
|
|
106
|
+
interface CreateCollectionOptions<ModelClass extends ModelClassBase = ModelClassBase> {
|
|
107
|
+
/**
|
|
108
|
+
* The name of the collection on the Mongo Database
|
|
109
|
+
*/
|
|
110
|
+
name: string;
|
|
111
|
+
/**
|
|
112
|
+
* The name of the connection to use. The Mongo URL of this connection will be search on env variables.
|
|
113
|
+
* If not found, the connection url will be `env.mongo_url`
|
|
114
|
+
* If defined, the connection url will be `env.mongo_url_${name}`
|
|
115
|
+
*/
|
|
116
|
+
connectionName?: string;
|
|
117
|
+
/**
|
|
118
|
+
* The schema used for cleaning and validation of the documents
|
|
119
|
+
*/
|
|
120
|
+
schema?: any;
|
|
121
|
+
/**
|
|
122
|
+
* @deprecated Use schema instead. If you use model, all items will be initialized with the model to add resolvers (which are also deprecated)
|
|
123
|
+
*/
|
|
124
|
+
model?: any;
|
|
125
|
+
/**
|
|
126
|
+
* The indexes to use
|
|
127
|
+
*/
|
|
128
|
+
indexes?: Array<CollectionIndex>;
|
|
129
|
+
/**
|
|
130
|
+
* Select between random id generation o mongo (time based) id generation
|
|
131
|
+
*/
|
|
132
|
+
idGeneration?: 'mongo' | 'random' | 'uuid';
|
|
133
|
+
/**
|
|
134
|
+
* ID prefix. idGeneration will be forced to random. Recommended for type checking
|
|
135
|
+
*/
|
|
136
|
+
idPrefix?: ModelClass['_id'];
|
|
138
137
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
138
|
+
type EstimatedDocumentCount<ModelClass extends ModelClassBase> = (options?: MongoDB.EstimatedDocumentCountOptions) => Promise<number>;
|
|
139
|
+
type CountDocuments<ModelClass extends ModelClassBase> = (selector: ModelToMongoSelector<ModelClass>, options?: MongoDB.CountDocumentsOptions) => Promise<number>;
|
|
140
|
+
type CreateCollection = <ModelClass extends ModelClassBase = any>(options: CreateCollectionOptions<ModelClass>) => Collection<ModelClass>;
|
|
141
|
+
declare class Collection<ModelClass extends ModelClassBase = ModelClassBase> {
|
|
142
|
+
name: string;
|
|
143
|
+
connectionName?: string;
|
|
144
|
+
schema?: Schema;
|
|
145
|
+
/**
|
|
146
|
+
* @deprecated Use schema instead. If you use model, all items will be initialized with the model to add resolvers (which are also deprecated)
|
|
147
|
+
*/
|
|
148
|
+
model?: Model;
|
|
149
|
+
indexes: Array<CollectionIndex>;
|
|
150
|
+
generateId: () => ModelClass['_id'];
|
|
151
|
+
getSchema: () => Schema;
|
|
152
|
+
db: MongoDB.Db;
|
|
153
|
+
client: OrionMongoClient;
|
|
154
|
+
rawCollection: MongoDB.Collection<ModelClass>;
|
|
155
|
+
initItem: InitItem<ModelClass>;
|
|
156
|
+
findOne: FindOne<ModelClass>;
|
|
157
|
+
find: Find<ModelClass>;
|
|
158
|
+
insertOne: InsertOne<ModelClass>;
|
|
159
|
+
insertMany: InsertMany<ModelClass>;
|
|
160
|
+
insertAndFind: InsertAndFind<ModelClass>;
|
|
161
|
+
deleteMany: DeleteMany<ModelClass>;
|
|
162
|
+
deleteOne: DeleteOne<ModelClass>;
|
|
163
|
+
updateOne: UpdateOne<ModelClass>;
|
|
164
|
+
updateMany: UpdateMany<ModelClass>;
|
|
165
|
+
upsert: Upsert<ModelClass>;
|
|
166
|
+
findOneAndUpdate: FindOneAndUpdate<ModelClass>;
|
|
167
|
+
/**
|
|
168
|
+
* Updates a document and returns the updated document with the changes
|
|
169
|
+
*/
|
|
170
|
+
updateAndFind: UpdateAndFind<ModelClass>;
|
|
171
|
+
updateItem: UpdateItem<ModelClass>;
|
|
172
|
+
estimatedDocumentCount: EstimatedDocumentCount<ModelClass>;
|
|
173
|
+
countDocuments: CountDocuments<ModelClass>;
|
|
174
|
+
aggregate: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.AggregateOptions) => MongoDB.AggregationCursor<T>;
|
|
175
|
+
watch: <T = MongoDB.Document>(pipeline?: MongoDB.Document[], options?: MongoDB.ChangeStreamOptions) => MongoDB.ChangeStream<T>;
|
|
176
|
+
loadData: DataLoader.LoadData<ModelClass>;
|
|
177
|
+
loadOne: DataLoader.LoadOne<ModelClass>;
|
|
178
|
+
loadMany: DataLoader.LoadMany<ModelClass>;
|
|
179
|
+
loadById: DataLoader.LoadById<ModelClass>;
|
|
180
|
+
/**
|
|
181
|
+
* Use this function if you are using tests and you pass the
|
|
182
|
+
* env var DONT_CREATE_INDEXES_AUTOMATICALLY and you need to
|
|
183
|
+
* create the indexes for this collection
|
|
184
|
+
*/
|
|
185
|
+
createIndexes: () => Promise<string[]>;
|
|
186
|
+
createIndexesPromise: Promise<string[]>;
|
|
187
|
+
connectionPromise: Promise<MongoDB.MongoClient>;
|
|
189
188
|
}
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
type DistinctDocumentId<DistinctId extends string> = string & {
|
|
190
|
+
__TYPE__: `DistinctDocumentId<${DistinctId}>`;
|
|
192
191
|
};
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
192
|
+
|
|
193
|
+
declare const createIndexesPromises: any[];
|
|
194
|
+
declare const createCollection: CreateCollection;
|
|
195
|
+
|
|
196
|
+
declare const allConnectionPromises: any[];
|
|
197
|
+
interface MongoConnectOptions {
|
|
198
|
+
name: string;
|
|
199
|
+
uri?: string;
|
|
199
200
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
201
|
+
declare const getMongoConnection: ({ name, uri }: MongoConnectOptions) => OrionMongoClient;
|
|
202
|
+
|
|
203
|
+
declare function MongoCollection<ModelClass extends ModelClassBase = ModelClassBase>(options: CreateCollectionOptions<ModelClass>): (object: any, propertyName: string, index?: number) => void;
|
|
204
|
+
declare function Repository(): ClassDecorator;
|
|
203
205
|
|
|
204
|
-
export {};
|
|
206
|
+
export { Collection, type CollectionIndex, type CountDocuments, type CreateCollection, type CreateCollectionOptions, DataLoader, type DeleteMany, type DeleteOne, type DistinctDocumentId, type DocumentWithIdOptional, type DocumentWithoutId, type EstimatedDocumentCount, type Find, type FindCursor, type FindOne, type FindOneAndUpdate, type FindOneAndUpdateUpdateOptions, type InitItem, type InsertAndFind, type InsertMany, type InsertOne, type InsertOptions, type ModelClassBase, type ModelToDocumentType, type ModelToDocumentTypeWithId, type ModelToDocumentTypeWithIdOptional, type ModelToDocumentTypeWithoutId, type ModelToMongoSelector, type ModelToUpdateFilter, MongoCollection, type MongoFilter, type MongoSelector, Repository, type UpdateAndFind, type UpdateItem, type UpdateMany, type UpdateOne, type UpdateOptions, type Upsert, allConnectionPromises, connections, createCollection, createIndexesPromises, getMongoConnection };
|