@flowerforce/flowerbase-client 0.3.3-beta.3 → 0.3.3-beta.5
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 +12 -0
- package/dist/mongo.d.ts.map +1 -1
- package/dist/mongo.js +2 -0
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/mongo.test.ts +32 -4
- package/src/mongo.ts +5 -1
- package/src/types.ts +8 -0
package/README.md
CHANGED
|
@@ -121,12 +121,24 @@ Metodi disponibili su `collection`:
|
|
|
121
121
|
|
|
122
122
|
- `find(query?, options?)`
|
|
123
123
|
- `findOne(query?, options?)`
|
|
124
|
+
- `findOneAndUpdate(filter, update, options?)`
|
|
125
|
+
- `findOneAndReplace(filter, replacement, options?)`
|
|
126
|
+
- `findOneAndDelete(filter, options?)`
|
|
127
|
+
- `aggregate(pipeline)`
|
|
128
|
+
- `count(query?, options?)`
|
|
129
|
+
- `countDocuments(query?, options?)`
|
|
130
|
+
- `distinct(key, filter?, options?)`
|
|
124
131
|
- `insertOne(document, options?)`
|
|
132
|
+
- `insertMany(documents, options?)`
|
|
133
|
+
- `bulkWrite(operations, options?)` solo dentro funzioni server privilegiate eseguite con `run_as_system: true`
|
|
125
134
|
- `updateOne(filter, update, options?)`
|
|
126
135
|
- `updateMany(filter, update, options?)`
|
|
127
136
|
- `deleteOne(filter, options?)`
|
|
137
|
+
- `deleteMany(filter, options?)`
|
|
128
138
|
- `watch(options?)`
|
|
129
139
|
|
|
140
|
+
`bulkWrite()` e' esposto per compatibilita' con la surface MongoDB/Realm, ma una chiamata normale dal client viene rifiutata. Funziona solo quando il backend esegue la funzione in modalita' `run_as_system`.
|
|
141
|
+
|
|
130
142
|
## Watch / Change streams
|
|
131
143
|
|
|
132
144
|
`watch()` restituisce un async iterator con reconnect automatico e metodo `close()`.
|
package/dist/mongo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../src/mongo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAkB,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAoB7E,eAAO,MAAM,iBAAiB,QAAS,GAAG,eAAe,kBAAkB,UAAU,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../src/mongo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAkB,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAoB7E,eAAO,MAAM,iBAAiB,QAAS,GAAG,eAAe,kBAAkB,UAAU,MAAM,KAAG,eA6F5F,CAAA"}
|
package/dist/mongo.js
CHANGED
|
@@ -74,6 +74,7 @@ const createMongoClient = (app, serviceName, userId) => ({
|
|
|
74
74
|
return {
|
|
75
75
|
find: (query = {}, options = {}) => callService('find', [{ query, options }]),
|
|
76
76
|
findOne: (query = {}, options = {}) => callService('findOne', [{ query, options }]),
|
|
77
|
+
distinct: (key, filter = {}, options = {}) => callService('distinct', [{ key, query: filter, options }]),
|
|
77
78
|
findOneAndUpdate: (filter, update, options = {}) => callService('findOneAndUpdate', [{ filter, update, options }]),
|
|
78
79
|
findOneAndReplace: (filter, replacement, options = {}) => callService('findOneAndReplace', [{ filter, replacement, options }]),
|
|
79
80
|
findOneAndDelete: (filter, options = {}) => callService('findOneAndDelete', [{ filter, options }]),
|
|
@@ -81,6 +82,7 @@ const createMongoClient = (app, serviceName, userId) => ({
|
|
|
81
82
|
count: (query = {}, options = {}) => callService('count', [{ query, options }]),
|
|
82
83
|
insertOne: (document, options = {}) => callService('insertOne', [{ document, options }]),
|
|
83
84
|
insertMany: (documents, options = {}) => callService('insertMany', [{ documents, options }]),
|
|
85
|
+
bulkWrite: (operations, options = {}) => callService('bulkWrite', [{ operations, options }]),
|
|
84
86
|
updateOne: (filter, update, options = {}) => callService('updateOne', [{ filter, update, options }]),
|
|
85
87
|
updateMany: (filter, update, options = {}) => callService('updateMany', [{ filter, update, options }]),
|
|
86
88
|
deleteOne: (filter, options = {}) => callService('deleteOne', [{ query: filter, options }]),
|
package/dist/types.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export type MongoDbServiceName = 'mongodb-atlas';
|
|
|
33
33
|
export type MongoDbServiceArgument = {
|
|
34
34
|
database: string;
|
|
35
35
|
collection: string;
|
|
36
|
+
key?: string;
|
|
36
37
|
query?: MongoDbDocument;
|
|
37
38
|
filter?: MongoDbDocument;
|
|
38
39
|
update?: MongoDbDocument | MongoDbDocument[];
|
|
@@ -41,6 +42,7 @@ export type MongoDbServiceArgument = {
|
|
|
41
42
|
returnNewDocument?: boolean;
|
|
42
43
|
document?: MongoDbDocument;
|
|
43
44
|
documents?: MongoDbDocument[];
|
|
45
|
+
operations?: MongoDbDocument[];
|
|
44
46
|
pipeline?: MongoDbDocument[];
|
|
45
47
|
replacement?: MongoDbDocument;
|
|
46
48
|
};
|
|
@@ -70,6 +72,7 @@ export type WatchAsyncIterator<TChange = unknown> = AsyncIterableIterator<TChang
|
|
|
70
72
|
export interface CollectionLike {
|
|
71
73
|
find: (query?: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
72
74
|
findOne: (query?: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
75
|
+
distinct: (key: string, filter?: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown[]>;
|
|
73
76
|
findOneAndUpdate: (filter: Record<string, unknown>, update: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
74
77
|
findOneAndReplace: (filter: Record<string, unknown>, replacement: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
75
78
|
findOneAndDelete: (filter: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
@@ -77,6 +80,7 @@ export interface CollectionLike {
|
|
|
77
80
|
count: (filter?: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
78
81
|
insertOne: (document: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
79
82
|
insertMany: (documents: Record<string, unknown>[], options?: Record<string, unknown>) => Promise<unknown>;
|
|
83
|
+
bulkWrite: (operations: Record<string, unknown>[], options?: Record<string, unknown>) => Promise<unknown>;
|
|
80
84
|
updateOne: (filter: Record<string, unknown>, update: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
81
85
|
updateMany: (filter: Record<string, unknown>, update: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
|
82
86
|
deleteOne: (filter: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ObjectId } from 'bson'
|
|
1
|
+
import { EJSON, ObjectId } from 'bson'
|
|
2
2
|
import { App } from '../app'
|
|
3
3
|
import { Credentials } from '../credentials'
|
|
4
4
|
|
|
@@ -66,18 +66,46 @@ describe('flowerbase-client mongo service wrapper', () => {
|
|
|
66
66
|
await app.logIn(Credentials.emailPassword('john@doe.com', 'secret123'))
|
|
67
67
|
|
|
68
68
|
const collection = app.currentUser!.mongoClient('mongodb-atlas').db('testdb').collection('todos')
|
|
69
|
+
const bulkOperations = [
|
|
70
|
+
{
|
|
71
|
+
updateOne: {
|
|
72
|
+
filter: { done: false },
|
|
73
|
+
update: { $set: { done: true } }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
69
77
|
|
|
70
78
|
await collection.findOneAndUpdate({ done: false }, { $set: { done: true } })
|
|
71
79
|
await collection.findOneAndReplace({ done: true }, { done: true, title: 'done' })
|
|
72
80
|
await collection.findOneAndDelete({ done: true })
|
|
73
81
|
await collection.aggregate([{ $match: { done: true } }])
|
|
74
82
|
await collection.count({ done: true })
|
|
83
|
+
await collection.distinct('status', { done: true }, { maxTimeMS: 1000 })
|
|
75
84
|
await collection.insertMany([{ title: 'A' }, { title: 'B' }])
|
|
76
85
|
await collection.deleteMany({ done: true })
|
|
86
|
+
await collection.bulkWrite(bulkOperations, { ordered: false })
|
|
77
87
|
|
|
78
88
|
const calls = (global.fetch as jest.Mock).mock.calls
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
89
|
+
const parsedBodies = calls
|
|
90
|
+
.map(([, request]) => request?.body)
|
|
91
|
+
.filter((body): body is string => typeof body === 'string')
|
|
92
|
+
.map((body) => EJSON.deserialize(JSON.parse(body)))
|
|
93
|
+
const distinctBody = parsedBodies.find((body) => body.name === 'distinct')
|
|
94
|
+
const bulkWriteBody = parsedBodies.find((body) => body.name === 'bulkWrite')
|
|
95
|
+
|
|
96
|
+
expect(distinctBody.service).toBe('mongodb-atlas')
|
|
97
|
+
expect(distinctBody.name).toBe('distinct')
|
|
98
|
+
expect(distinctBody.arguments[0]).toMatchObject({
|
|
99
|
+
key: 'status',
|
|
100
|
+
query: { done: true },
|
|
101
|
+
options: { maxTimeMS: 1000 }
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
expect(bulkWriteBody.service).toBe('mongodb-atlas')
|
|
105
|
+
expect(bulkWriteBody.name).toBe('bulkWrite')
|
|
106
|
+
expect(bulkWriteBody.arguments[0]).toMatchObject({
|
|
107
|
+
operations: bulkOperations,
|
|
108
|
+
options: { ordered: false }
|
|
109
|
+
})
|
|
82
110
|
})
|
|
83
111
|
})
|
package/src/mongo.ts
CHANGED
|
@@ -46,7 +46,7 @@ export const createMongoClient = (app: App, serviceName: MongoDbServiceName, use
|
|
|
46
46
|
throw new Error('watch options must be an object')
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
const typed = input as { ids?: unknown[]; filter?: Record<string, unknown>;
|
|
49
|
+
const typed = input as { ids?: unknown[]; filter?: Record<string, unknown>;[key: string]: unknown }
|
|
50
50
|
const keys = Object.keys(typed)
|
|
51
51
|
const hasOnlyAllowedKeys = keys.every((key) => key === 'ids' || key === 'filter')
|
|
52
52
|
if (!hasOnlyAllowedKeys) {
|
|
@@ -77,6 +77,8 @@ export const createMongoClient = (app: App, serviceName: MongoDbServiceName, use
|
|
|
77
77
|
return {
|
|
78
78
|
find: (query = {}, options = {}) => callService('find', [{ query, options }]),
|
|
79
79
|
findOne: (query = {}, options = {}) => callService('findOne', [{ query, options }]),
|
|
80
|
+
distinct: (key, filter = {}, options = {}) =>
|
|
81
|
+
callService('distinct', [{ key, query: filter, options }]),
|
|
80
82
|
findOneAndUpdate: (filter, update, options = {}) =>
|
|
81
83
|
callService('findOneAndUpdate', [{ filter, update, options }]),
|
|
82
84
|
findOneAndReplace: (filter, replacement, options = {}) =>
|
|
@@ -86,6 +88,8 @@ export const createMongoClient = (app: App, serviceName: MongoDbServiceName, use
|
|
|
86
88
|
count: (query = {}, options = {}) => callService('count', [{ query, options }]),
|
|
87
89
|
insertOne: (document, options = {}) => callService('insertOne', [{ document, options }]),
|
|
88
90
|
insertMany: (documents, options = {}) => callService('insertMany', [{ documents, options }]),
|
|
91
|
+
bulkWrite: (operations, options = {}) =>
|
|
92
|
+
callService('bulkWrite', [{ operations, options }]),
|
|
89
93
|
updateOne: (filter, update, options = {}) =>
|
|
90
94
|
callService('updateOne', [{ filter, update, options }]),
|
|
91
95
|
updateMany: (filter, update, options = {}) =>
|
package/src/types.ts
CHANGED
|
@@ -30,6 +30,7 @@ export type MongoDbServiceName = 'mongodb-atlas'
|
|
|
30
30
|
export type MongoDbServiceArgument = {
|
|
31
31
|
database: string
|
|
32
32
|
collection: string
|
|
33
|
+
key?: string
|
|
33
34
|
query?: MongoDbDocument
|
|
34
35
|
filter?: MongoDbDocument
|
|
35
36
|
update?: MongoDbDocument | MongoDbDocument[]
|
|
@@ -38,6 +39,7 @@ export type MongoDbServiceArgument = {
|
|
|
38
39
|
returnNewDocument?: boolean
|
|
39
40
|
document?: MongoDbDocument
|
|
40
41
|
documents?: MongoDbDocument[]
|
|
42
|
+
operations?: MongoDbDocument[]
|
|
41
43
|
pipeline?: MongoDbDocument[]
|
|
42
44
|
replacement?: MongoDbDocument
|
|
43
45
|
}
|
|
@@ -74,6 +76,11 @@ export type WatchAsyncIterator<TChange = unknown> = AsyncIterableIterator<TChang
|
|
|
74
76
|
export interface CollectionLike {
|
|
75
77
|
find: (query?: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>
|
|
76
78
|
findOne: (query?: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>
|
|
79
|
+
distinct: (
|
|
80
|
+
key: string,
|
|
81
|
+
filter?: Record<string, unknown>,
|
|
82
|
+
options?: Record<string, unknown>
|
|
83
|
+
) => Promise<unknown[]>
|
|
77
84
|
findOneAndUpdate: (
|
|
78
85
|
filter: Record<string, unknown>,
|
|
79
86
|
update: Record<string, unknown>,
|
|
@@ -89,6 +96,7 @@ export interface CollectionLike {
|
|
|
89
96
|
count: (filter?: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>
|
|
90
97
|
insertOne: (document: Record<string, unknown>, options?: Record<string, unknown>) => Promise<unknown>
|
|
91
98
|
insertMany: (documents: Record<string, unknown>[], options?: Record<string, unknown>) => Promise<unknown>
|
|
99
|
+
bulkWrite: (operations: Record<string, unknown>[], options?: Record<string, unknown>) => Promise<unknown>
|
|
92
100
|
updateOne: (
|
|
93
101
|
filter: Record<string, unknown>,
|
|
94
102
|
update: Record<string, unknown>,
|