assai 1.1.1 → 2.1.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 +23 -22
- package/dist/src/factories/create_mongo_collection.d.mts +60 -18
- package/dist/src/types.d.ts +1 -1
- package/dist/src/usecases/mongo/operation/aggregate.d.mts +16 -0
- package/dist/src/usecases/mongo/operation/bulk_write.d.mts +15 -0
- package/dist/src/usecases/mongo/operation/find.d.mts +3 -1
- package/dist/src/usecases/mongo/operation/find_one.d.mts +4 -1
- package/dist/src/usecases/mongo/operation/find_one_and_delete.d.mts +16 -0
- package/dist/src/usecases/mongo/operation/find_one_and_replace.d.mts +18 -0
- package/dist/src/usecases/mongo/operation/find_one_and_update.d.mts +18 -0
- package/dist/src/usecases/mongo/operation/index.d.mts +5 -0
- package/dist/src/usecases/mongo/operation/insert_many.d.mts +3 -1
- package/dist/src/usecases/mongo/operation/insert_one.d.mts +3 -1
- package/dist/src/usecases/mongo/operation/update_many.d.mts +3 -1
- package/dist/src/usecases/mongo/operation/update_one.d.mts +4 -1
- package/dist/src/usecases/mongo/transformers/id/rename_find_options.d.mts +3 -4
- package/dist/src/usecases/mongo/transformers/input_transformer.d.mts +10 -0
- package/dist/src/usecases/mongo/transformers/output_transformer.d.mts +10 -0
- package/dist/src/usecases/mongo/transformers/timestamps.d.mts +6 -0
- package/jsconfig.json +16 -19
- package/package.json +5 -4
- package/src/factories/create_mongo_collection.mjs +75 -68
- package/src/types.ts +1 -15
- package/src/usecases/mongo/operation/aggregate.mjs +26 -0
- package/src/usecases/mongo/operation/bulk_write.mjs +54 -0
- package/src/usecases/mongo/operation/find.mjs +7 -6
- package/src/usecases/mongo/operation/find_one.mjs +9 -2
- package/src/usecases/mongo/operation/find_one_and_delete.mjs +23 -0
- package/src/usecases/mongo/operation/find_one_and_replace.mjs +24 -0
- package/src/usecases/mongo/operation/find_one_and_update.mjs +40 -0
- package/src/usecases/mongo/operation/index.mjs +5 -0
- package/src/usecases/mongo/operation/insert_many.mjs +7 -4
- package/src/usecases/mongo/operation/insert_one.mjs +10 -4
- package/src/usecases/mongo/operation/update_many.mjs +22 -1
- package/src/usecases/mongo/operation/update_one.mjs +23 -1
- package/src/usecases/mongo/transformers/input_transformer.mjs +33 -0
- package/src/usecases/mongo/transformers/output_transformer.mjs +19 -0
- package/src/usecases/mongo/transformers/timestamps.mjs +28 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { renameToMongoId } from './id/rename_to_mongo_id.mjs'
|
|
2
|
+
import { stringsIntoId } from './object_id/strings_into_id.mjs'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @template {import('../../../types.js').MongoDocument} T
|
|
6
|
+
* @param {object} params
|
|
7
|
+
* @param {import('../../../types.js').Optional<T, 'id'>} params.document
|
|
8
|
+
* @param {import('../../../factories/create_mongo_collection.mjs').IcreateCollectionOptions<T>} [params.collectionOptions]
|
|
9
|
+
*/
|
|
10
|
+
export function inputTransformer({
|
|
11
|
+
document, collectionOptions,
|
|
12
|
+
}) {
|
|
13
|
+
document = renameToMongoId(document)
|
|
14
|
+
stringsIntoId(document)
|
|
15
|
+
|
|
16
|
+
const { timestamps } = collectionOptions ?? {}
|
|
17
|
+
const { createdAt, updatedAt } = timestamps ?? {
|
|
18
|
+
createdAt: 'generate',
|
|
19
|
+
updatedAt: 'generate',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (document.createdAt == null && createdAt === 'generate') {
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
document.createdAt = new Date()
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (document.updatedAt == null && updatedAt === 'generate') {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
document.updatedAt = new Date()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return document
|
|
33
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { renameToDevId } from './id/rename_to_dev_id.mjs'
|
|
2
|
+
import { idsIntoString } from './object_id/ids_into_strings.mjs'
|
|
3
|
+
import { timestampTransformer } from './timestamps.mjs'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @template {import('../../../types.js').MongoDocument} T
|
|
7
|
+
* @param {object} p
|
|
8
|
+
* @param {import('mongodb').WithId<T> | T} p.document
|
|
9
|
+
* @param {import('../../../factories/create_mongo_collection.mjs').IcreateCollectionOptions<T>} [p.collectionOptions]
|
|
10
|
+
*/
|
|
11
|
+
export function outputTransformer({
|
|
12
|
+
document, collectionOptions,
|
|
13
|
+
}) {
|
|
14
|
+
if (collectionOptions) timestampTransformer(document, collectionOptions)
|
|
15
|
+
idsIntoString(document)
|
|
16
|
+
const transformedDoc = renameToDevId(document)
|
|
17
|
+
|
|
18
|
+
return transformedDoc
|
|
19
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ObjectId } from 'mongodb'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @template {import('../../../types.js').MongoDocument} T
|
|
5
|
+
* @param {import('mongodb').WithId<T> | import('../../../types.js').MongoDocument} doc
|
|
6
|
+
* @param {import('../../../factories/create_mongo_collection.mjs').IcreateCollectionOptions<T>} options
|
|
7
|
+
*/
|
|
8
|
+
export function timestampTransformer(doc, options) {
|
|
9
|
+
const { timestamps } = options
|
|
10
|
+
const { createdAt, updatedAt } = timestamps ?? {
|
|
11
|
+
createdAt: 'generate',
|
|
12
|
+
updatedAt: 'generate',
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (doc.createdAt == null) {
|
|
16
|
+
if (createdAt == 'fromId') {
|
|
17
|
+
const _id = doc._id
|
|
18
|
+
if (_id instanceof ObjectId) {
|
|
19
|
+
doc.createdAt = _id.getTimestamp()
|
|
20
|
+
}
|
|
21
|
+
} else if (createdAt == 'generate') {
|
|
22
|
+
doc.createdAt = new Date()
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (doc.updatedAt == null && updatedAt == 'generate') {
|
|
26
|
+
doc.updatedAt = new Date()
|
|
27
|
+
}
|
|
28
|
+
}
|