Delete will place a delete marker and leave all revisions.
(key string, opts ...DeleteOpt)
| 750 | |
| 751 | // Delete will place a delete marker and leave all revisions. |
| 752 | func (kv *kvs) Delete(key string, opts ...DeleteOpt) error { |
| 753 | if !keyValid(key) { |
| 754 | return ErrInvalidKey |
| 755 | } |
| 756 | |
| 757 | var b strings.Builder |
| 758 | if kv.useJSPfx { |
| 759 | b.WriteString(kv.js.opts.pre) |
| 760 | } |
| 761 | if kv.putPre != _EMPTY_ { |
| 762 | b.WriteString(kv.putPre) |
| 763 | } else { |
| 764 | b.WriteString(kv.pre) |
| 765 | } |
| 766 | b.WriteString(key) |
| 767 | |
| 768 | // DEL op marker. For watch functionality. |
| 769 | m := NewMsg(b.String()) |
| 770 | |
| 771 | var o deleteOpts |
| 772 | for _, opt := range opts { |
| 773 | if opt != nil { |
| 774 | if err := opt.configureDelete(&o); err != nil { |
| 775 | return err |
| 776 | } |
| 777 | } |
| 778 | } |
| 779 | |
| 780 | if o.purge { |
| 781 | m.Header.Set(kvop, kvpurge) |
| 782 | m.Header.Set(MsgRollup, MsgRollupSubject) |
| 783 | } else { |
| 784 | m.Header.Set(kvop, kvdel) |
| 785 | } |
| 786 | |
| 787 | if o.revision != 0 { |
| 788 | m.Header.Set(ExpectedLastSubjSeqHdr, strconv.FormatUint(o.revision, 10)) |
| 789 | } |
| 790 | |
| 791 | _, err := kv.js.PublishMsg(m) |
| 792 | return err |
| 793 | } |
| 794 | |
| 795 | // Purge will remove the key and all revisions. |
| 796 | func (kv *kvs) Purge(key string, opts ...DeleteOpt) error { |
no test coverage detected