velocious 1.0.433 → 1.0.435
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/build/configuration-types.js +1 -1
- package/build/database/record/index.js +45 -21
- package/build/database/record/instance-relationships/belongs-to.js +7 -0
- package/build/src/configuration-types.d.ts +2 -2
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +2 -2
- package/build/src/database/record/index.d.ts +21 -0
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +43 -19
- package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/belongs-to.js +7 -1
- package/package.json +1 -1
- package/src/configuration-types.js +1 -1
- package/src/database/record/index.js +45 -21
- package/src/database/record/instance-relationships/belongs-to.js +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/belongs-to.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,0EAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;;OAGG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;
|
|
1
|
+
{"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/instance-relationships/belongs-to.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,0EAJoD,EAAE,SAAzC,cAAe,aAAa,EAAE,OAAQ,EACC,GAAG,SAA1C,cAAe,aAAa,EAAE,OAAQ;IAIjD;;;OAGG;IACH,kBAFW,OAAO,WAAW,EAAE,6BAA6B,CAAC,EAAE,EAAE,GAAG,CAAC,EAIpE;CAyEF;qCAxFoC,WAAW"}
|
|
@@ -46,6 +46,12 @@ export default class VelociousDatabaseRecordBelongsToInstanceRelationship extend
|
|
|
46
46
|
const TargetModelClass = this.getTargetModelClass();
|
|
47
47
|
if (!TargetModelClass)
|
|
48
48
|
throw new Error("Can't load without a target model");
|
|
49
|
+
if (foreignModelID === null || foreignModelID === undefined || foreignModelID === "") {
|
|
50
|
+
this.setLoaded(undefined);
|
|
51
|
+
this.setDirty(false);
|
|
52
|
+
this.setPreloaded(true);
|
|
53
|
+
return this.loaded();
|
|
54
|
+
}
|
|
49
55
|
const primaryKey = TargetModelClass.primaryKey();
|
|
50
56
|
/**
|
|
51
57
|
* Where args.
|
|
@@ -66,4 +72,4 @@ export default class VelociousDatabaseRecordBelongsToInstanceRelationship extend
|
|
|
66
72
|
return this.loaded();
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvaW5zdGFuY2UtcmVsYXRpb25zaGlwcy9iZWxvbmdzLXRvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLHdCQUF3QixNQUFNLFdBQVcsQ0FBQTtBQUVoRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sb0RBQXFELFNBQVEsd0JBQXdCO0lBQ3hHOzs7T0FHRztJQUNILFlBQVksSUFBSTtRQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNiLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLGdCQUFnQixHQUFHOztpREFFZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7UUFFdEUsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQTtRQUV6RixNQUFNLFdBQVcsR0FBRzs7MERBRThCLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFFL0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUE7UUFFMUIsT0FBTyxXQUFXLENBQUE7SUFDcEIsQ0FBQztJQUVELG9CQUFvQixLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFFOUMsS0FBSyxDQUFDLElBQUk7UUFDUiwwRUFBMEU7UUFDMUUsMkVBQTJFO1FBQzNFLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQTtRQUV4QixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBRTlDLElBQUksT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBRWpDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN2QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzdELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUE7UUFFbkQsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtRQUMzRSxJQUFJLGNBQWMsS0FBSyxJQUFJLElBQUksY0FBYyxLQUFLLFNBQVMsSUFBSSxjQUFjLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDckYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDdEIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2hEOzt1RUFFK0Q7UUFDL0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBRXBCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUE7UUFFdEMsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRTdDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRXhDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUV2QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2VJbnN0YW5jZVJlbGF0aW9uc2hpcCBmcm9tIFwiLi9iYXNlLmpzXCJcblxuLyoqXG4gKiBBIGdlbmVyaWMgcXVlcnkgb3ZlciBzb21lIG1vZGVsIHR5cGUuXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBNQ1xuICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gVE1DXG4gKiBAYXVnbWVudHMge0Jhc2VJbnN0YW5jZVJlbGF0aW9uc2hpcDxNQywgVE1DPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VSZWNvcmRCZWxvbmdzVG9JbnN0YW5jZVJlbGF0aW9uc2hpcCBleHRlbmRzIEJhc2VJbnN0YW5jZVJlbGF0aW9uc2hpcCB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS5qc1wiKS5JbnN0YW5jZVJlbGF0aW9uc2hpcHNCYXNlQXJnczxNQywgVE1DPn0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3IoYXJncykge1xuICAgIHN1cGVyKGFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBidWlsZC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gZGF0YSAtIERhdGEgcGF5bG9hZC5cbiAgICogQHJldHVybnMge0luc3RhbmNlVHlwZTxUTUM+fSAtIFRoZSBidWlsZC5cbiAgICovXG4gIGJ1aWxkKGRhdGEpIHtcbiAgICBjb25zdCBUYXJnZXRNb2RlbENsYXNzID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7VE1DfSAqLyAodGhpcy5nZXRUYXJnZXRNb2RlbENsYXNzKCkpXG5cbiAgICBpZiAoIVRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGJ1aWxkIGEgbmV3IHJlY29yZCB3aXRob3V0IGEgdGFyZ2V0IG1vZGVsXCIpXG5cbiAgICBjb25zdCBuZXdJbnN0YW5jZSA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7SW5zdGFuY2VUeXBlPFRNQz59ICovIChuZXcgVGFyZ2V0TW9kZWxDbGFzcyhkYXRhKSlcblxuICAgIHRoaXMuX2xvYWRlZCA9IG5ld0luc3RhbmNlXG5cbiAgICByZXR1cm4gbmV3SW5zdGFuY2VcbiAgfVxuXG4gIGdldExvYWRlZE9yVW5kZWZpbmVkKCkgeyByZXR1cm4gdGhpcy5fbG9hZGVkIH1cblxuICBhc3luYyBsb2FkKCkge1xuICAgIC8vIEZvcmNlLXJlbG9hZDogZGlzY2FyZCB0aGUgY2FjaGVkIHZhbHVlIGFuZCBmZXRjaCBmcmVzaC4gV2hlbiB0aGUgcGFyZW50XG4gICAgLy8gcmVjb3JkIHdhcyBsb2FkZWQgYXMgcGFydCBvZiBhIGJhdGNoLCBiYXRjaCB0aGUgYmVsb25ncy10byBsb29rdXAgYWNyb3NzXG4gICAgLy8gY29ob3J0IHNpYmxpbmdzIHRoYXQgaGF2ZSBub3QgcHJlbG9hZGVkIHRoaXMgcmVsYXRpb25zaGlwIHlldC5cbiAgICB0aGlzLl9wcmVsb2FkZWQgPSBmYWxzZVxuICAgIHRoaXMuX2xvYWRlZCA9IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgYmF0Y2hlZCA9IGF3YWl0IHRoaXMuX3RyeUNvaG9ydFByZWxvYWQoKVxuXG4gICAgaWYgKGJhdGNoZWQpIHJldHVybiB0aGlzLmxvYWRlZCgpXG5cbiAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5nZXRGb3JlaWduS2V5KClcbiAgICBjb25zdCBmb3JlaWduTW9kZWxJRCA9IHRoaXMuZ2V0TW9kZWwoKS5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpXG4gICAgY29uc3QgVGFyZ2V0TW9kZWxDbGFzcyA9IHRoaXMuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIVRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGxvYWQgd2l0aG91dCBhIHRhcmdldCBtb2RlbFwiKVxuICAgIGlmIChmb3JlaWduTW9kZWxJRCA9PT0gbnVsbCB8fCBmb3JlaWduTW9kZWxJRCA9PT0gdW5kZWZpbmVkIHx8IGZvcmVpZ25Nb2RlbElEID09PSBcIlwiKSB7XG4gICAgICB0aGlzLnNldExvYWRlZCh1bmRlZmluZWQpXG4gICAgICB0aGlzLnNldERpcnR5KGZhbHNlKVxuICAgICAgdGhpcy5zZXRQcmVsb2FkZWQodHJ1ZSlcblxuICAgICAgcmV0dXJuIHRoaXMubG9hZGVkKClcbiAgICB9XG5cbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gVGFyZ2V0TW9kZWxDbGFzcy5wcmltYXJ5S2V5KClcbiAgICAvKipcbiAgICAgKiBXaGVyZSBhcmdzLlxuICAgICAgQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ+fSAqL1xuICAgIGNvbnN0IHdoZXJlQXJncyA9IHt9XG5cbiAgICB3aGVyZUFyZ3NbcHJpbWFyeUtleV0gPSBmb3JlaWduTW9kZWxJRFxuXG4gICAgbGV0IHF1ZXJ5ID0gVGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICBxdWVyeSA9IHRoaXMuYXBwbHlTY29wZShxdWVyeSlcblxuICAgIGNvbnN0IGZvcmVpZ25Nb2RlbCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KClcblxuICAgIGlmIChmb3JlaWduTW9kZWwpIHtcbiAgICAgIHRoaXMuc2V0TG9hZGVkKGZvcmVpZ25Nb2RlbClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRMb2FkZWQodW5kZWZpbmVkKVxuICAgIH1cbiAgICB0aGlzLnNldERpcnR5KGZhbHNlKVxuICAgIHRoaXMuc2V0UHJlbG9hZGVkKHRydWUpXG5cbiAgICByZXR1cm4gdGhpcy5sb2FkZWQoKVxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -292,7 +292,7 @@
|
|
|
292
292
|
*/
|
|
293
293
|
|
|
294
294
|
/**
|
|
295
|
-
* @typedef {Omit<typeof import("./frontend-model-resource/base-resource.js").default, never> & {new (args: ConstructorParameters<typeof import("./frontend-model-resource/base-resource.js").default>[0]): import("./frontend-model-resource/base-resource.js").default}} FrontendModelResourceClassType
|
|
295
|
+
* @typedef {Omit<typeof import("./frontend-model-resource/base-resource.js").default, never> & {new (args: ConstructorParameters<typeof import("./frontend-model-resource/base-resource.js").default>[0]): import("./frontend-model-resource/base-resource.js").default<typeof import("./database/record/index.js").default>}} FrontendModelResourceClassType
|
|
296
296
|
*/
|
|
297
297
|
|
|
298
298
|
/**
|
|
@@ -3698,9 +3698,12 @@ class VelociousDatabaseRecord {
|
|
|
3698
3698
|
*/
|
|
3699
3699
|
readColumn(attributeName) {
|
|
3700
3700
|
this.getModelClass()._assertHasBeenInitialized()
|
|
3701
|
+
const belongsToChanges = this._belongsToChanges()
|
|
3701
3702
|
let result
|
|
3702
3703
|
|
|
3703
|
-
if (attributeName in
|
|
3704
|
+
if (attributeName in belongsToChanges) {
|
|
3705
|
+
result = belongsToChanges[attributeName]
|
|
3706
|
+
} else if (attributeName in this._changes) {
|
|
3704
3707
|
result = this._changes[attributeName]
|
|
3705
3708
|
} else if (attributeName in this._attributes) {
|
|
3706
3709
|
result = this._attributes[attributeName]
|
|
@@ -3844,8 +3847,6 @@ class VelociousDatabaseRecord {
|
|
|
3844
3847
|
throw new Error(`No insertSql on ${this.getModelClass().connection().constructor.name}`)
|
|
3845
3848
|
}
|
|
3846
3849
|
|
|
3847
|
-
const createdAtColumn = this.getModelClass().getColumns().find((column) => column.getName() == "created_at")
|
|
3848
|
-
const updatedAtColumn = this.getModelClass().getColumns().find((column) => column.getName() == "updated_at")
|
|
3849
3850
|
const data = Object.assign({}, this._belongsToChanges(), this.rawAttributes())
|
|
3850
3851
|
const primaryKey = this.getModelClass().primaryKey()
|
|
3851
3852
|
const primaryKeyColumn = this.getModelClass().getColumns().find((column) => column.getName() == primaryKey)
|
|
@@ -3853,14 +3854,7 @@ class VelociousDatabaseRecord {
|
|
|
3853
3854
|
const driverSupportsDefaultUUID = typeof this._connection().supportsDefaultPrimaryKeyUUID == "function" && this._connection().supportsDefaultPrimaryKeyUUID()
|
|
3854
3855
|
const isUUIDPrimaryKey = primaryKeyType?.includes("uuid")
|
|
3855
3856
|
const shouldAssignUUIDPrimaryKey = isUUIDPrimaryKey && !driverSupportsDefaultUUID
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
if (createdAtColumn && (data.created_at === undefined || data.created_at === null || data.created_at === "")) {
|
|
3859
|
-
data.created_at = currentDate
|
|
3860
|
-
}
|
|
3861
|
-
if (updatedAtColumn && (data.updated_at === undefined || data.updated_at === null || data.updated_at === "")) {
|
|
3862
|
-
data.updated_at = currentDate
|
|
3863
|
-
}
|
|
3857
|
+
this._setDefaultTimestampValues(data)
|
|
3864
3858
|
|
|
3865
3859
|
const columnNames = this.getModelClass().getColumnNames()
|
|
3866
3860
|
const hasUserProvidedPrimaryKey = data[primaryKey] !== undefined && data[primaryKey] !== null && data[primaryKey] !== ""
|
|
@@ -3878,6 +3872,31 @@ class VelociousDatabaseRecord {
|
|
|
3878
3872
|
})
|
|
3879
3873
|
const insertResult = await this._connection().query(sql, {logName: `${this.getModelClass().name} Create`})
|
|
3880
3874
|
|
|
3875
|
+
await this._applyInsertResult({data, insertResult, primaryKey, primaryKeyType})
|
|
3876
|
+
this.setIsNewRecord(false)
|
|
3877
|
+
|
|
3878
|
+
// Mark all relationships as preloaded, since we don't expect anything to have magically appeared since we created the record.
|
|
3879
|
+
for (const relationship of this.getModelClass().getRelationships()) {
|
|
3880
|
+
const instanceRelationship = this.getRelationshipByName(relationship.getRelationshipName())
|
|
3881
|
+
|
|
3882
|
+
if (instanceRelationship.getType() == "hasMany" && instanceRelationship.getLoadedOrUndefined() === null) {
|
|
3883
|
+
instanceRelationship.setLoaded([])
|
|
3884
|
+
}
|
|
3885
|
+
|
|
3886
|
+
instanceRelationship.setPreloaded(true)
|
|
3887
|
+
}
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3890
|
+
/**
|
|
3891
|
+
* Applies the database insert response to this record.
|
|
3892
|
+
* @param {object} options - Insert result options.
|
|
3893
|
+
* @param {Record<string, ?>} options.data - Inserted data.
|
|
3894
|
+
* @param {?} options.insertResult - Result returned from the connection.
|
|
3895
|
+
* @param {string} options.primaryKey - Primary key column name.
|
|
3896
|
+
* @param {string | undefined} options.primaryKeyType - Primary key column type.
|
|
3897
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
3898
|
+
*/
|
|
3899
|
+
async _applyInsertResult({data, insertResult, primaryKey, primaryKeyType}) {
|
|
3881
3900
|
if (Array.isArray(insertResult) && insertResult[0] && insertResult[0][primaryKey]) {
|
|
3882
3901
|
this._attributes = insertResult[0]
|
|
3883
3902
|
this._changes = {}
|
|
@@ -3889,18 +3908,23 @@ class VelociousDatabaseRecord {
|
|
|
3889
3908
|
|
|
3890
3909
|
await this._reloadWithId(id)
|
|
3891
3910
|
}
|
|
3911
|
+
}
|
|
3892
3912
|
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
|
|
3913
|
+
/**
|
|
3914
|
+
* Sets timestamp defaults for a new record insert.
|
|
3915
|
+
* @param {Record<string, ?>} data - Column-keyed data.
|
|
3916
|
+
* @returns {void} - No return value.
|
|
3917
|
+
*/
|
|
3918
|
+
_setDefaultTimestampValues(data) {
|
|
3919
|
+
const createdAtColumn = this.getModelClass().getColumns().find((column) => column.getName() == "created_at")
|
|
3920
|
+
const updatedAtColumn = this.getModelClass().getColumns().find((column) => column.getName() == "updated_at")
|
|
3921
|
+
const currentDate = new Date()
|
|
3902
3922
|
|
|
3903
|
-
|
|
3923
|
+
if (createdAtColumn && (data.created_at === undefined || data.created_at === null || data.created_at === "")) {
|
|
3924
|
+
data.created_at = currentDate
|
|
3925
|
+
}
|
|
3926
|
+
if (updatedAtColumn && (data.updated_at === undefined || data.updated_at === null || data.updated_at === "")) {
|
|
3927
|
+
data.updated_at = currentDate
|
|
3904
3928
|
}
|
|
3905
3929
|
}
|
|
3906
3930
|
|
|
@@ -56,6 +56,13 @@ export default class VelociousDatabaseRecordBelongsToInstanceRelationship extend
|
|
|
56
56
|
const TargetModelClass = this.getTargetModelClass()
|
|
57
57
|
|
|
58
58
|
if (!TargetModelClass) throw new Error("Can't load without a target model")
|
|
59
|
+
if (foreignModelID === null || foreignModelID === undefined || foreignModelID === "") {
|
|
60
|
+
this.setLoaded(undefined)
|
|
61
|
+
this.setDirty(false)
|
|
62
|
+
this.setPreloaded(true)
|
|
63
|
+
|
|
64
|
+
return this.loaded()
|
|
65
|
+
}
|
|
59
66
|
|
|
60
67
|
const primaryKey = TargetModelClass.primaryKey()
|
|
61
68
|
/**
|