Files
keystore/scrbl/class.scrbl
2026-04-17 16:33:13 +02:00

108 lines
2.2 KiB
Racket
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#lang scribble/manual
@(require (for-label racket/base
racket/class
"../keystore.rkt"
"../class.rkt"))
@title{Keystore Class}
@defmodule[keystore/class]
An object-oriented wrapper around @racketmodname[keystore]. It provides
a small class interface to the persistent keyvalue store.
@defclass[keystore% object% ()]{
A keystore class backed by SQLite.
@defconstructor[([file (or/c path? string? symbol?)])]{
Opens or creates a keystore using @racket[file]. The meaning of
@racket[file] is the same as for @racket[ks-open].
}
@defmethod[(handle) keystore?]{
Returns the underlying keystore handle.
}
@defmethod[(set! [key any/c] [value any/c]) (is-a?/c keystore%)]{
Stores @racket[value] under @racket[key]. Returns the object itself,
so method calls may be nested.
}
@defmethod[(get [key any/c] [default any/c] ...) any/c]{
Retrieves the value associated with @racket[key]. If no value is found,
the optional default is returned; otherwise @racket['ks-nil] is returned.
}
@defmethod[(drop! [key any/c]) (is-a?/c keystore%)]{
Removes @racket[key] from the store and returns the object itself.
}
@defmethod[(exists? [key any/c]) boolean?]{
Returns @racket[#t] if @racket[key] exists, and @racket[#f] otherwise.
}
@defmethod[(glob [pattern string?]) (listof any/c)]{
Returns keys matching @racket[pattern].
}
@defmethod[(glob-kv [pattern string?]) (listof (cons/c any/c any/c))]{
Returns keyvalue pairs matching @racket[pattern].
}
@defmethod[(keys-glob [pattern string?]) (listof any/c)]{
Alias for @racket[glob].
}
@defmethod[(keys) (listof any/c)]{
Returns all keys.
}
@defmethod[(key-values) (listof (cons/c any/c any/c))]{
Returns all keyvalue pairs.
}
}
@section{Examples}
@subsection{Basic Usage}
@racketblock[
(define ks (new keystore% [file 'demo]))
(send ks set! 'a 42)
(send ks set! "b" '(1 2 3))
(send ks get 'a) ; => 42
(send ks get 'missing) ; => 'ks-nil
(send ks get 'missing 0) ; => 0
]
@subsection{Nested Calls}
@racketblock[
(define ks (new keystore% [file 'demo]))
(send (send (send ks set! 'a 1)
set! 'b 2)
drop! 'a)
]
@subsection{Glob Queries}
@racketblock[
(send ks glob "*b*")
(send ks glob-kv "*b*")
]