Finish the migration.

This commit is contained in:
Dominik Pantůček 2023-04-09 20:39:59 +02:00
parent ced789ca06
commit 0d649c2fd0
4 changed files with 70 additions and 70 deletions

View file

@ -54,7 +54,7 @@
(chicken sort)
testing
util-list
dictionary
util-dict-list
primes
member-record
ansi
@ -71,25 +71,25 @@
(define (load-members dn . opts)
(let ((progress? (and (not (null? opts))
(car opts))))
(make-dict
(make-ldict
`((members
.
,(with-progress%
progress? "members"
(let* ((fss (load-members-dir dn))
(tot (sub1 (length (dict-keys fss))))
(mb0 (dict-map
(tot (sub1 (length (ldict-keys fss))))
(mb0 (ldict-map
(lambda (symfn symlinks prg)
(progress%-advance (/ prg tot))
(members-dir-load-member dn
symfn
symlinks))
fss))
(mb1 (dict-reduce (make-dict)
(mb1 (ldict-reduce (make-ldict)
(lambda (acc symfn mr)
(dict-set acc (dict-ref mr 'id) mr))
(ldict-set acc (ldict-ref mr 'id) mr))
mb0))
(mb (dict-reduce '()
(mb (ldict-reduce '()
(lambda (acc id mr)
(cons mr acc))
mb1)))
@ -97,7 +97,7 @@
;; Returns the internal members list
(define (members-base-members mb)
(dict-ref mb 'members))
(ldict-ref mb 'members))
;; Gets member based by generic predicate
(define (find-member-by-predicate mb pred)
@ -114,7 +114,7 @@
(find-member-by-predicate
mb
(lambda (mr)
(eq? (dict-ref mr 'id) id))))
(eq? (ldict-ref mr 'id) id))))
;; Returns member record found by id
(define (find-member-by-nick mb nick)
@ -122,8 +122,8 @@
mb
(lambda (mr)
(string-ci=?
(dict-ref
(dict-ref mr 'info)
(ldict-ref
(ldict-ref mr 'info)
'nick)
nick))))
@ -136,7 +136,7 @@
;; Returns all ids found in the database
(define (list-members-ids mb)
(map (lambda (mr) (dict-ref mr 'id))
(map (lambda (mr) (ldict-ref mr 'id))
(members-base-members mb)))
;; Returns a list of members which match given predicate.
@ -153,25 +153,25 @@
;; Returns all nicks found in the database
(define (list-members-nicks mb)
(map (lambda (mr) (dict-ref (dict-ref mr 'info) 'nick))
(map (lambda (mr) (ldict-ref (ldict-ref mr 'info) 'nick))
(members-base-members mb)))
;; Returns dictionary with statistics about the members base.
(define (members-base-info mb-arg)
(let* ((members (filter-members-by-predicate mb-arg member-record-usable?))
(di0 (make-dict))
(di1 (dict-set di0 'invalid
(di0 (make-ldict))
(di1 (ldict-set di0 'invalid
(filter (compose not is-4digit-prime? member-id) members)))
(di2 (dict-set di1 'active
(di2 (ldict-set di1 'active
(filter member-active? members)))
(di3 (dict-set di2 'suspended
(di3 (ldict-set di2 'suspended
(filter member-suspended? members)))
(di4 (dict-set di3 'students
(di4 (ldict-set di3 'students
(filter member-student? members)))
(di5 (dict-set di4 'destroyed
(di5 (ldict-set di4 'destroyed
(filter member-destroyed? members)))
(di6 (dict-set di5 'month (*current-month*)))
(di7 (dict-set di6 'total members)))
(di6 (ldict-set di5 'month (*current-month*)))
(di7 (ldict-set di6 'total members)))
di7))
(define (members-base-oldest-month mb)
@ -186,12 +186,12 @@
(if (month<? month (*current-month*))
(let ((bi (parameterize ((*current-month* month))
(members-base-info mb))))
(let kloop ((row (list (dict-ref bi 'month)))
(let kloop ((row (list (ldict-ref bi 'month)))
(keys (cdr keys)))
(if (null? keys)
(mloop (cons (reverse row) data)
(month-add month 1))
(kloop (cons (length (dict-ref bi (car keys))) row)
(kloop (cons (length (ldict-ref bi (car keys))) row)
(cdr keys)))))
(list keys (reverse data))))))
@ -213,7 +213,7 @@
;; Returns new members base with member records matching the
;; predicate processed by proc.
(define (members-base-update mb pred? proc)
(dict-set mb
(ldict-set mb
'members
(map (lambda (mr)
(if (pred? mr)
@ -223,13 +223,13 @@
;; Adds unpaired transaction to given members-base
(define (members-base-add-unpaired mb tr)
(dict-set mb 'unpaired
(ldict-set mb 'unpaired
(cons tr
(dict-ref mb 'unpaired '()))))
(ldict-ref mb 'unpaired '()))))
;; Returns known unpaired transactions
(define (members-base-unpaired mb)
(dict-ref mb 'unpaired '()))
(ldict-ref mb 'unpaired '()))
;; Returns the list of emails of all active members sorted
;; alphabetically