Prepare stats infrastructure.

This commit is contained in:
Dominik Pantůček 2023-03-19 18:30:09 +01:00
parent 15926d124e
commit cd2a08e2ec
2 changed files with 30 additions and 5 deletions

View file

@ -260,17 +260,34 @@
(member-nick mr)))
mrs))))
;; Returns dictionary with statistics about the members base.
(define (members-base-info mb)
(let* ((di0 (make-dict))
(di1 (dict-set di0 'invalid
(filter-members-by-predicate mb
(compose not is-4digit-prime? member-id))))
(di2 (dict-set di1 'active
(filter-members-by-predicate mb member-active?)))
(di3 (dict-set di2 'suspended
(filter-members-by-predicate mb member-suspended?)))
(di4 (dict-set di3 'students
(filter-members-by-predicate mb member-student?)))
(di5 (dict-set di4 'destroyed
(filter-members-by-predicate mb member-destroyed?))))
di5))
;; Basic information about members-base in human-readable form.
(define (print-members-base-info mb)
(let ((nicks (list-members-nicks mb))
(ids (list-members-ids mb)))
(print "Known members: "
(length nicks))
(let ((invalid-mrs (filter-members-by-predicate mb (compose not is-4digit-prime? member-id)))
(active-mrs (filter-members-by-predicate mb member-active?))
(suspended-mrs (filter-members-by-predicate mb member-suspended?))
(destroyed-mrs (filter-members-by-predicate mb member-destroyed?))
(student-mrs (filter-members-by-predicate mb member-student?)))
(let* ((bi (members-base-info mb))
(invalid-mrs (dict-ref bi 'invalid))
(active-mrs (dict-ref bi 'active))
(suspended-mrs (dict-ref bi 'suspended))
(destroyed-mrs (dict-ref bi 'destroyed))
(student-mrs (dict-ref bi 'students)))
(print a:success " Active (" (length active-mrs) "): " a:default
(member-records->nicks-string active-mrs))
(print a:warning " Suspended (" (length suspended-mrs) "): " a:default