From f2874ebe5d88b1925d6ae3408c0212b3106bdfa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 4 Apr 2023 22:44:50 +0200 Subject: [PATCH] Use members list everywhere in members-base. --- src/members-base.scm | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/members-base.scm b/src/members-base.scm index 64b10b0..754ed53 100644 --- a/src/members-base.scm +++ b/src/members-base.scm @@ -89,9 +89,13 @@ mb1))) mb))))))) + ;; Returns the internal members list + (define (members-base-members mb) + (dict-ref mb 'members)) + ;; Gets member based by generic predicate (define (find-member-by-predicate mb pred) - (let loop ((mdb mb)) + (let loop ((mdb (members-base-members mb))) (if (null? mdb) #f (let ((mr (car mdb))) @@ -126,11 +130,12 @@ ;; Returns all ids found in the database (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. (define (filter-members-by-predicate mb pred) - (let loop ((mb mb) + (let loop ((mb (members-base-members mb)) (res '())) (if (null? mb) res @@ -142,25 +147,25 @@ ;; Returns all nicks found in the database (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. (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)) (di1 (dict-set di0 'invalid - (filter-members-by-predicate mb - (compose not is-4digit-prime? member-id)))) + (filter (compose not is-4digit-prime? member-id) members))) (di2 (dict-set di1 'active - (filter-members-by-predicate mb member-active?))) + (filter member-active? members))) (di3 (dict-set di2 'suspended - (filter-members-by-predicate mb member-suspended?))) + (filter member-suspended? members))) (di4 (dict-set di3 'students - (filter-members-by-predicate mb member-student?))) + (filter member-student? members))) (di5 (dict-set di4 'destroyed - (filter-members-by-predicate mb member-destroyed?))) + (filter member-destroyed? members))) (di6 (dict-set di5 'month (*current-month*))) - (di7 (dict-set di6 'total mb))) + (di7 (dict-set di6 'total members))) di7)) (define (members-base-oldest-month mb)