@warlock.js/cascade 1.0.2 → 1.0.4
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/casts/castModel.d.ts +1 -1
- package/cjs/casts/castModel.d.ts.map +1 -1
- package/cjs/casts/castModel.js +1 -1
- package/cjs/casts/castModel.js.map +1 -1
- package/cjs/index.d.ts +0 -1
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +1 -1
- package/cjs/model/RelationshipWithMany.d.ts +1 -6
- package/cjs/model/RelationshipWithMany.d.ts.map +1 -1
- package/cjs/model/RelationshipWithMany.js +1 -11
- package/cjs/model/RelationshipWithMany.js.map +1 -1
- package/cjs/model/index.d.ts +1 -2
- package/cjs/model/index.d.ts.map +1 -1
- package/cjs/model/model.d.ts +67 -5
- package/cjs/model/model.d.ts.map +1 -1
- package/cjs/model/model.js +144 -2
- package/cjs/model/model.js.map +1 -1
- package/esm/casts/castModel.d.ts +1 -1
- package/esm/casts/castModel.d.ts.map +1 -1
- package/esm/casts/castModel.js +1 -1
- package/esm/casts/castModel.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/model/RelationshipWithMany.d.ts +1 -6
- package/esm/model/RelationshipWithMany.d.ts.map +1 -1
- package/esm/model/RelationshipWithMany.js +1 -11
- package/esm/model/RelationshipWithMany.js.map +1 -1
- package/esm/model/index.d.ts +1 -2
- package/esm/model/index.d.ts.map +1 -1
- package/esm/model/model.d.ts +67 -5
- package/esm/model/model.d.ts.map +1 -1
- package/esm/model/model.js +144 -2
- package/esm/model/model.js.map +1 -1
- package/package.json +2 -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/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/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,69 +0,0 @@
|
|
|
1
|
-
import { ModelAggregate } from "./ModelAggregate";
|
|
2
|
-
import { ModelSync } from "./ModelSync";
|
|
3
|
-
import { RelationshipWithMany } from "./RelationshipWithMany";
|
|
4
|
-
import { CrudModel } from "./crud-model";
|
|
5
|
-
import { Model } from "./model";
|
|
6
|
-
import type { ChildModel, ModelDocument } from "./types";
|
|
7
|
-
export declare abstract class RelationshipModel extends CrudModel {
|
|
8
|
-
/**
|
|
9
|
-
* Sync with list
|
|
10
|
-
*/
|
|
11
|
-
syncWith: ModelSync[];
|
|
12
|
-
/**
|
|
13
|
-
* Get relationship with the given model class
|
|
14
|
-
*/
|
|
15
|
-
hasMany<T extends Model = Model>(modelClass: typeof Model, column: string): RelationshipWithMany<T>;
|
|
16
|
-
/**
|
|
17
|
-
* Get new aggregate for current model
|
|
18
|
-
*/
|
|
19
|
-
static aggregate<T extends Model = Model>(this: ChildModel<T>): ModelAggregate<T>;
|
|
20
|
-
/**
|
|
21
|
-
* Get query builder
|
|
22
|
-
* @alias aggregate
|
|
23
|
-
*/
|
|
24
|
-
static queryBuilder<T extends Model = Model>(this: ChildModel<T>): ModelAggregate<T>;
|
|
25
|
-
/**
|
|
26
|
-
* Sync with the given model
|
|
27
|
-
*/
|
|
28
|
-
static sync(columns: string | string[], embedMethod?: string): ModelSync;
|
|
29
|
-
/**
|
|
30
|
-
* Sync data on saving
|
|
31
|
-
*/
|
|
32
|
-
startSyncing(saveMode: "create" | "update", oldModel?: Model): void;
|
|
33
|
-
/**
|
|
34
|
-
* Sync destruction
|
|
35
|
-
* Called when destroy method is called
|
|
36
|
-
*/
|
|
37
|
-
syncDestruction(): void;
|
|
38
|
-
/**
|
|
39
|
-
* The syncing model (That calls startSyncing) is being embedded in multiple documents of current model
|
|
40
|
-
* I.e Country.syncMany('cities') while current model is City
|
|
41
|
-
*/
|
|
42
|
-
static syncMany(columns: string | string[], embedMethod?: string): ModelSync;
|
|
43
|
-
/**
|
|
44
|
-
* Reassociate a model/object/document with the current model
|
|
45
|
-
* If the model is already associated, it will be updated
|
|
46
|
-
* If not, it will be associated
|
|
47
|
-
* the model/document must have an id
|
|
48
|
-
*
|
|
49
|
-
* If it is a model, you can set the embed method to use
|
|
50
|
-
*/
|
|
51
|
-
reassociate(this: Model, column: string, model: Model | ModelDocument | any, embedWith?: string): Model;
|
|
52
|
-
/**
|
|
53
|
-
* Associate a model with the current model
|
|
54
|
-
*/
|
|
55
|
-
associate(this: Model, column: string, model: Model | ModelDocument | any, embedWith?: string): Model;
|
|
56
|
-
/**
|
|
57
|
-
* Disassociate a model with the current model
|
|
58
|
-
*/
|
|
59
|
-
disassociate(this: Model, column: string, model: Model | ModelDocument | any): Model;
|
|
60
|
-
/**
|
|
61
|
-
* Make a wrapper to list when models should be updated when only one of the given columns is updated
|
|
62
|
-
*/
|
|
63
|
-
syncUpdateWhenChange(columns: string | string[], syncModels: ModelSync[]): ModelSync[];
|
|
64
|
-
/**
|
|
65
|
-
* Get a Joinable instance for current model
|
|
66
|
-
*/
|
|
67
|
-
static joinable(localField?: string, foreignField?: string, single?: boolean, as?: string): import("./joinable").JoinableProxy;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=relationships.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/model/relationships.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEzD,8BAAsB,iBAAkB,SAAQ,SAAS;IACvD;;OAEG;IACI,QAAQ,EAAE,SAAS,EAAE,CAAM;IAElC;;OAEG;IACI,OAAO,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EACpC,UAAU,EAAE,OAAO,KAAK,EACxB,MAAM,EAAE,MAAM;IAKhB;;OAEG;WACW,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAIpE;;;OAGG;WACW,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAIvE;;OAEG;WACW,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,WAAW,SAAc;IAIxE;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,KAAK;IAMnE;;;OAGG;IACI,eAAe;IAMtB;;;OAGG;WACW,QAAQ,CACpB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,WAAW,SAAc;IAK3B;;;;;;;OAOG;IACI,WAAW,CAChB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG,EAClC,SAAS,CAAC,EAAE,MAAM;IA6BpB;;OAEG;IACI,SAAS,CACd,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG,EAClC,SAAS,CAAC,EAAE,MAAM;IAoBpB;;OAEG;IACI,YAAY,CACjB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG;IAuBpC;;OAEG;IACI,oBAAoB,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,UAAU,EAAE,SAAS,EAAE;IASzB;;OAEG;WACW,QAAQ,CACpB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,OAAO,EAChB,EAAE,CAAC,EAAE,MAAM;CAsBd"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
'use strict';var reinforcements=require('@mongez/reinforcements'),joinableProxy=require('../utils/joinable-proxy.js'),ModelAggregate=require('./ModelAggregate.js'),ModelSync=require('./ModelSync.js'),RelationshipWithMany=require('./RelationshipWithMany.js'),crudModel=require('./crud-model.js'),joinable=require('./joinable.js'),model=require('./model.js');class RelationshipModel extends crudModel.CrudModel {
|
|
2
|
-
/**
|
|
3
|
-
* Sync with list
|
|
4
|
-
*/
|
|
5
|
-
syncWith = [];
|
|
6
|
-
/**
|
|
7
|
-
* Get relationship with the given model class
|
|
8
|
-
*/
|
|
9
|
-
hasMany(modelClass, column) {
|
|
10
|
-
return new RelationshipWithMany.RelationshipWithMany(this, modelClass, column);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Get new aggregate for current model
|
|
14
|
-
*/
|
|
15
|
-
static aggregate() {
|
|
16
|
-
return new ModelAggregate.ModelAggregate(this);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Get query builder
|
|
20
|
-
* @alias aggregate
|
|
21
|
-
*/
|
|
22
|
-
static queryBuilder() {
|
|
23
|
-
return new ModelAggregate.ModelAggregate(this);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Sync with the given model
|
|
27
|
-
*/
|
|
28
|
-
static sync(columns, embedMethod = "embedData") {
|
|
29
|
-
return new ModelSync.ModelSync(this, columns, embedMethod);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Sync data on saving
|
|
33
|
-
*/
|
|
34
|
-
startSyncing(saveMode, oldModel) {
|
|
35
|
-
for (const modelSync of this.syncWith) {
|
|
36
|
-
modelSync.sync(this, saveMode, oldModel);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Sync destruction
|
|
41
|
-
* Called when destroy method is called
|
|
42
|
-
*/
|
|
43
|
-
syncDestruction() {
|
|
44
|
-
for (const modelSync of this.syncWith) {
|
|
45
|
-
modelSync.syncDestruction(this);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* The syncing model (That calls startSyncing) is being embedded in multiple documents of current model
|
|
50
|
-
* I.e Country.syncMany('cities') while current model is City
|
|
51
|
-
*/
|
|
52
|
-
static syncMany(columns, embedMethod = "embedData") {
|
|
53
|
-
return new ModelSync.ModelSync(this, columns, embedMethod).syncMany();
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Reassociate a model/object/document with the current model
|
|
57
|
-
* If the model is already associated, it will be updated
|
|
58
|
-
* If not, it will be associated
|
|
59
|
-
* the model/document must have an id
|
|
60
|
-
*
|
|
61
|
-
* If it is a model, you can set the embed method to use
|
|
62
|
-
*/
|
|
63
|
-
reassociate(column, model$1, embedWith) {
|
|
64
|
-
const columnValue = model$1 instanceof model.Model
|
|
65
|
-
? embedWith
|
|
66
|
-
? model$1[embedWith]()
|
|
67
|
-
: model$1.embeddedData
|
|
68
|
-
: model$1;
|
|
69
|
-
if (columnValue === undefined)
|
|
70
|
-
return this;
|
|
71
|
-
// make a deep copy so when changing the data, it won't affect the original data
|
|
72
|
-
const documentsList = reinforcements.clone(this.get(column, []));
|
|
73
|
-
const index = documentsList.findIndex((doc) => (doc?.id || doc) === (columnValue?.id || columnValue));
|
|
74
|
-
if (index === -1) {
|
|
75
|
-
documentsList.push(columnValue);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
documentsList[index] = columnValue;
|
|
79
|
-
}
|
|
80
|
-
this.set(column, [...documentsList]);
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Associate a model with the current model
|
|
85
|
-
*/
|
|
86
|
-
associate(column, model$1, embedWith) {
|
|
87
|
-
const columnValue = model$1 instanceof model.Model
|
|
88
|
-
? embedWith
|
|
89
|
-
? model$1[embedWith]()
|
|
90
|
-
: model$1.embeddedData
|
|
91
|
-
: model$1;
|
|
92
|
-
if (columnValue === undefined)
|
|
93
|
-
return this;
|
|
94
|
-
const documentsList = this.get(column, []);
|
|
95
|
-
documentsList.push(columnValue);
|
|
96
|
-
this.set(column, documentsList);
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Disassociate a model with the current model
|
|
101
|
-
*/
|
|
102
|
-
disassociate(column, model$1) {
|
|
103
|
-
const columnValue = model$1 instanceof model.Model ? model$1.embeddedData : model$1;
|
|
104
|
-
if (columnValue === undefined)
|
|
105
|
-
return this;
|
|
106
|
-
const documentsList = this.get(column, []);
|
|
107
|
-
if (!Array.isArray(documentsList))
|
|
108
|
-
return this;
|
|
109
|
-
const index = documentsList.findIndex((doc) => (doc?.id || doc) === (columnValue?.id || columnValue));
|
|
110
|
-
if (index !== -1) {
|
|
111
|
-
documentsList.splice(index, 1);
|
|
112
|
-
}
|
|
113
|
-
this.set(column, documentsList);
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Make a wrapper to list when models should be updated when only one of the given columns is updated
|
|
118
|
-
*/
|
|
119
|
-
syncUpdateWhenChange(columns, syncModels) {
|
|
120
|
-
return syncModels.map(syncModel => {
|
|
121
|
-
syncModel.updateWhenChange(columns);
|
|
122
|
-
return syncModel;
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Get a Joinable instance for current model
|
|
127
|
-
*/
|
|
128
|
-
static joinable(localField, foreignField, single, as) {
|
|
129
|
-
const joinable$1 = new joinable.Joinable(this);
|
|
130
|
-
if (localField) {
|
|
131
|
-
joinable$1.localField(localField);
|
|
132
|
-
}
|
|
133
|
-
if (foreignField) {
|
|
134
|
-
joinable$1.foreignField(foreignField);
|
|
135
|
-
}
|
|
136
|
-
if (single) {
|
|
137
|
-
joinable$1.single(single);
|
|
138
|
-
}
|
|
139
|
-
if (as) {
|
|
140
|
-
joinable$1.as(as);
|
|
141
|
-
}
|
|
142
|
-
return joinableProxy.joinableProxy(joinable$1);
|
|
143
|
-
}
|
|
144
|
-
}exports.RelationshipModel=RelationshipModel;//# sourceMappingURL=relationships.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.js","sources":["../../src/model/relationships.ts"],"sourcesContent":[null],"names":["CrudModel","RelationshipWithMany","ModelAggregate","ModelSync","model","Model","clone","joinable","Joinable","joinableProxy"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-indexes-command.d.ts","sourceRoot":"","sources":["../../src/console/db-indexes-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,8BAA8B,YAwB7C"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {Command}from'commander';import {connectToDatabase}from'../utils/connectToDatabase.js';import {dropAllDatabaseIndexes}from'../utils/dropAllDatabaseIndexes.js';import {listIndexesForCertainCollections,listDatabaseIndexes}from'../utils/listDatabaseIndexes.js';import'@mongez/copper';import'@mongez/events';import'@warlock.js/logger';import'mongodb';import'async_hooks';function registerDatabaseIndexesCommand() {
|
|
2
|
-
return new Command("db:indexes")
|
|
3
|
-
.description("List all database indexes")
|
|
4
|
-
.option("-c, --collections <collections>", "List indexes for specific collections")
|
|
5
|
-
.option("-d, --drop", "Drop all database indexes")
|
|
6
|
-
.action(options => {
|
|
7
|
-
connectToDatabase();
|
|
8
|
-
if (options.drop) {
|
|
9
|
-
return dropAllDatabaseIndexes();
|
|
10
|
-
}
|
|
11
|
-
if (options.collections) {
|
|
12
|
-
return listIndexesForCertainCollections(Array.isArray(options.collections)
|
|
13
|
-
? options.collections
|
|
14
|
-
: [options.collections]);
|
|
15
|
-
}
|
|
16
|
-
listDatabaseIndexes();
|
|
17
|
-
});
|
|
18
|
-
}export{registerDatabaseIndexesCommand};//# sourceMappingURL=db-indexes-command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"db-indexes-command.js","sources":["../../src/console/db-indexes-command.ts"],"sourcesContent":[null],"names":[],"mappings":"+XAQgB,8BAA8B,GAAA;AAC5C,IAAA,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;SAC7B,WAAW,CAAC,2BAA2B,CAAC;AACxC,SAAA,MAAM,CACL,iCAAiC,EACjC,uCAAuC,CACxC;AACA,SAAA,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC;SACjD,MAAM,CAAC,OAAO,IAAG;AAChB,QAAA,iBAAiB,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,OAAO,sBAAsB,EAAE,CAAC;AACjC,SAAA;QAED,IAAI,OAAO,CAAC,WAAW,EAAE;YACvB,OAAO,gCAAgC,CACrC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;kBAC9B,OAAO,CAAC,WAAW;AACrB,kBAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAC1B,CAAC;AACH,SAAA;AAED,QAAA,mBAAmB,EAAE,CAAC;AACxB,KAAC,CAAC,CAAC;AACP"}
|
package/esm/console/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/console/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-command.d.ts","sourceRoot":"","sources":["../../src/console/migrate-command.ts"],"names":[],"mappings":"AAIA,wBAAgB,wBAAwB,QAavC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {command}from'@warlock.js/core';import {listMigrations,migrate}from'../migration/migrate.js';import {connectToDatabase}from'../utils/connectToDatabase.js';import'process';import'async_hooks';import'@mongez/copper';import'@mongez/events';import'@warlock.js/logger';import'mongodb';import'console-table-printer';function registerMigrationCommand() {
|
|
2
|
-
return command("migrate")
|
|
3
|
-
.description("Generate Database Migrations")
|
|
4
|
-
.option("-f, --fresh", "Drop all migrations and generate fresh migrations")
|
|
5
|
-
.option("-l, --list", "List all migrations")
|
|
6
|
-
.action(({ options }) => {
|
|
7
|
-
connectToDatabase();
|
|
8
|
-
if (options.list) {
|
|
9
|
-
return listMigrations();
|
|
10
|
-
}
|
|
11
|
-
migrate(options.fresh);
|
|
12
|
-
});
|
|
13
|
-
}export{registerMigrationCommand};//# sourceMappingURL=migrate-command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-command.js","sources":["../../src/console/migrate-command.ts"],"sourcesContent":[null],"names":[],"mappings":"sUAIgB,wBAAwB,GAAA;IACtC,OAAO,OAAO,CAAC,SAAS,CAAC;SACtB,WAAW,CAAC,8BAA8B,CAAC;AAC3C,SAAA,MAAM,CAAC,aAAa,EAAE,mDAAmD,CAAC;AAC1E,SAAA,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;AAC3C,SAAA,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAI;AACtB,QAAA,iBAAiB,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,OAAO,cAAc,EAAE,CAAC;AACzB,SAAA;AAED,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,KAAC,CAAC,CAAC;AACP"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register-blueprint-command.d.ts","sourceRoot":"","sources":["../../src/console/register-blueprint-command.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,OAoBvC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import {isPlainObject}from'@mongez/supportive-is';import {Blueprint}from'../blueprint/blueprint.js';function parseBlueprint(data) {
|
|
2
|
-
const schema = {};
|
|
3
|
-
for (const column in data) {
|
|
4
|
-
let columnType = data[column];
|
|
5
|
-
// check first if the column type is typeof Blueprint as columnType will be the class itself
|
|
6
|
-
// not the object of Blueprint
|
|
7
|
-
if (columnType.prototype instanceof Blueprint) {
|
|
8
|
-
columnType = parseBlueprint(columnType.schema);
|
|
9
|
-
}
|
|
10
|
-
else if (isPlainObject(columnType)) {
|
|
11
|
-
columnType = parseBlueprint(columnType);
|
|
12
|
-
}
|
|
13
|
-
else if (typeof columnType !== "string" && !isPlainObject(columnType)) {
|
|
14
|
-
columnType = columnType.name;
|
|
15
|
-
}
|
|
16
|
-
schema[column] = columnType;
|
|
17
|
-
}
|
|
18
|
-
return schema;
|
|
19
|
-
}export{parseBlueprint};//# sourceMappingURL=register-blueprint-command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register-blueprint-command.js","sources":["../../src/console/register-blueprint-command.ts"],"sourcesContent":[null],"names":[],"mappings":"oGAGM,SAAU,cAAc,CAAC,IAAS,EAAA;IACtC,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,IAAA,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;AACzB,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;;;AAK9B,QAAA,IAAI,UAAU,CAAC,SAAS,YAAY,SAAS,EAAE;AAC7C,YAAA,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AACzC,SAAA;aAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;AACvE,YAAA,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;AAC9B,SAAA;AAED,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;AAC7B,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { ModelAggregate } from "./ModelAggregate";
|
|
2
|
-
import { ModelSync } from "./ModelSync";
|
|
3
|
-
import { RelationshipWithMany } from "./RelationshipWithMany";
|
|
4
|
-
import { CrudModel } from "./crud-model";
|
|
5
|
-
import { Model } from "./model";
|
|
6
|
-
import type { ChildModel, ModelDocument } from "./types";
|
|
7
|
-
export declare abstract class RelationshipModel extends CrudModel {
|
|
8
|
-
/**
|
|
9
|
-
* Sync with list
|
|
10
|
-
*/
|
|
11
|
-
syncWith: ModelSync[];
|
|
12
|
-
/**
|
|
13
|
-
* Get relationship with the given model class
|
|
14
|
-
*/
|
|
15
|
-
hasMany<T extends Model = Model>(modelClass: typeof Model, column: string): RelationshipWithMany<T>;
|
|
16
|
-
/**
|
|
17
|
-
* Get new aggregate for current model
|
|
18
|
-
*/
|
|
19
|
-
static aggregate<T extends Model = Model>(this: ChildModel<T>): ModelAggregate<T>;
|
|
20
|
-
/**
|
|
21
|
-
* Get query builder
|
|
22
|
-
* @alias aggregate
|
|
23
|
-
*/
|
|
24
|
-
static queryBuilder<T extends Model = Model>(this: ChildModel<T>): ModelAggregate<T>;
|
|
25
|
-
/**
|
|
26
|
-
* Sync with the given model
|
|
27
|
-
*/
|
|
28
|
-
static sync(columns: string | string[], embedMethod?: string): ModelSync;
|
|
29
|
-
/**
|
|
30
|
-
* Sync data on saving
|
|
31
|
-
*/
|
|
32
|
-
startSyncing(saveMode: "create" | "update", oldModel?: Model): void;
|
|
33
|
-
/**
|
|
34
|
-
* Sync destruction
|
|
35
|
-
* Called when destroy method is called
|
|
36
|
-
*/
|
|
37
|
-
syncDestruction(): void;
|
|
38
|
-
/**
|
|
39
|
-
* The syncing model (That calls startSyncing) is being embedded in multiple documents of current model
|
|
40
|
-
* I.e Country.syncMany('cities') while current model is City
|
|
41
|
-
*/
|
|
42
|
-
static syncMany(columns: string | string[], embedMethod?: string): ModelSync;
|
|
43
|
-
/**
|
|
44
|
-
* Reassociate a model/object/document with the current model
|
|
45
|
-
* If the model is already associated, it will be updated
|
|
46
|
-
* If not, it will be associated
|
|
47
|
-
* the model/document must have an id
|
|
48
|
-
*
|
|
49
|
-
* If it is a model, you can set the embed method to use
|
|
50
|
-
*/
|
|
51
|
-
reassociate(this: Model, column: string, model: Model | ModelDocument | any, embedWith?: string): Model;
|
|
52
|
-
/**
|
|
53
|
-
* Associate a model with the current model
|
|
54
|
-
*/
|
|
55
|
-
associate(this: Model, column: string, model: Model | ModelDocument | any, embedWith?: string): Model;
|
|
56
|
-
/**
|
|
57
|
-
* Disassociate a model with the current model
|
|
58
|
-
*/
|
|
59
|
-
disassociate(this: Model, column: string, model: Model | ModelDocument | any): Model;
|
|
60
|
-
/**
|
|
61
|
-
* Make a wrapper to list when models should be updated when only one of the given columns is updated
|
|
62
|
-
*/
|
|
63
|
-
syncUpdateWhenChange(columns: string | string[], syncModels: ModelSync[]): ModelSync[];
|
|
64
|
-
/**
|
|
65
|
-
* Get a Joinable instance for current model
|
|
66
|
-
*/
|
|
67
|
-
static joinable(localField?: string, foreignField?: string, single?: boolean, as?: string): import("./joinable").JoinableProxy;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=relationships.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/model/relationships.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEzD,8BAAsB,iBAAkB,SAAQ,SAAS;IACvD;;OAEG;IACI,QAAQ,EAAE,SAAS,EAAE,CAAM;IAElC;;OAEG;IACI,OAAO,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EACpC,UAAU,EAAE,OAAO,KAAK,EACxB,MAAM,EAAE,MAAM;IAKhB;;OAEG;WACW,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAIpE;;;OAGG;WACW,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAIvE;;OAEG;WACW,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,WAAW,SAAc;IAIxE;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,KAAK;IAMnE;;;OAGG;IACI,eAAe;IAMtB;;;OAGG;WACW,QAAQ,CACpB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,WAAW,SAAc;IAK3B;;;;;;;OAOG;IACI,WAAW,CAChB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG,EAClC,SAAS,CAAC,EAAE,MAAM;IA6BpB;;OAEG;IACI,SAAS,CACd,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG,EAClC,SAAS,CAAC,EAAE,MAAM;IAoBpB;;OAEG;IACI,YAAY,CACjB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,GAAG;IAuBpC;;OAEG;IACI,oBAAoB,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,UAAU,EAAE,SAAS,EAAE;IASzB;;OAEG;WACW,QAAQ,CACpB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,OAAO,EAChB,EAAE,CAAC,EAAE,MAAM;CAsBd"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import {clone}from'@mongez/reinforcements';import {joinableProxy}from'../utils/joinable-proxy.js';import {ModelAggregate}from'./ModelAggregate.js';import {ModelSync}from'./ModelSync.js';import {RelationshipWithMany}from'./RelationshipWithMany.js';import {CrudModel}from'./crud-model.js';import {Joinable}from'./joinable.js';import {Model}from'./model.js';class RelationshipModel extends CrudModel {
|
|
2
|
-
/**
|
|
3
|
-
* Sync with list
|
|
4
|
-
*/
|
|
5
|
-
syncWith = [];
|
|
6
|
-
/**
|
|
7
|
-
* Get relationship with the given model class
|
|
8
|
-
*/
|
|
9
|
-
hasMany(modelClass, column) {
|
|
10
|
-
return new RelationshipWithMany(this, modelClass, column);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Get new aggregate for current model
|
|
14
|
-
*/
|
|
15
|
-
static aggregate() {
|
|
16
|
-
return new ModelAggregate(this);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Get query builder
|
|
20
|
-
* @alias aggregate
|
|
21
|
-
*/
|
|
22
|
-
static queryBuilder() {
|
|
23
|
-
return new ModelAggregate(this);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Sync with the given model
|
|
27
|
-
*/
|
|
28
|
-
static sync(columns, embedMethod = "embedData") {
|
|
29
|
-
return new ModelSync(this, columns, embedMethod);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Sync data on saving
|
|
33
|
-
*/
|
|
34
|
-
startSyncing(saveMode, oldModel) {
|
|
35
|
-
for (const modelSync of this.syncWith) {
|
|
36
|
-
modelSync.sync(this, saveMode, oldModel);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Sync destruction
|
|
41
|
-
* Called when destroy method is called
|
|
42
|
-
*/
|
|
43
|
-
syncDestruction() {
|
|
44
|
-
for (const modelSync of this.syncWith) {
|
|
45
|
-
modelSync.syncDestruction(this);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* The syncing model (That calls startSyncing) is being embedded in multiple documents of current model
|
|
50
|
-
* I.e Country.syncMany('cities') while current model is City
|
|
51
|
-
*/
|
|
52
|
-
static syncMany(columns, embedMethod = "embedData") {
|
|
53
|
-
return new ModelSync(this, columns, embedMethod).syncMany();
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Reassociate a model/object/document with the current model
|
|
57
|
-
* If the model is already associated, it will be updated
|
|
58
|
-
* If not, it will be associated
|
|
59
|
-
* the model/document must have an id
|
|
60
|
-
*
|
|
61
|
-
* If it is a model, you can set the embed method to use
|
|
62
|
-
*/
|
|
63
|
-
reassociate(column, model, embedWith) {
|
|
64
|
-
const columnValue = model instanceof Model
|
|
65
|
-
? embedWith
|
|
66
|
-
? model[embedWith]()
|
|
67
|
-
: model.embeddedData
|
|
68
|
-
: model;
|
|
69
|
-
if (columnValue === undefined)
|
|
70
|
-
return this;
|
|
71
|
-
// make a deep copy so when changing the data, it won't affect the original data
|
|
72
|
-
const documentsList = clone(this.get(column, []));
|
|
73
|
-
const index = documentsList.findIndex((doc) => (doc?.id || doc) === (columnValue?.id || columnValue));
|
|
74
|
-
if (index === -1) {
|
|
75
|
-
documentsList.push(columnValue);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
documentsList[index] = columnValue;
|
|
79
|
-
}
|
|
80
|
-
this.set(column, [...documentsList]);
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Associate a model with the current model
|
|
85
|
-
*/
|
|
86
|
-
associate(column, model, embedWith) {
|
|
87
|
-
const columnValue = model instanceof Model
|
|
88
|
-
? embedWith
|
|
89
|
-
? model[embedWith]()
|
|
90
|
-
: model.embeddedData
|
|
91
|
-
: model;
|
|
92
|
-
if (columnValue === undefined)
|
|
93
|
-
return this;
|
|
94
|
-
const documentsList = this.get(column, []);
|
|
95
|
-
documentsList.push(columnValue);
|
|
96
|
-
this.set(column, documentsList);
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Disassociate a model with the current model
|
|
101
|
-
*/
|
|
102
|
-
disassociate(column, model) {
|
|
103
|
-
const columnValue = model instanceof Model ? model.embeddedData : model;
|
|
104
|
-
if (columnValue === undefined)
|
|
105
|
-
return this;
|
|
106
|
-
const documentsList = this.get(column, []);
|
|
107
|
-
if (!Array.isArray(documentsList))
|
|
108
|
-
return this;
|
|
109
|
-
const index = documentsList.findIndex((doc) => (doc?.id || doc) === (columnValue?.id || columnValue));
|
|
110
|
-
if (index !== -1) {
|
|
111
|
-
documentsList.splice(index, 1);
|
|
112
|
-
}
|
|
113
|
-
this.set(column, documentsList);
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Make a wrapper to list when models should be updated when only one of the given columns is updated
|
|
118
|
-
*/
|
|
119
|
-
syncUpdateWhenChange(columns, syncModels) {
|
|
120
|
-
return syncModels.map(syncModel => {
|
|
121
|
-
syncModel.updateWhenChange(columns);
|
|
122
|
-
return syncModel;
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Get a Joinable instance for current model
|
|
127
|
-
*/
|
|
128
|
-
static joinable(localField, foreignField, single, as) {
|
|
129
|
-
const joinable = new Joinable(this);
|
|
130
|
-
if (localField) {
|
|
131
|
-
joinable.localField(localField);
|
|
132
|
-
}
|
|
133
|
-
if (foreignField) {
|
|
134
|
-
joinable.foreignField(foreignField);
|
|
135
|
-
}
|
|
136
|
-
if (single) {
|
|
137
|
-
joinable.single(single);
|
|
138
|
-
}
|
|
139
|
-
if (as) {
|
|
140
|
-
joinable.as(as);
|
|
141
|
-
}
|
|
142
|
-
return joinableProxy(joinable);
|
|
143
|
-
}
|
|
144
|
-
}export{RelationshipModel};//# sourceMappingURL=relationships.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.js","sources":["../../src/model/relationships.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|