Use members list everywhere in members-base.

This commit is contained in:
Dominik Pantůček 2023-04-04 22:44:50 +02:00
parent 78164ecafe
commit f2874ebe5d

View file

@ -89,9 +89,13 @@
mb1))) mb1)))
mb))))))) mb)))))))
;; Returns the internal members list
(define (members-base-members mb)
(dict-ref mb 'members))
;; Gets member based by generic predicate ;; Gets member based by generic predicate
(define (find-member-by-predicate mb pred) (define (find-member-by-predicate mb pred)
(let loop ((mdb mb)) (let loop ((mdb (members-base-members mb)))
(if (null? mdb) (if (null? mdb)
#f #f
(let ((mr (car mdb))) (let ((mr (car mdb)))
@ -126,11 +130,12 @@
;; Returns all ids found in the database ;; Returns all ids found in the database
(define (list-members-ids mb) (define (list-members-ids mb)
(map (lambda (mr) (dict-ref mr 'id)) mb)) (map (lambda (mr) (dict-ref mr 'id))
(members-base-members mb)))
;; Returns a list of members which match given predicate. ;; Returns a list of members which match given predicate.
(define (filter-members-by-predicate mb pred) (define (filter-members-by-predicate mb pred)
(let loop ((mb mb) (let loop ((mb (members-base-members mb))
(res '())) (res '()))
(if (null? mb) (if (null? mb)
res res
@ -142,25 +147,25 @@
;; Returns all nicks found in the database ;; Returns all nicks found in the database
(define (list-members-nicks mb) (define (list-members-nicks mb)
(map (lambda (mr) (dict-ref (dict-ref mr 'info) 'nick)) mb)) (map (lambda (mr) (dict-ref (dict-ref mr 'info) 'nick))
(members-base-members mb)))
;; Returns dictionary with statistics about the members base. ;; Returns dictionary with statistics about the members base.
(define (members-base-info mb-arg) (define (members-base-info mb-arg)
(let* ((mb (filter-members-by-predicate mb-arg member-record-usable?)) (let* ((members (filter-members-by-predicate mb-arg member-record-usable?))
(di0 (make-dict)) (di0 (make-dict))
(di1 (dict-set di0 'invalid (di1 (dict-set di0 'invalid
(filter-members-by-predicate mb (filter (compose not is-4digit-prime? member-id) members)))
(compose not is-4digit-prime? member-id))))
(di2 (dict-set di1 'active (di2 (dict-set di1 'active
(filter-members-by-predicate mb member-active?))) (filter member-active? members)))
(di3 (dict-set di2 'suspended (di3 (dict-set di2 'suspended
(filter-members-by-predicate mb member-suspended?))) (filter member-suspended? members)))
(di4 (dict-set di3 'students (di4 (dict-set di3 'students
(filter-members-by-predicate mb member-student?))) (filter member-student? members)))
(di5 (dict-set di4 'destroyed (di5 (dict-set di4 'destroyed
(filter-members-by-predicate mb member-destroyed?))) (filter member-destroyed? members)))
(di6 (dict-set di5 'month (*current-month*))) (di6 (dict-set di5 'month (*current-month*)))
(di7 (dict-set di6 'total mb))) (di7 (dict-set di6 'total members)))
di7)) di7))
(define (members-base-oldest-month mb) (define (members-base-oldest-month mb)