@nozbe/watermelondb
Version:
Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast
25 lines (24 loc) • 1.28 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _makeDecorator = _interopRequireDefault(require("../../utils/common/makeDecorator"));
var _invariant = _interopRequireDefault(require("../../utils/common/invariant"));
// Marks a model field as immutable after create — you can set and change the value in
// create() and prepareCreate(), but after it's saved to the database, it cannot be changed
var nochange = (0, _makeDecorator.default)(function () {
return function (target, key, descriptor) {
(0, _invariant.default)(descriptor.set, "@nochange can only be applied to model fields (to properties with a setter)");
var errorMessage = "Attempt to set a new value on a @nochange field: ".concat(target.constructor.name, ".prototype.").concat(key);
return (0, _extends2.default)({}, descriptor, {
set: function (value) {
// $FlowFixMe
var model = this;
(0, _invariant.default)('create' === model.asModel._preparedState, errorMessage);
descriptor.set.call(model, value);
}
});
};
});
var _default = exports.default = nochange;