update.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_UPDATE_COMMAND } from '../helper/symbol';
  2. export var UPDATE_COMMANDS_LITERAL;
  3. (function (UPDATE_COMMANDS_LITERAL) {
  4. UPDATE_COMMANDS_LITERAL["SET"] = "set";
  5. UPDATE_COMMANDS_LITERAL["REMOVE"] = "remove";
  6. UPDATE_COMMANDS_LITERAL["INC"] = "inc";
  7. UPDATE_COMMANDS_LITERAL["MUL"] = "mul";
  8. UPDATE_COMMANDS_LITERAL["PUSH"] = "push";
  9. UPDATE_COMMANDS_LITERAL["PULL"] = "pull";
  10. UPDATE_COMMANDS_LITERAL["PULL_ALL"] = "pullAll";
  11. UPDATE_COMMANDS_LITERAL["POP"] = "pop";
  12. UPDATE_COMMANDS_LITERAL["SHIFT"] = "shift";
  13. UPDATE_COMMANDS_LITERAL["UNSHIFT"] = "unshift";
  14. UPDATE_COMMANDS_LITERAL["ADD_TO_SET"] = "addToSet";
  15. UPDATE_COMMANDS_LITERAL["BIT"] = "bit";
  16. UPDATE_COMMANDS_LITERAL["RENAME"] = "rename";
  17. UPDATE_COMMANDS_LITERAL["MAX"] = "max";
  18. UPDATE_COMMANDS_LITERAL["MIN"] = "min";
  19. })(UPDATE_COMMANDS_LITERAL || (UPDATE_COMMANDS_LITERAL = {}));
  20. export class UpdateCommand {
  21. constructor(operator, operands, fieldName) {
  22. this._internalType = SYMBOL_UPDATE_COMMAND;
  23. Object.defineProperties(this, {
  24. _internalType: {
  25. enumerable: false,
  26. configurable: false,
  27. },
  28. });
  29. this.operator = operator;
  30. this.operands = operands;
  31. this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;
  32. }
  33. _setFieldName(fieldName) {
  34. const command = new UpdateCommand(this.operator, this.operands, fieldName);
  35. return command;
  36. }
  37. }
  38. export function isUpdateCommand(object) {
  39. return object && (object instanceof UpdateCommand) && (object._internalType === SYMBOL_UPDATE_COMMAND);
  40. }
  41. export function isKnownUpdateCommand(object) {
  42. return isUpdateCommand(object) && (object.operator.toUpperCase() in UPDATE_COMMANDS_LITERAL);
  43. }
  44. export default UpdateCommand;