@warlock.js/cascade 1.0.3 → 1.0.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/cjs/commands/create-new-app/get-app-path.d.ts +2 -0
- package/cjs/commands/create-new-app/get-app-path.d.ts.map +1 -0
- package/cjs/commands/create-new-app/get-app-path.js +8 -0
- package/cjs/commands/create-new-app/get-app-path.js.map +1 -0
- package/cjs/commands/create-new-app/index.d.ts +2 -0
- package/cjs/commands/create-new-app/index.d.ts.map +1 -0
- package/cjs/commands/create-new-app/index.js +44 -0
- package/cjs/commands/create-new-app/index.js.map +1 -0
- package/cjs/commands/create-new-app/select-app-type.d.ts +2 -0
- package/cjs/commands/create-new-app/select-app-type.d.ts.map +1 -0
- package/cjs/commands/create-new-app/types.d.ts +9 -0
- package/cjs/commands/create-new-app/types.d.ts.map +1 -0
- package/cjs/commands/create-warlock-app/index.d.ts +3 -0
- package/cjs/commands/create-warlock-app/index.d.ts.map +1 -0
- package/cjs/commands/create-warlock-app/index.js +18 -0
- package/cjs/commands/create-warlock-app/index.js.map +1 -0
- package/cjs/helpers/app.d.ts +51 -0
- package/cjs/helpers/app.d.ts.map +1 -0
- package/cjs/helpers/app.js +127 -0
- package/cjs/helpers/app.js.map +1 -0
- package/cjs/helpers/exec.d.ts +10 -0
- package/cjs/helpers/exec.d.ts.map +1 -0
- package/cjs/helpers/exec.js +69 -0
- package/cjs/helpers/exec.js.map +1 -0
- package/cjs/helpers/package-manager.d.ts +6 -0
- package/cjs/helpers/package-manager.d.ts.map +1 -0
- package/cjs/helpers/package-manager.js +22 -0
- package/cjs/helpers/package-manager.js.map +1 -0
- package/cjs/helpers/paths.d.ts +4 -0
- package/cjs/helpers/paths.d.ts.map +1 -0
- package/cjs/helpers/paths.js +8 -0
- package/cjs/helpers/paths.js.map +1 -0
- package/cjs/helpers/project-builder-helpers.d.ts +7 -0
- package/cjs/helpers/project-builder-helpers.d.ts.map +1 -0
- package/cjs/helpers/project-builder-helpers.js +44 -0
- package/cjs/helpers/project-builder-helpers.js.map +1 -0
- package/cjs/index.d.ts +1 -12
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +5 -1
- package/cjs/index.js.map +1 -1
- package/esm/blueprint/blueprint.d.ts +2 -2
- package/esm/blueprint/blueprint.d.ts.map +1 -1
- package/esm/blueprint/blueprint.js +2 -0
- package/esm/blueprint/blueprint.js.map +1 -1
- package/esm/index.d.ts +0 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/migration/migrate.d.ts.map +1 -1
- package/esm/migration/migrate.js +2 -6
- package/esm/migration/migrate.js.map +1 -1
- package/esm/migration/migration-office.d.ts +3 -3
- package/esm/migration/migration-office.d.ts.map +1 -1
- package/esm/migration/migration-office.js +15 -1
- package/esm/migration/migration-office.js.map +1 -1
- package/esm/migration/types.d.ts +10 -0
- package/esm/migration/types.d.ts.map +1 -1
- package/esm/model/ModelAggregate.js +1 -1
- package/esm/model/ModelAggregate.js.map +1 -1
- package/esm/model/base-model.d.ts +2 -2
- package/esm/model/base-model.d.ts.map +1 -1
- package/esm/model/base-model.js +14 -4
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/model.d.ts +13 -2
- package/esm/model/model.d.ts.map +1 -1
- package/esm/model/model.js +41 -3
- package/esm/model/model.js.map +1 -1
- package/esm/types.d.ts +30 -0
- package/esm/types.d.ts.map +1 -1
- package/esm/utils/deep-diff.d.ts +9 -0
- package/esm/utils/deep-diff.d.ts.map +1 -0
- package/esm/utils/deep-diff.js +42 -0
- package/esm/utils/deep-diff.js.map +1 -0
- package/package.json +2 -1
- package/cjs/aggregate/DeselectPipeline.d.ts +0 -10
- package/cjs/aggregate/DeselectPipeline.d.ts.map +0 -1
- package/cjs/aggregate/DeselectPipeline.js +0 -17
- package/cjs/aggregate/DeselectPipeline.js.map +0 -1
- package/cjs/aggregate/GeoNearPipeline.d.ts +0 -34
- package/cjs/aggregate/GeoNearPipeline.d.ts.map +0 -1
- package/cjs/aggregate/GeoNearPipeline.js +0 -44
- package/cjs/aggregate/GeoNearPipeline.js.map +0 -1
- package/cjs/aggregate/GroupByPipeline.d.ts +0 -12
- package/cjs/aggregate/GroupByPipeline.d.ts.map +0 -1
- package/cjs/aggregate/GroupByPipeline.js +0 -28
- package/cjs/aggregate/GroupByPipeline.js.map +0 -1
- package/cjs/aggregate/LimitPipeline.d.ts +0 -10
- package/cjs/aggregate/LimitPipeline.d.ts.map +0 -1
- package/cjs/aggregate/LimitPipeline.js +0 -14
- package/cjs/aggregate/LimitPipeline.js.map +0 -1
- package/cjs/aggregate/LookupPipeline.d.ts +0 -19
- package/cjs/aggregate/LookupPipeline.d.ts.map +0 -1
- package/cjs/aggregate/LookupPipeline.js +0 -19
- package/cjs/aggregate/LookupPipeline.js.map +0 -1
- package/cjs/aggregate/OrWherePipeline.d.ts +0 -23
- package/cjs/aggregate/OrWherePipeline.d.ts.map +0 -1
- package/cjs/aggregate/OrWherePipeline.js +0 -42
- package/cjs/aggregate/OrWherePipeline.js.map +0 -1
- package/cjs/aggregate/SelectPipeline.d.ts +0 -10
- package/cjs/aggregate/SelectPipeline.d.ts.map +0 -1
- package/cjs/aggregate/SelectPipeline.js +0 -26
- package/cjs/aggregate/SelectPipeline.js.map +0 -1
- package/cjs/aggregate/SkipPipeline.d.ts +0 -10
- package/cjs/aggregate/SkipPipeline.d.ts.map +0 -1
- package/cjs/aggregate/SkipPipeline.js +0 -14
- package/cjs/aggregate/SkipPipeline.js.map +0 -1
- package/cjs/aggregate/SortByPipeline.d.ts +0 -10
- package/cjs/aggregate/SortByPipeline.d.ts.map +0 -1
- package/cjs/aggregate/SortByPipeline.js +0 -18
- package/cjs/aggregate/SortByPipeline.js.map +0 -1
- package/cjs/aggregate/SortPipeline.d.ts +0 -11
- package/cjs/aggregate/SortPipeline.d.ts.map +0 -1
- package/cjs/aggregate/SortPipeline.js +0 -18
- package/cjs/aggregate/SortPipeline.js.map +0 -1
- package/cjs/aggregate/SortRandomPipeline.d.ts +0 -10
- package/cjs/aggregate/SortRandomPipeline.d.ts.map +0 -1
- package/cjs/aggregate/SortRandomPipeline.js +0 -16
- package/cjs/aggregate/SortRandomPipeline.js.map +0 -1
- package/cjs/aggregate/UnwindPipeline.d.ts +0 -14
- package/cjs/aggregate/UnwindPipeline.d.ts.map +0 -1
- package/cjs/aggregate/UnwindPipeline.js +0 -19
- package/cjs/aggregate/UnwindPipeline.js.map +0 -1
- package/cjs/aggregate/WhereExpression.d.ts +0 -17
- package/cjs/aggregate/WhereExpression.d.ts.map +0 -1
- package/cjs/aggregate/WhereExpression.js +0 -149
- package/cjs/aggregate/WhereExpression.js.map +0 -1
- package/cjs/aggregate/WhereExpressionPipeline.d.ts +0 -10
- package/cjs/aggregate/WhereExpressionPipeline.d.ts.map +0 -1
- package/cjs/aggregate/WhereExpressionPipeline.js +0 -15
- package/cjs/aggregate/WhereExpressionPipeline.js.map +0 -1
- package/cjs/aggregate/WherePipeline.d.ts +0 -13
- package/cjs/aggregate/WherePipeline.d.ts.map +0 -1
- package/cjs/aggregate/WherePipeline.js +0 -12
- package/cjs/aggregate/WherePipeline.js.map +0 -1
- package/cjs/aggregate/aggregate.d.ts +0 -358
- package/cjs/aggregate/aggregate.d.ts.map +0 -1
- package/cjs/aggregate/aggregate.js +0 -680
- package/cjs/aggregate/aggregate.js.map +0 -1
- package/cjs/aggregate/expressions.d.ts +0 -361
- package/cjs/aggregate/expressions.d.ts.map +0 -1
- package/cjs/aggregate/expressions.js +0 -536
- package/cjs/aggregate/expressions.js.map +0 -1
- package/cjs/aggregate/index.d.ts +0 -21
- package/cjs/aggregate/index.d.ts.map +0 -1
- package/cjs/aggregate/parsePipelines.d.ts +0 -5
- package/cjs/aggregate/parsePipelines.d.ts.map +0 -1
- package/cjs/aggregate/parsePipelines.js +0 -6
- package/cjs/aggregate/parsePipelines.js.map +0 -1
- package/cjs/aggregate/pipeline.d.ts +0 -31
- package/cjs/aggregate/pipeline.d.ts.map +0 -1
- package/cjs/aggregate/pipeline.js +0 -42
- package/cjs/aggregate/pipeline.js.map +0 -1
- package/cjs/aggregate/types.d.ts +0 -8
- package/cjs/aggregate/types.d.ts.map +0 -1
- package/cjs/aggregate/types.js +0 -31
- package/cjs/aggregate/types.js.map +0 -1
- package/cjs/blueprint/blueprint-column.d.ts +0 -82
- package/cjs/blueprint/blueprint-column.d.ts.map +0 -1
- package/cjs/blueprint/blueprint.d.ts +0 -162
- package/cjs/blueprint/blueprint.d.ts.map +0 -1
- package/cjs/blueprint/blueprint.js +0 -338
- package/cjs/blueprint/blueprint.js.map +0 -1
- package/cjs/blueprint/index.d.ts +0 -3
- package/cjs/blueprint/index.d.ts.map +0 -1
- package/cjs/blueprint/model-blueprint.d.ts +0 -15
- package/cjs/blueprint/model-blueprint.d.ts.map +0 -1
- package/cjs/blueprint/model-blueprint.js +0 -16
- package/cjs/blueprint/model-blueprint.js.map +0 -1
- package/cjs/casts/arrayOf.d.ts +0 -5
- package/cjs/casts/arrayOf.d.ts.map +0 -1
- package/cjs/casts/arrayOf.js +0 -18
- package/cjs/casts/arrayOf.js.map +0 -1
- package/cjs/casts/cast-email.d.ts +0 -2
- package/cjs/casts/cast-email.d.ts.map +0 -1
- package/cjs/casts/cast-email.js +0 -5
- package/cjs/casts/cast-email.js.map +0 -1
- package/cjs/casts/castModel.d.ts +0 -3
- package/cjs/casts/castModel.d.ts.map +0 -1
- package/cjs/casts/castModel.js +0 -49
- package/cjs/casts/castModel.js.map +0 -1
- package/cjs/casts/expiresAfter.d.ts +0 -3
- package/cjs/casts/expiresAfter.d.ts.map +0 -1
- package/cjs/casts/expiresAfter.js +0 -5
- package/cjs/casts/expiresAfter.js.map +0 -1
- package/cjs/casts/index.d.ts +0 -9
- package/cjs/casts/index.d.ts.map +0 -1
- package/cjs/casts/oneOf.d.ts +0 -3
- package/cjs/casts/oneOf.d.ts.map +0 -1
- package/cjs/casts/oneOf.js +0 -22
- package/cjs/casts/oneOf.js.map +0 -1
- package/cjs/casts/random-string.d.ts +0 -2
- package/cjs/casts/random-string.d.ts.map +0 -1
- package/cjs/casts/random-string.js +0 -5
- package/cjs/casts/random-string.js.map +0 -1
- package/cjs/casts/randomInteger.d.ts +0 -2
- package/cjs/casts/randomInteger.d.ts.map +0 -1
- package/cjs/casts/randomInteger.js +0 -7
- package/cjs/casts/randomInteger.js.map +0 -1
- package/cjs/casts/shapedArray.d.ts +0 -26
- package/cjs/casts/shapedArray.d.ts.map +0 -1
- package/cjs/casts/shapedArray.js +0 -100
- package/cjs/casts/shapedArray.js.map +0 -1
- package/cjs/config.d.ts +0 -4
- package/cjs/config.d.ts.map +0 -1
- package/cjs/config.js +0 -10
- package/cjs/config.js.map +0 -1
- package/cjs/connection.d.ts +0 -45
- package/cjs/connection.d.ts.map +0 -1
- package/cjs/connection.js +0 -98
- package/cjs/connection.js.map +0 -1
- package/cjs/console/db-indexes-command.d.ts +0 -3
- package/cjs/console/db-indexes-command.d.ts.map +0 -1
- package/cjs/console/db-indexes-command.js +0 -18
- package/cjs/console/db-indexes-command.js.map +0 -1
- package/cjs/console/index.d.ts +0 -4
- package/cjs/console/index.d.ts.map +0 -1
- package/cjs/console/migrate-command.d.ts +0 -2
- package/cjs/console/migrate-command.d.ts.map +0 -1
- package/cjs/console/migrate-command.js +0 -13
- package/cjs/console/migrate-command.js.map +0 -1
- package/cjs/console/register-blueprint-command.d.ts +0 -2
- package/cjs/console/register-blueprint-command.d.ts.map +0 -1
- package/cjs/console/register-blueprint-command.js +0 -19
- package/cjs/console/register-blueprint-command.js.map +0 -1
- package/cjs/database.d.ts +0 -49
- package/cjs/database.d.ts.map +0 -1
- package/cjs/database.js +0 -85
- package/cjs/database.js.map +0 -1
- package/cjs/migration/index.d.ts +0 -4
- package/cjs/migration/index.d.ts.map +0 -1
- package/cjs/migration/migrate.d.ts +0 -13
- package/cjs/migration/migrate.d.ts.map +0 -1
- package/cjs/migration/migrate.js +0 -76
- package/cjs/migration/migrate.js.map +0 -1
- package/cjs/migration/migration-office.d.ts +0 -21
- package/cjs/migration/migration-office.d.ts.map +0 -1
- package/cjs/migration/migration-office.js +0 -26
- package/cjs/migration/migration-office.js.map +0 -1
- package/cjs/migration/migration-officer.d.ts +0 -33
- package/cjs/migration/migration-officer.d.ts.map +0 -1
- package/cjs/migration/migration-officer.js +0 -55
- package/cjs/migration/migration-officer.js.map +0 -1
- package/cjs/migration/types.d.ts +0 -24
- package/cjs/migration/types.d.ts.map +0 -1
- package/cjs/model/ModelAggregate.d.ts +0 -84
- package/cjs/model/ModelAggregate.d.ts.map +0 -1
- package/cjs/model/ModelAggregate.js +0 -164
- package/cjs/model/ModelAggregate.js.map +0 -1
- package/cjs/model/ModelSync.d.ts +0 -74
- package/cjs/model/ModelSync.d.ts.map +0 -1
- package/cjs/model/ModelSync.js +0 -215
- package/cjs/model/ModelSync.js.map +0 -1
- package/cjs/model/RelationshipWithMany.d.ts +0 -24
- package/cjs/model/RelationshipWithMany.d.ts.map +0 -1
- package/cjs/model/RelationshipWithMany.js +0 -42
- package/cjs/model/RelationshipWithMany.js.map +0 -1
- package/cjs/model/base-model.d.ts +0 -155
- package/cjs/model/base-model.d.ts.map +0 -1
- package/cjs/model/base-model.js +0 -220
- package/cjs/model/base-model.js.map +0 -1
- package/cjs/model/crud-model.d.ts +0 -117
- package/cjs/model/crud-model.d.ts.map +0 -1
- package/cjs/model/crud-model.js +0 -352
- package/cjs/model/crud-model.js.map +0 -1
- package/cjs/model/index.d.ts +0 -10
- package/cjs/model/index.d.ts.map +0 -1
- package/cjs/model/joinable.d.ts +0 -87
- package/cjs/model/joinable.d.ts.map +0 -1
- package/cjs/model/joinable.js +0 -155
- package/cjs/model/joinable.js.map +0 -1
- package/cjs/model/master-mind.d.ts +0 -44
- package/cjs/model/master-mind.d.ts.map +0 -1
- package/cjs/model/master-mind.js +0 -129
- package/cjs/model/master-mind.js.map +0 -1
- package/cjs/model/model-events.d.ts +0 -57
- package/cjs/model/model-events.d.ts.map +0 -1
- package/cjs/model/model-events.js +0 -102
- package/cjs/model/model-events.js.map +0 -1
- package/cjs/model/model.d.ts +0 -390
- package/cjs/model/model.d.ts.map +0 -1
- package/cjs/model/model.js +0 -990
- package/cjs/model/model.js.map +0 -1
- package/cjs/model/relationships.d.ts +0 -69
- package/cjs/model/relationships.d.ts.map +0 -1
- package/cjs/model/relationships.js +0 -144
- package/cjs/model/relationships.js.map +0 -1
- package/cjs/model/types.d.ts +0 -113
- package/cjs/model/types.d.ts.map +0 -1
- package/cjs/model/types.js +0 -11
- package/cjs/model/types.js.map +0 -1
- package/cjs/query/index.d.ts +0 -2
- package/cjs/query/index.d.ts.map +0 -1
- package/cjs/query/query.d.ts +0 -228
- package/cjs/query/query.d.ts.map +0 -1
- package/cjs/query/query.js +0 -675
- package/cjs/query/query.js.map +0 -1
- package/cjs/query/types.d.ts +0 -56
- package/cjs/query/types.d.ts.map +0 -1
- package/cjs/types.d.ts +0 -32
- package/cjs/types.d.ts.map +0 -1
- package/cjs/utils/connectToDatabase.d.ts +0 -3
- package/cjs/utils/connectToDatabase.d.ts.map +0 -1
- package/cjs/utils/connectToDatabase.js +0 -3
- package/cjs/utils/connectToDatabase.js.map +0 -1
- package/cjs/utils/dropAllDatabaseIndexes.d.ts +0 -2
- package/cjs/utils/dropAllDatabaseIndexes.d.ts.map +0 -1
- package/cjs/utils/dropAllDatabaseIndexes.js +0 -10
- package/cjs/utils/dropAllDatabaseIndexes.js.map +0 -1
- package/cjs/utils/index.d.ts +0 -5
- package/cjs/utils/index.d.ts.map +0 -1
- package/cjs/utils/joinable-proxy.d.ts +0 -3
- package/cjs/utils/joinable-proxy.d.ts.map +0 -1
- package/cjs/utils/joinable-proxy.js +0 -14
- package/cjs/utils/joinable-proxy.js.map +0 -1
- package/cjs/utils/listDatabaseIndexes.d.ts +0 -4
- package/cjs/utils/listDatabaseIndexes.d.ts.map +0 -1
- package/cjs/utils/listDatabaseIndexes.js +0 -101
- package/cjs/utils/listDatabaseIndexes.js.map +0 -1
- package/cjs/utils/onceConnected.d.ts +0 -2
- package/cjs/utils/onceConnected.d.ts.map +0 -1
- package/cjs/utils/onceConnected.js +0 -8
- package/cjs/utils/onceConnected.js.map +0 -1
- package/esm/console/db-indexes-command.d.ts +0 -3
- package/esm/console/db-indexes-command.d.ts.map +0 -1
- package/esm/console/db-indexes-command.js +0 -18
- package/esm/console/db-indexes-command.js.map +0 -1
- package/esm/console/index.d.ts +0 -4
- package/esm/console/index.d.ts.map +0 -1
- package/esm/console/migrate-command.d.ts +0 -2
- package/esm/console/migrate-command.d.ts.map +0 -1
- package/esm/console/migrate-command.js +0 -13
- package/esm/console/migrate-command.js.map +0 -1
- package/esm/console/register-blueprint-command.d.ts +0 -2
- package/esm/console/register-blueprint-command.d.ts.map +0 -1
- package/esm/console/register-blueprint-command.js +0 -19
- package/esm/console/register-blueprint-command.js.map +0 -1
- package/esm/model/relationships.d.ts +0 -69
- package/esm/model/relationships.d.ts.map +0 -1
- package/esm/model/relationships.js +0 -144
- package/esm/model/relationships.js.map +0 -1
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
'use strict';var reinforcements=require('@mongez/reinforcements'),expressions=require('../aggregate/expressions.js');require('@mongez/supportive-is'),require('@mongez/time-wizard');var SelectPipeline=require('../aggregate/SelectPipeline.js'),aggregate=require('../aggregate/aggregate.js'),joinableProxy=require('../utils/joinable-proxy.js');class ModelAggregate extends aggregate.Aggregate {
|
|
2
|
-
model;
|
|
3
|
-
/**
|
|
4
|
-
* Joining list
|
|
5
|
-
* Each key will have the model as a value reference to it
|
|
6
|
-
*/
|
|
7
|
-
joiningList = {};
|
|
8
|
-
/**
|
|
9
|
-
* Constructor
|
|
10
|
-
*/
|
|
11
|
-
constructor(model) {
|
|
12
|
-
super(model.collection);
|
|
13
|
-
this.model = model;
|
|
14
|
-
this.query = model.query;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* {@inheritDoc}
|
|
18
|
-
*/
|
|
19
|
-
async get(mapData) {
|
|
20
|
-
if (!mapData) {
|
|
21
|
-
mapData = (record) => {
|
|
22
|
-
const model = new this.model(record);
|
|
23
|
-
for (const relation in this.joiningList) {
|
|
24
|
-
const data = model.get(relation);
|
|
25
|
-
if (!data)
|
|
26
|
-
continue;
|
|
27
|
-
model.set(relation, this.joiningList[relation](data));
|
|
28
|
-
}
|
|
29
|
-
return model;
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
return (await super.get(mapData));
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Find or create
|
|
36
|
-
*/
|
|
37
|
-
async findOrCreate(data) {
|
|
38
|
-
return (await this.first()) || (await this.model.create(data));
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Find and update the given data
|
|
42
|
-
* Please note that the filter should be done via where() methods
|
|
43
|
-
* This method returns the updated records
|
|
44
|
-
* If you need just to update the records directly in the database, then use `update` method directly.
|
|
45
|
-
*/
|
|
46
|
-
async findAndUpdate(data) {
|
|
47
|
-
const records = await this.get();
|
|
48
|
-
await Promise.all(records.map(async (model) => await model.save(data)));
|
|
49
|
-
return records;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* {@inheritdoc}
|
|
53
|
-
*/
|
|
54
|
-
async chunk(limit, callback, mapData) {
|
|
55
|
-
return super.chunk(limit, callback, mapData);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* {@inheritDoc}
|
|
59
|
-
*/
|
|
60
|
-
async first(mapData) {
|
|
61
|
-
return (await super.first(mapData));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* {@inheritDoc}
|
|
65
|
-
*/
|
|
66
|
-
async last(filters) {
|
|
67
|
-
return (await super.last(filters));
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* {@inheritDoc}
|
|
71
|
-
*/
|
|
72
|
-
async paginate(page = 1, limit = this.model.perPage) {
|
|
73
|
-
return await super.paginate(page, limit);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Delete records
|
|
77
|
-
*/
|
|
78
|
-
async delete() {
|
|
79
|
-
const records = await this.get();
|
|
80
|
-
records.forEach(async (model) => {
|
|
81
|
-
await model.destroy();
|
|
82
|
-
});
|
|
83
|
-
return records.length;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Perform a join
|
|
87
|
-
*/
|
|
88
|
-
joining(joining, options) {
|
|
89
|
-
joining = this.getJoinable(joining);
|
|
90
|
-
if (typeof options === "function") {
|
|
91
|
-
options(joining);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
if (options?.where) {
|
|
95
|
-
joining.where(options.where);
|
|
96
|
-
}
|
|
97
|
-
if (options?.select) {
|
|
98
|
-
joining.select(...options.select);
|
|
99
|
-
}
|
|
100
|
-
if (options?.as) {
|
|
101
|
-
joining.as(options.as);
|
|
102
|
-
}
|
|
103
|
-
if (options?.pipeline) {
|
|
104
|
-
joining.addPipelines(options.pipeline);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const data = joining.parse();
|
|
108
|
-
this.joiningList[data.as] = joining.getReturnAs();
|
|
109
|
-
return this.lookup(data);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Get joinable instance for current model
|
|
113
|
-
*/
|
|
114
|
-
getJoinable(joinable) {
|
|
115
|
-
if (typeof joinable === "string") {
|
|
116
|
-
joinable = this.model.joinings[joinable];
|
|
117
|
-
}
|
|
118
|
-
return joinableProxy.joinableProxy(joinable.clone());
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Perform a join and count the records of the joined collection
|
|
122
|
-
*/
|
|
123
|
-
countJoining(joining, options) {
|
|
124
|
-
joining = this.getJoinable(joining);
|
|
125
|
-
const as = joining.get("as");
|
|
126
|
-
const returnAs = options?.as || as + "Count";
|
|
127
|
-
return this.joining(joining, options).addField(returnAs, {
|
|
128
|
-
$size: expressions.$agg.columnName(as),
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Join the given alias
|
|
133
|
-
*/
|
|
134
|
-
with(alias, ...moreParams) {
|
|
135
|
-
const method = `with${reinforcements.toStudlyCase(alias)}`;
|
|
136
|
-
const relation = this.model[method];
|
|
137
|
-
if (!relation) {
|
|
138
|
-
throw new Error(`Relation ${alias} not found`);
|
|
139
|
-
}
|
|
140
|
-
const { model, localField, as, foreignField, single = false, select: selectColumns, pipeline = [], } = relation.call(this.model, ...moreParams);
|
|
141
|
-
if (selectColumns) {
|
|
142
|
-
pipeline.push(SelectPipeline.selectPipeline(selectColumns));
|
|
143
|
-
}
|
|
144
|
-
this.lookup({
|
|
145
|
-
as,
|
|
146
|
-
single,
|
|
147
|
-
from: model.collection,
|
|
148
|
-
// related to from field
|
|
149
|
-
foreignField: foreignField || `${as}.id`,
|
|
150
|
-
// related to current model
|
|
151
|
-
localField: localField || "id",
|
|
152
|
-
pipeline,
|
|
153
|
-
});
|
|
154
|
-
return this;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Clone the aggregate model class
|
|
158
|
-
*/
|
|
159
|
-
clone() {
|
|
160
|
-
const aggregate = new ModelAggregate(this.model);
|
|
161
|
-
aggregate.pipelines = this.pipelines.slice();
|
|
162
|
-
return aggregate;
|
|
163
|
-
}
|
|
164
|
-
}exports.ModelAggregate=ModelAggregate;//# sourceMappingURL=ModelAggregate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelAggregate.js","sources":["../../src/model/ModelAggregate.ts"],"sourcesContent":[null],"names":["Aggregate","joinableProxy","$agg","toStudlyCase","selectPipeline"],"mappings":"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"}
|
package/cjs/model/ModelSync.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { ModelAggregate } from "./ModelAggregate";
|
|
2
|
-
import type { Model } from "./model";
|
|
3
|
-
type OnDelete = "unset" | "remove" | "ignore";
|
|
4
|
-
export declare class ModelSync {
|
|
5
|
-
protected model: typeof Model;
|
|
6
|
-
protected columns: string | string[];
|
|
7
|
-
protected embedMethod: string;
|
|
8
|
-
/**
|
|
9
|
-
* What do do when model is deleted
|
|
10
|
-
*/
|
|
11
|
-
protected whenDelete: OnDelete;
|
|
12
|
-
/**
|
|
13
|
-
* Embed on create
|
|
14
|
-
*/
|
|
15
|
-
protected embedOnCreate: string;
|
|
16
|
-
/**
|
|
17
|
-
* Sync mode
|
|
18
|
-
*/
|
|
19
|
-
protected syncMode: "single" | "many";
|
|
20
|
-
/**
|
|
21
|
-
* Query runner using `when` method
|
|
22
|
-
*/
|
|
23
|
-
protected queryRunner?: (query: ModelAggregate<Model>) => void;
|
|
24
|
-
/**
|
|
25
|
-
* Define when should the synced model starts to update when any of the given columns is updated in the original model
|
|
26
|
-
*/
|
|
27
|
-
protected _updateWhenChange?: string[];
|
|
28
|
-
/**
|
|
29
|
-
* Constructor
|
|
30
|
-
*/
|
|
31
|
-
constructor(model: typeof Model, columns: string | string[], embedMethod?: string);
|
|
32
|
-
/**
|
|
33
|
-
* Define when should the synced model starts to update when any of the given columns is updated in the original model
|
|
34
|
-
*/
|
|
35
|
-
updateWhenChange(columns: string | string[]): this;
|
|
36
|
-
/**
|
|
37
|
-
* Set query runner
|
|
38
|
-
*/
|
|
39
|
-
where(queryRunner: (query: ModelAggregate<Model>) => void): this;
|
|
40
|
-
/**
|
|
41
|
-
* Unset on delete
|
|
42
|
-
*/
|
|
43
|
-
unsetOnDelete(): this;
|
|
44
|
-
/**
|
|
45
|
-
* Ignore on delete
|
|
46
|
-
*/
|
|
47
|
-
ignoreOnDelete(): this;
|
|
48
|
-
/**
|
|
49
|
-
* Remove all matched documents on delete to be fully deleted
|
|
50
|
-
*/
|
|
51
|
-
removeOnDelete(): this;
|
|
52
|
-
/**
|
|
53
|
-
* Embed on create to injected model one the original model is created
|
|
54
|
-
*/
|
|
55
|
-
embedOnCreateFrom(column: string): this;
|
|
56
|
-
/**
|
|
57
|
-
* Mark as many sync
|
|
58
|
-
*/
|
|
59
|
-
syncMany(): this;
|
|
60
|
-
/**
|
|
61
|
-
* Start syncing the model
|
|
62
|
-
*/
|
|
63
|
-
sync(model: Model, saveMode: "create" | "update", oldModel?: Model): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Sync update
|
|
66
|
-
*/
|
|
67
|
-
syncUpdate(model: Model, oldModel?: Model): Promise<void>;
|
|
68
|
-
/**
|
|
69
|
-
* Sync model destruction
|
|
70
|
-
*/
|
|
71
|
-
syncDestruction(model: Model): Promise<void>;
|
|
72
|
-
}
|
|
73
|
-
export {};
|
|
74
|
-
//# sourceMappingURL=ModelSync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSync.d.ts","sourceRoot":"","sources":["../../src/model/ModelSync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C,qBAAa,SAAS;IA8BlB,SAAS,CAAC,KAAK,EAAE,OAAO,KAAK;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IACpC,SAAS,CAAC,WAAW;IA/BvB;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAW;IAEzC;;OAEG;IACH,SAAS,CAAC,aAAa,SAAM;IAE7B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAY;IAEjD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IAE/D;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvC;;OAEG;gBAES,KAAK,EAAE,OAAO,KAAK,EACnB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,WAAW,SAAc;IAKrC;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAMlD;;OAEG;IACI,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI;IAMhE;;OAEG;IACI,aAAa;IAMpB;;OAEG;IACI,cAAc;IAMrB;;OAEG;IACI,cAAc;IAMrB;;OAEG;IACI,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAMvC;;OAEG;IACI,QAAQ;IAMf;;OAEG;IACU,IAAI,CACf,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAC7B,QAAQ,CAAC,EAAE,KAAK;IAsClB;;OAEG;IACU,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK;IA8EtD;;OAEG;IACU,eAAe,CAAC,KAAK,EAAE,KAAK;CA8B1C"}
|
package/cjs/model/ModelSync.js
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
'use strict';var reinforcements=require('@mongez/reinforcements');class ModelSync {
|
|
2
|
-
model;
|
|
3
|
-
columns;
|
|
4
|
-
embedMethod;
|
|
5
|
-
/**
|
|
6
|
-
* What do do when model is deleted
|
|
7
|
-
*/
|
|
8
|
-
whenDelete = "unset";
|
|
9
|
-
/**
|
|
10
|
-
* Embed on create
|
|
11
|
-
*/
|
|
12
|
-
embedOnCreate = "";
|
|
13
|
-
/**
|
|
14
|
-
* Sync mode
|
|
15
|
-
*/
|
|
16
|
-
syncMode = "single";
|
|
17
|
-
/**
|
|
18
|
-
* Query runner using `when` method
|
|
19
|
-
*/
|
|
20
|
-
queryRunner;
|
|
21
|
-
/**
|
|
22
|
-
* Define when should the synced model starts to update when any of the given columns is updated in the original model
|
|
23
|
-
*/
|
|
24
|
-
_updateWhenChange;
|
|
25
|
-
/**
|
|
26
|
-
* Constructor
|
|
27
|
-
*/
|
|
28
|
-
constructor(model, columns, embedMethod = "embedData") {
|
|
29
|
-
this.model = model;
|
|
30
|
-
this.columns = columns;
|
|
31
|
-
this.embedMethod = embedMethod;
|
|
32
|
-
//
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Define when should the synced model starts to update when any of the given columns is updated in the original model
|
|
36
|
-
*/
|
|
37
|
-
updateWhenChange(columns) {
|
|
38
|
-
this._updateWhenChange = Array.isArray(columns) ? columns : [columns];
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Set query runner
|
|
43
|
-
*/
|
|
44
|
-
where(queryRunner) {
|
|
45
|
-
this.queryRunner = queryRunner;
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Unset on delete
|
|
50
|
-
*/
|
|
51
|
-
unsetOnDelete() {
|
|
52
|
-
this.whenDelete = "unset";
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Ignore on delete
|
|
57
|
-
*/
|
|
58
|
-
ignoreOnDelete() {
|
|
59
|
-
this.whenDelete = "ignore";
|
|
60
|
-
return this;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Remove all matched documents on delete to be fully deleted
|
|
64
|
-
*/
|
|
65
|
-
removeOnDelete() {
|
|
66
|
-
this.whenDelete = "remove";
|
|
67
|
-
return this;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Embed on create to injected model one the original model is created
|
|
71
|
-
*/
|
|
72
|
-
embedOnCreateFrom(column) {
|
|
73
|
-
this.embedOnCreate = column;
|
|
74
|
-
return this;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Mark as many sync
|
|
78
|
-
*/
|
|
79
|
-
syncMany() {
|
|
80
|
-
this.syncMode = "many";
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Start syncing the model
|
|
85
|
-
*/
|
|
86
|
-
async sync(model, saveMode, oldModel) {
|
|
87
|
-
if (saveMode === "update") {
|
|
88
|
-
return this.syncUpdate(model, oldModel);
|
|
89
|
-
}
|
|
90
|
-
if (!this.embedOnCreate)
|
|
91
|
-
return;
|
|
92
|
-
const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
|
|
93
|
-
const syncedModel = await this.model.first({
|
|
94
|
-
id: model.get(this.embedOnCreate + ".id"),
|
|
95
|
-
});
|
|
96
|
-
if (!syncedModel)
|
|
97
|
-
return;
|
|
98
|
-
try {
|
|
99
|
-
const modelData = typeof model[this.embedMethod] !== "undefined"
|
|
100
|
-
? model[this.embedMethod]
|
|
101
|
-
: model.data;
|
|
102
|
-
for (const column of columns) {
|
|
103
|
-
if (this.syncMode === "single") {
|
|
104
|
-
syncedModel.set(column, modelData);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
syncedModel.associate(column, modelData);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
await syncedModel.save();
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.log("Error in Sync", error.message);
|
|
114
|
-
console.log(model);
|
|
115
|
-
throw error;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Sync update
|
|
120
|
-
*/
|
|
121
|
-
async syncUpdate(model, oldModel) {
|
|
122
|
-
if (this._updateWhenChange && oldModel) {
|
|
123
|
-
// now check if any of the columns has changed
|
|
124
|
-
// if all of them are the same, then we don't need to update
|
|
125
|
-
if (this._updateWhenChange.every(column => reinforcements.areEqual(model.get(column), oldModel.get(column)))) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
|
|
130
|
-
const whereOptions = {};
|
|
131
|
-
for (const column of columns) {
|
|
132
|
-
whereOptions[column + ".id"] = model.id;
|
|
133
|
-
}
|
|
134
|
-
const query = this.model.aggregate().orWhere(whereOptions);
|
|
135
|
-
if (this.queryRunner) {
|
|
136
|
-
this.queryRunner(query);
|
|
137
|
-
}
|
|
138
|
-
const models = await query.get();
|
|
139
|
-
try {
|
|
140
|
-
const modelData = typeof model[this.embedMethod] !== "undefined"
|
|
141
|
-
? model[this.embedMethod]
|
|
142
|
-
: model.embeddedData;
|
|
143
|
-
for (const updatingModel of models) {
|
|
144
|
-
for (const column of columns) {
|
|
145
|
-
if (this.syncMode === "single") {
|
|
146
|
-
updatingModel.set(column, modelData);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
if (column.includes(".")) {
|
|
150
|
-
// if column includes dot, then it's a nested column
|
|
151
|
-
// so we need to get the top document key as it should be an array.
|
|
152
|
-
const [topKey, nestedKey] = column.split(".");
|
|
153
|
-
const documentsList = updatingModel.get(topKey) || [];
|
|
154
|
-
// as we're updating, so there should be at least one document
|
|
155
|
-
if (documentsList?.length === 0)
|
|
156
|
-
continue;
|
|
157
|
-
// now we need to find the document that has the same id as the model we're updating
|
|
158
|
-
const documentIndex = documentsList.findIndex((document) => document[nestedKey]?.id === model.get("id"));
|
|
159
|
-
// if document is not found, then we don't need to update
|
|
160
|
-
if (documentIndex === -1)
|
|
161
|
-
continue;
|
|
162
|
-
// now we need to update the document
|
|
163
|
-
documentsList[documentIndex][nestedKey] = modelData;
|
|
164
|
-
// and finally set the updated documents list
|
|
165
|
-
updatingModel.set(topKey, documentsList);
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
// otherwise, it is a direct column update so we can just set it
|
|
169
|
-
updatingModel.reassociate(column, modelData);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
// disable casting so we can save the data as it is
|
|
174
|
-
await updatingModel.save(undefined, {
|
|
175
|
-
cast: false,
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
console.log("Error in Sync", error.message);
|
|
181
|
-
console.log(model);
|
|
182
|
-
throw error;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Sync model destruction
|
|
187
|
-
*/
|
|
188
|
-
async syncDestruction(model) {
|
|
189
|
-
const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
|
|
190
|
-
const query = {};
|
|
191
|
-
for (const column of columns) {
|
|
192
|
-
query[column + ".id"] = model.get("id");
|
|
193
|
-
}
|
|
194
|
-
const models = await this.model
|
|
195
|
-
.aggregate()
|
|
196
|
-
.orWhere(query)
|
|
197
|
-
.get();
|
|
198
|
-
for (const currentModel of models) {
|
|
199
|
-
if (this.whenDelete === "unset") {
|
|
200
|
-
for (const column of columns) {
|
|
201
|
-
if (this.syncMode === "single") {
|
|
202
|
-
currentModel.unset(column);
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
currentModel.disassociate(column, model);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
await currentModel.save();
|
|
209
|
-
}
|
|
210
|
-
else if (this.whenDelete === "remove") {
|
|
211
|
-
await currentModel.destroy();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}exports.ModelSync=ModelSync;//# sourceMappingURL=ModelSync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSync.js","sources":["../../src/model/ModelSync.ts"],"sourcesContent":[null],"names":["areEqual"],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Model } from "./model";
|
|
2
|
-
import type { Filter } from "./types";
|
|
3
|
-
export declare class RelationshipWithMany<T> {
|
|
4
|
-
protected model: Model;
|
|
5
|
-
protected relatedModel: typeof Model;
|
|
6
|
-
protected column: string;
|
|
7
|
-
/**
|
|
8
|
-
* Constructor
|
|
9
|
-
*/
|
|
10
|
-
constructor(model: Model, relatedModel: typeof Model, column: string);
|
|
11
|
-
/**
|
|
12
|
-
* Create and add the given model to the relationship
|
|
13
|
-
*/
|
|
14
|
-
create(data: any): Promise<Model>;
|
|
15
|
-
/**
|
|
16
|
-
* Remove the given model from the relationship
|
|
17
|
-
*/
|
|
18
|
-
remove(model: Model): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Get all related models
|
|
21
|
-
*/
|
|
22
|
-
list(filter?: Filter): Promise<T[]>;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=RelationshipWithMany.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RelationshipWithMany.d.ts","sourceRoot":"","sources":["../../src/model/RelationshipWithMany.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,SAAS,CAAC;AAErD,qBAAa,oBAAoB,CAAC,CAAC;IAK/B,SAAS,CAAC,KAAK,EAAE,KAAK;IACtB,SAAS,CAAC,YAAY,EAAE,OAAO,KAAK;IACpC,SAAS,CAAC,MAAM,EAAE,MAAM;IAN1B;;OAEG;gBAES,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,KAAK,EAC1B,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,GAAG;IAM7B;;OAEG;IACU,MAAM,CAAC,KAAK,EAAE,KAAK;IAIhC;;OAEG;IACU,IAAI,CAAC,MAAM,GAAE,MAAW;CAiBtC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
'use strict';class RelationshipWithMany {
|
|
2
|
-
model;
|
|
3
|
-
relatedModel;
|
|
4
|
-
column;
|
|
5
|
-
/**
|
|
6
|
-
* Constructor
|
|
7
|
-
*/
|
|
8
|
-
constructor(model, relatedModel, column) {
|
|
9
|
-
this.model = model;
|
|
10
|
-
this.relatedModel = relatedModel;
|
|
11
|
-
this.column = column;
|
|
12
|
-
//
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Create and add the given model to the relationship
|
|
16
|
-
*/
|
|
17
|
-
async create(data) {
|
|
18
|
-
data[this.column] = this.model.id;
|
|
19
|
-
return await this.relatedModel.create(data);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Remove the given model from the relationship
|
|
23
|
-
*/
|
|
24
|
-
async remove(model) {
|
|
25
|
-
await this.model.disassociate(this.column, model).save();
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get all related models
|
|
29
|
-
*/
|
|
30
|
-
async list(filter = {}) {
|
|
31
|
-
const embeddedDocuments = this.model.get(this.column) || [];
|
|
32
|
-
const embeddedDocumentsIds = embeddedDocuments.map(
|
|
33
|
-
// because it may be an array of ids or an array of documents
|
|
34
|
-
(document) => document.id || document);
|
|
35
|
-
const documents = (await this.relatedModel.list({
|
|
36
|
-
id: embeddedDocumentsIds,
|
|
37
|
-
...filter,
|
|
38
|
-
}));
|
|
39
|
-
this.model.set(this.column, documents);
|
|
40
|
-
return documents;
|
|
41
|
-
}
|
|
42
|
-
}exports.RelationshipWithMany=RelationshipWithMany;//# sourceMappingURL=RelationshipWithMany.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RelationshipWithMany.js","sources":["../../src/model/RelationshipWithMany.ts"],"sourcesContent":[null],"names":[],"mappings":"mBAGa,oBAAoB,CAAA;AAKnB,IAAA,KAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,MAAA,CAAA;AANZ;;AAEG;AACH,IAAA,WAAA,CACY,KAAY,EACZ,YAA0B,EAC1B,MAAc,EAAA;QAFd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;;KAGzB;AAED;;AAEG;IACI,MAAM,MAAM,CAAC,IAAS,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAElC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;AAEG;IACI,MAAM,MAAM,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;KAC1D;AAED;;AAEG;AACI,IAAA,MAAM,IAAI,CAAC,MAAA,GAAiB,EAAE,EAAA;AACnC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAE5D,QAAA,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG;;QAEhD,CAAC,QAAuB,KAAK,QAAQ,CAAC,EAAE,IAAI,QAAQ,CACrD,CAAC;QAEF,MAAM,SAAS,IAAI,MAAO,IAAI,CAAC,YAAoB,CAAC,IAAI,CAAC;AACvD,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,GAAG,MAAM;AACV,SAAA,CAAC,CAAQ,CAAC;QAEX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEvC,QAAA,OAAO,SAAS,CAAC;KAClB;AACF"}
|