;; 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))