Source Code

;; SatGuard Coverage Types Registry
(define-constant err-owner (err u720))
(define-constant err-dup (err u721))
(define-constant err-nf (err u722))
(define-data-var admin principal tx-sender)
(define-data-var ct-nonce uint u0)
(define-map cov-types {id: uint} {name: (string-ascii 50),desc: (string-utf8 200),active: bool,ca: uint})
(define-map name-to-id {name: (string-ascii 50)} {id: uint})
(define-read-only (get-type (id uint)) (map-get? cov-types {id: id}))
(define-read-only (get-type-by-name (name (string-ascii 50))) (map-get? name-to-id {name: name}))
(define-read-only (get-type-count) (var-get ct-nonce))
(define-public (add-type (name (string-ascii 50)) (desc (string-utf8 200)))
  (let ((nid (+ (var-get ct-nonce) u1)))
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (asserts! (is-none (map-get? name-to-id {name: name})) err-dup)
    (map-set cov-types {id: nid} {name: name,desc: desc,active: true,ca: block-height})
    (map-set name-to-id {name: name} {id: nid})
    (var-set ct-nonce nid)
    (print {e: "cov-type-added",id: nid,name: name})
    (ok nid)))
(define-public (deactivate-type (id uint))
  (let ((ct (unwrap! (map-get? cov-types {id: id}) err-nf)))
    (asserts! (is-eq tx-sender (var-get admin)) err-owner)
    (map-set cov-types {id: id} (merge ct {active: false}))
    (print {e: "cov-type-deactivated",id: id})
    (ok true)))

Functions (5)

FunctionAccessArgs
get-typeread-onlyid: uint
get-type-by-nameread-onlyname: (string-ascii 50
get-type-countread-only
add-typepublicname: (string-ascii 50
deactivate-typepublicid: uint