Source Code

;; Dua Journal - Personal dua recording
;; Halal - remembrance of Allah
(define-constant ERR-AUTH (err u401))
(define-constant ERR-NONE (err u404))
(define-data-var global-count uint u0)
(define-map duas uint { author: principal, text: (string-utf8 200), category: (string-ascii 20), answered: bool, block: uint })
(define-map user-dua-count principal uint)
(define-public (record-dua (text (string-utf8 200)) (category (string-ascii 20)))
  (let ((id (+ (var-get global-count) u1)) (prev (default-to u0 (map-get? user-dua-count tx-sender))))
    (map-set duas id { author: tx-sender, text: text, category: category, answered: false, block: stacks-block-height })
    (map-set user-dua-count tx-sender (+ prev u1))
    (var-set global-count id) (ok id)))
(define-public (mark-answered (id uint))
  (let ((d (unwrap! (map-get? duas id) ERR-NONE)))
    (asserts! (is-eq tx-sender (get author d)) ERR-AUTH)
    (map-set duas id (merge d { answered: true })) (ok true)))
(define-read-only (get-dua (id uint)) (map-get? duas id))
(define-read-only (get-user-count (who principal)) (ok (default-to u0 (map-get? user-dua-count who))))
(define-read-only (get-total) (ok (var-get global-count)))

Functions (5)

FunctionAccessArgs
record-duapublictext: (string-utf8 200
mark-answeredpublicid: uint
get-duaread-onlyid: uint
get-user-countread-onlywho: principal
get-totalread-only