Find members by various means.

This commit is contained in:
Dominik Pantůček 2023-03-11 21:28:55 +01:00
parent ba37d9019c
commit 77fd6cb53d

View file

@ -440,26 +440,37 @@
(expand-members-raw-index (expand-members-raw-index
(load-members-raw-index)))) (load-members-raw-index))))
;; Gets member record by member key ;; Gets member based by generic predicate
(define (find-member-by-key mdb key val) (define (find-member-by-predicate mdb pred)
(let loop ((mdb mdb)) (let loop ((mdb mdb))
(if (null? mdb) (if (null? mdb)
#f #f
(let ((mr (car mdb))) (let ((mr (car mdb)))
(if (equal? (dict-ref mr key) val) (if (pred mr)
mr mr
(loop (cdr mdb))))))) (loop (cdr mdb)))))))
;; Gets member record by member key
(define (find-member-by-key mdb key val)
(find-member-by-predicate
mdb
(lambda (mr)
(equal? (dict-ref mr key) val))))
;; Gets member record by member id (from file/symlink) ;; Gets member record by member id (from file/symlink)
(define (find-member-by-id mdb id) (define (find-member-by-id mdb id)
(find-member-by-key mdb 'id id)) (find-member-by-key mdb 'id id))
;; Gets member record by member name (from file/symlink) ;; Gets member record by member name (from file/symlink)
(define (find-member-by-fname mb fname) (define (find-member-by-fname mdb fname)
(find-member-by-key mdb 'name fname)) (find-member-by-key mdb 'name fname))
(define (find-member-by-nick mb nick) ;; Gets member record by member nick in member file the key 'nick
#f) (define (find-member-by-nick mdb nick)
(find-member-by-predicate
mdb
(lambda (mr)
(equal? (dict-ref (dict-ref mr 'info) 'nick) nick))))
(define (list-members-ids mdb) (define (list-members-ids mdb)
#f) #f)
@ -487,7 +498,7 @@
;; Perform requested action ;; Perform requested action
(display "Loading members ") (display "Loading members ")
(define mdb (load-members)) (define MDB (load-members))
(print " ok.") (print " ok.")
(newline) (newline)
@ -495,5 +506,6 @@
; (print (load-member-file "trimen")) ; (print (load-member-file "trimen"))
(print (find-member-by-id mdb 2803)) (print (find-member-by-id MDB 2803))
(print (find-member-by-fname mdb "joe")) (print (find-member-by-fname MDB "joe"))
(print (find-member-by-nick MDB "joe"))