package orm // Command represents an ORM write command for One2many/Many2many fields. // Mirrors: odoo/orm/fields.py Command class // // Odoo uses a tuple-based command system: // // (0, 0, {values}) → CREATE: create new record // (1, id, {values}) → UPDATE: update existing record // (2, id, 0) → DELETE: delete record // (3, id, 0) → UNLINK: remove link (M2M only) // (4, id, 0) → LINK: add link (M2M only) // (5, 0, 0) → CLEAR: remove all links (M2M only) // (6, 0, [ids]) → SET: replace all links (M2M only) type Command struct { Operation CommandOp ID int64 Values Values IDs []int64 // For SET command } // CommandOp is the command operation type. type CommandOp int const ( CommandCreate CommandOp = 0 CommandUpdate CommandOp = 1 CommandDelete CommandOp = 2 CommandUnlink CommandOp = 3 CommandLink CommandOp = 4 CommandClear CommandOp = 5 CommandSet CommandOp = 6 ) // CmdCreate returns a CREATE command. Mirrors: Command.create(values) func CmdCreate(values Values) Command { return Command{Operation: CommandCreate, Values: values} } // CmdUpdate returns an UPDATE command. Mirrors: Command.update(id, values) func CmdUpdate(id int64, values Values) Command { return Command{Operation: CommandUpdate, ID: id, Values: values} } // CmdDelete returns a DELETE command. Mirrors: Command.delete(id) func CmdDelete(id int64) Command { return Command{Operation: CommandDelete, ID: id} } // CmdUnlink returns an UNLINK command. Mirrors: Command.unlink(id) func CmdUnlink(id int64) Command { return Command{Operation: CommandUnlink, ID: id} } // CmdLink returns a LINK command. Mirrors: Command.link(id) func CmdLink(id int64) Command { return Command{Operation: CommandLink, ID: id} } // CmdClear returns a CLEAR command. Mirrors: Command.clear() func CmdClear() Command { return Command{Operation: CommandClear} } // CmdSet returns a SET command. Mirrors: Command.set(ids) func CmdSet(ids []int64) Command { return Command{Operation: CommandSet, IDs: ids} }