(define-constant O tx-sender)
(define-constant E1 (err u730))
(define-constant E2 (err u731))
(define-map market-tag {mid: uint, idx: uint} (string-ascii 32))
(define-map tag-count uint uint)
(define-public (add-tag (mid uint) (tag (string-ascii 32)))
(let ((cnt (default-to u0 (map-get? tag-count mid))))
(asserts! (< cnt u5) E2)
(map-set market-tag {mid: mid, idx: cnt} tag)
(map-set tag-count mid (+ cnt u1))
(ok true)))
(define-public (remove-tags (mid uint))
(begin (asserts! (is-eq tx-sender O) E1)
(ok (map-set tag-count mid u0))))
(define-read-only (get-tag (mid uint) (idx uint))
(map-get? market-tag {mid: mid, idx: idx}))
(define-read-only (get-tag-count (mid uint))
(default-to u0 (map-get? tag-count mid)))