Source Code

;; veggie-box -- halal vegetable box subscription
(define-data-var sub-count uint u0)
(define-map subs uint { farmer: principal, plan: (string-ascii 20), price: uint, active: bool })
(define-map subscribers { sub-id: uint, buyer: principal } bool)
(define-public (create-plan (plan (string-ascii 20)) (price uint))
  (let ((id (+ (var-get sub-count) u1)))
    (var-set sub-count id)
    (map-set subs id { farmer: tx-sender, plan: plan, price: price, active: true }) (ok id)))
(define-public (subscribe (sub-id uint))
  (begin (map-set subscribers { sub-id: sub-id, buyer: tx-sender } true) (ok true)))
(define-public (cancel-plan (id uint))
  (let ((s (unwrap! (map-get? subs id) (err u404))))
    (map-set subs id (merge s { active: false })) (ok true)))
(define-read-only (get-plan (id uint)) (map-get? subs id))

Functions (4)

FunctionAccessArgs
create-planpublicplan: (string-ascii 20
subscribepublicsub-id: uint
cancel-planpublicid: uint
get-planread-onlyid: uint