Load members, find them by id or nick.
This commit is contained in:
parent
a38992edf7
commit
dbb7ab7fd8
2 changed files with 62 additions and 18 deletions
|
@ -29,6 +29,10 @@
|
|||
members-base
|
||||
(
|
||||
load-members
|
||||
find-member-by-id
|
||||
find-member-by-nick
|
||||
list-members-ids
|
||||
list-members-nicks
|
||||
members-base-tests!
|
||||
)
|
||||
|
||||
|
@ -162,32 +166,60 @@
|
|||
(files+symlinks->files-dictionary
|
||||
(get-files+symlinks dn))))
|
||||
(mb0 (dict-map
|
||||
(lambda (symfn symlinks)
|
||||
(when progress?
|
||||
(display "."))
|
||||
(members-base-load-member dn
|
||||
symfn
|
||||
symlinks))
|
||||
fss))
|
||||
(mb (dict-reduce (make-dict)
|
||||
(lambda (acc symfn mr)
|
||||
(dict-set acc (dict-ref mr 'id) mr))
|
||||
mb0)))
|
||||
(lambda (symfn symlinks)
|
||||
(when progress?
|
||||
(display "."))
|
||||
(members-base-load-member dn
|
||||
symfn
|
||||
symlinks))
|
||||
fss))
|
||||
(mb1 (dict-reduce (make-dict)
|
||||
(lambda (acc symfn mr)
|
||||
(dict-set acc (dict-ref mr 'id) mr))
|
||||
mb0))
|
||||
(mb (dict-reduce '()
|
||||
(lambda (acc id mr)
|
||||
(cons mr acc))
|
||||
mb1)))
|
||||
(when progress?
|
||||
(print " ok."))
|
||||
mb)))
|
||||
|
||||
;; Gets member based by generic predicate
|
||||
(define (find-member-by-predicate mb pred)
|
||||
(let loop ((mdb mb))
|
||||
(if (null? mdb)
|
||||
#f
|
||||
(let ((mr (car mdb)))
|
||||
(if (pred mr)
|
||||
mr
|
||||
(loop (cdr mdb)))))))
|
||||
|
||||
;; Returns member record found by id
|
||||
(define (find-member-by-id mb id)
|
||||
#f)
|
||||
(find-member-by-predicate
|
||||
mb
|
||||
(lambda (mr)
|
||||
(eq? (dict-ref mr 'id) id))))
|
||||
|
||||
;; Returns member record found by id
|
||||
(define (find-member-by-nick mb nick)
|
||||
#f)
|
||||
(find-member-by-predicate
|
||||
mb
|
||||
(lambda (mr)
|
||||
(equal?
|
||||
(dict-ref
|
||||
(dict-ref mr 'info)
|
||||
'nick)
|
||||
nick))))
|
||||
|
||||
;; Returns all ids found in the database
|
||||
(define (list-members-ids mb)
|
||||
#f)
|
||||
(map (lambda (mr) (dict-ref mr 'id)) mb))
|
||||
|
||||
;; Returns all nicks found in the database
|
||||
(define (list-members-nicks mb)
|
||||
#f)
|
||||
(map (lambda (mr) (dict-ref (dict-ref mr 'info) 'nick)) mb))
|
||||
|
||||
;; Performs self-tests of this module.
|
||||
(define (members-base-tests!)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue