Source Code

;; rug-weave -- handmade rug weaving cooperative
(define-data-var rug-count uint u0)
(define-map rugs uint { weaver: principal, pattern: (string-ascii 30), size: (string-ascii 10), price: uint, sold: bool })
(define-public (list-rug (pattern (string-ascii 30)) (size (string-ascii 10)) (price uint))
  (let ((id (+ (var-get rug-count) u1)))
    (var-set rug-count id)
    (map-set rugs id { weaver: tx-sender, pattern: pattern, size: size, price: price, sold: false }) (ok id)))
(define-public (sell-rug (id uint))
  (let ((r (unwrap! (map-get? rugs id) (err u404))))
    (map-set rugs id (merge r { sold: true })) (ok true)))
(define-read-only (get-rug (id uint)) (map-get? rugs id))
(define-read-only (get-count) (var-get rug-count))

Functions (4)

FunctionAccessArgs
list-rugpublicpattern: (string-ascii 30
sell-rugpublicid: uint
get-rugread-onlyid: uint
get-countread-only