const { Enumerable } = require("./Enumerable");
const { RecordId } = require("./RecordId");
const { RecordInfo } = require("./RecordInfo");
/**
* @class ChildRecordDiff
* @param {Object} $b
* @param {ChildRecordDiff.RecordInfoOperation} $b.operation
* @param {Date} $b.created
* @param {RecordId} $b.parentRecord
* @param {RecordInfo} $b.recordInfo
*
*/
class ChildRecordDiff {
constructor($b) {
if (!$b) $b = {};
/**@type {ChildRecordDiff.RecordInfoOperation} */
this.Operation =
typeof $b.operation === "string"
? $b.operation
: ChildRecordDiff.RecordInfoOperation.FromNumber($b.operation);
/**@type {Date} */
this.Created = new Date($b.created);
/**@type {RecordId} */
this.ParentRecord =
$b.parentRecord instanceof RecordId
? $b.parentRecord
: new RecordId($b.parentRecord);
/**@type {RecordInfo} */
this.RecordInfo =
$b.recordInfo instanceof RecordInfo
? $b.parentRecord
: new RecordInfo($b.recordInfo);
}
/**
* @static
* @memberof ChildRecordDiff
* @typedef {ChildRecordDiff.RecordInfoOperation} RecordInfoOperation
* @enum {Enumerable<string>} AssetDiffEnum
* @property {"Upsert"} Upsert
* @property {"Remove"} Remove
*/
static get RecordInfoOperation() {
return new Enumerable(["Upsert", "Remove"]);
}
}
module.exports = {
ChildRecordDiff,
};