Basic stats.

This commit is contained in:
Dominik Pantůček 2023-03-19 19:23:37 +01:00
parent ed6d9913de
commit e472292232
3 changed files with 11 additions and 2 deletions

View file

@ -101,6 +101,7 @@
(print-members-base-info MB)) (print-members-base-info MB))
(newline)) (newline))
((print-stats) ((print-stats)
(newline)
(print-members-base-stats (print-members-base-stats
(members-base-stats MB))) (members-base-stats MB)))
) )

View file

@ -36,6 +36,7 @@
member-student? member-student?
member-nick member-nick
member-id member-id
member-existing?
member-record-tests! member-record-tests!
) )
@ -129,6 +130,12 @@
(define (member-id mr) (define (member-id mr)
(mr-ref mr 'id)) (mr-ref mr 'id))
;; Returns true if the member has joined.
(define (member-existing? mr)
(let ((joined (mr-ref mr 'joined)))
(and joined
(month<? joined (*current-month*)))))
;; Performs module self-tests. ;; Performs module self-tests.
(define (member-record-tests!) (define (member-record-tests!)
(run-tests (run-tests

View file

@ -284,8 +284,9 @@
;; Returns a list two lists: keys, data. ;; Returns a list two lists: keys, data.
;; Each data record contains values for all keys. ;; Each data record contains values for all keys.
(define (members-base-stats mb) (define (members-base-stats mb-arg)
(let ((keys '(month total active suspended students destroyed invalid))) (let ((keys '(month total active suspended students destroyed invalid))
(mb (filter-members-by-predicate mb-arg member-existing?)))
(let mloop ((data '()) (let mloop ((data '())
(month (*member-default-joined*))) (month (*member-default-joined*)))
(if (month<? month (*current-month*)) (if (month<? month (*current-month*))