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

13 lines
32 KiB
HTML

<!DOCTYPE html>
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-width, initial-scale=0.8"/><title>Keystore</title><link rel="stylesheet" type="text/css" href="scribble.css" title="default"/><link rel="stylesheet" type="text/css" href="racket.css" title="default"/><link rel="stylesheet" type="text/css" href="manual-style.css" title="default"/><link rel="stylesheet" type="text/css" href="manual-racket.css" title="default"/><script type="text/javascript" src="scribble-common.js"></script><script type="text/javascript" src="manual-racket.js"></script></head><body id="scribble-racket-lang-org"><div class="tocset"><div class="tocview"><div class="tocviewlist tocviewlisttopspace"><div class="tocviewtitle"><table cellspacing="0" cellpadding="0"><tr><td style="width: 1em;"><a href="javascript:void(0);" title="Expand/Collapse" class="tocviewtoggle" onclick="TocviewToggle(this,&quot;tocview_0&quot;);">&#9658;</a></td><td></td><td><a href="" class="tocviewselflink" data-pltdoc="x">Keystore</a></td></tr></table></div><div class="tocviewsublistonly" style="display: none;" id="tocview_0"><table cellspacing="0" cellpadding="0"><tr><td align="right">1&nbsp;</td><td><a href="#%28part._.Overview%29" class="tocviewlink" data-pltdoc="x">Overview</a></td></tr><tr><td align="right">2&nbsp;</td><td><a href="#%28part._.Structure%29" class="tocviewlink" data-pltdoc="x">Structure</a></td></tr><tr><td align="right">3&nbsp;</td><td><a href="#%28part._.Opening%29" class="tocviewlink" data-pltdoc="x">Opening</a></td></tr><tr><td align="right">4&nbsp;</td><td><a href="#%28part._.Basic_.Operations%29" class="tocviewlink" data-pltdoc="x">Basic Operations</a></td></tr><tr><td align="right">5&nbsp;</td><td><a href="#%28part._.Enumeration%29" class="tocviewlink" data-pltdoc="x">Enumeration</a></td></tr><tr><td align="right">6&nbsp;</td><td><a href="#%28part._.Glob_.Queries%29" class="tocviewlink" data-pltdoc="x">Glob Queries</a></td></tr><tr><td align="right">7&nbsp;</td><td><a href="#%28part._.Raw_.Access%29" class="tocviewlink" data-pltdoc="x">Raw Access</a></td></tr><tr><td align="right">8&nbsp;</td><td><a href="#%28part._.Examples%29" class="tocviewlink" data-pltdoc="x">Examples</a></td></tr></table></div></div></div><div class="tocsub"><table class="tocsublist" cellspacing="0"><tr><td><span class="tocsublinknumber"></span><a href="#%28part._.Keystore%29" class="tocsubseclink" data-pltdoc="x">Keystore</a></td></tr><tr><td><span class="tocsublinknumber">1<span class="stt">&nbsp;</span></span><a href="#%28part._.Overview%29" class="tocsubseclink" data-pltdoc="x">Overview</a></td></tr><tr><td><span class="tocsublinknumber">2<span class="stt">&nbsp;</span></span><a href="#%28part._.Structure%29" class="tocsubseclink" data-pltdoc="x">Structure</a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._keystore%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">keystore</span></a></td></tr><tr><td><span class="tocsublinknumber">3<span class="stt">&nbsp;</span></span><a href="#%28part._.Opening%29" class="tocsubseclink" data-pltdoc="x">Opening</a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-open%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>open</span></a></td></tr><tr><td><span class="tocsublinknumber">4<span class="stt">&nbsp;</span></span><a href="#%28part._.Basic_.Operations%29" class="tocsubseclink" data-pltdoc="x">Basic Operations</a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-set%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>set!</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-get%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>get</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-exists~3f%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>exists?</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-drop%21%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>drop!</span></a></td></tr><tr><td><span class="tocsublinknumber">5<span class="stt">&nbsp;</span></span><a href="#%28part._.Enumeration%29" class="tocsubseclink" data-pltdoc="x">Enumeration</a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-keys%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>keys</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-key-values%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>key-<wbr></wbr>values</span></a></td></tr><tr><td><span class="tocsublinknumber">6<span class="stt">&nbsp;</span></span><a href="#%28part._.Glob_.Queries%29" class="tocsubseclink" data-pltdoc="x">Glob Queries</a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-keys-glob%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>keys-<wbr></wbr>glob</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-key-values-glob%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>key-<wbr></wbr>values-<wbr></wbr>glob</span></a></td></tr><tr><td><span class="tocsublinknumber">7<span class="stt">&nbsp;</span></span><a href="#%28part._.Raw_.Access%29" class="tocsubseclink" data-pltdoc="x">Raw Access</a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-keys-raw%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>keys-<wbr></wbr>raw</span></a></td></tr><tr><td><a href="#%28def._%28%28lib._keystore%2Fmain..rkt%29._ks-key-values-raw%29%29" class="tocsubnonseclink" data-pltdoc="x"><span class="RktSym">ks-<wbr></wbr>key-<wbr></wbr>values-<wbr></wbr>raw</span></a></td></tr><tr><td><span class="tocsublinknumber">8<span class="stt">&nbsp;</span></span><a href="#%28part._.Examples%29" class="tocsubseclink" data-pltdoc="x">Examples</a></td></tr><tr><td><span class="tocsublinknumber">8.1<span class="stt">&nbsp;</span></span><a href="#%28part._.Basic_.Usage%29" class="tocsubseclink" data-pltdoc="x">Basic Usage</a></td></tr><tr><td><span class="tocsublinknumber">8.2<span class="stt">&nbsp;</span></span><a href="#%28part._.Enumeration%29" class="tocsubseclink" data-pltdoc="x">Enumeration</a></td></tr><tr><td><span class="tocsublinknumber">8.3<span class="stt">&nbsp;</span></span><a href="#%28part._.Glob_.Query_.Example%29" class="tocsubseclink" data-pltdoc="x">Glob Query Example</a></td></tr></table></div></div><div class="maincolumn"><div class="main"><div class="versionbox"><span class="versionNoNav">9.1</span></div><section class="SsectionLevel1" id="section 0"><h1 class="heading"><a name="(part._.Keystore)"></a><a name="(mod-path._keystore)"></a>Keystore<span class="button-group"><a href="#(part._.Keystore)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h1><p><table cellspacing="0" cellpadding="0" class="defmodule"><tr><td align="left" colspan="2"><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym"><a href="file:///usr/share/doc/racket/reference/require.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" class="RktStxLink" data-pltdoc="x">require</a></span><span class="stt"> </span><a href="" class="RktModLink" data-pltdoc="x"><span class="RktSym">keystore</span></a><span class="RktPn">)</span></td></tr></table></p><p>A small persistent key&#8211;value store backed by SQLite. Keys and values
may be arbitrary Racket values and are stored using transparent
serialization.</p><section class="SsectionLevel2" id="section 1"><h2 class="heading">1<span class="stt">&nbsp;</span><a name="(part._.Overview)"></a>Overview<span class="button-group"><a href="#(part._.Overview)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p>The keystore provides persistent storage with automatic
serialization and deserialization. Keys are additionally stored in a
stringified lowercase form, which allows glob-style queries.</p></section><section class="SsectionLevel2" id="section 2"><h2 class="heading">2<span class="stt">&nbsp;</span><a name="(part._.Structure)"></a>Structure<span class="button-group"><a href="#(part._.Structure)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>struct</p></div></div><p class="RForeground"><span class="RktPn">(</span><span class="RktSym"><a href="file:///usr/share/doc/racket/reference/define-struct.html#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._struct%29%29" class="RktStxLink" data-pltdoc="x">struct</a></span><span class="stt"> </span><a name="(def._((lib._keystore/main..rkt)._keystore-dbh))"></a><a name="(def._((lib._keystore/main..rkt)._keystore-path))"></a><a name="(def._((lib._keystore/main..rkt)._keystore-file))"></a><a name="(def._((lib._keystore/main..rkt)._keystore~3f))"></a><a name="(def._((lib._keystore/main..rkt)._struct~3akeystore))"></a><a name="(def._((lib._keystore/main..rkt)._keystore))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">keystore</span></span></span><span class="stt"> </span><span class="RktPn">(</span><span class="RktSym">file</span><span class="stt"> </span><span class="RktSym">path</span><span class="stt"> </span><span class="RktSym">dbh</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">file</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">path</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">path?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktSym">dbh</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr></table></blockquote></div><div class="SIntrapara">Represents an open keystore. The <span class="RktSym">file</span> field contains the
original argument, <span class="RktSym">path</span> is the resolved database path, and
<span class="RktSym">dbh</span> is the SQLite connection.</div></p></section><section class="SsectionLevel2" id="section 3"><h2 class="heading">3<span class="stt">&nbsp;</span><a name="(part._.Opening)"></a>Opening<span class="button-group"><a href="#(part._.Opening)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-open))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-open</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">file</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">file</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">or/c</span><span class="hspace">&nbsp;</span><span class="RktSym">path?</span><span class="hspace">&nbsp;</span><span class="RktSym">string?</span><span class="hspace">&nbsp;</span><span class="RktSym">symbol?</span><span class="RktPn">)</span></td></tr></table></blockquote></div><div class="SIntrapara">Opens or creates a keystore. When <span class="RktVar">file</span> is a symbol, a cache
location is used; otherwise it is interpreted as a filesystem path.
The database schema is created automatically if it does not yet exist.</div></p></section><section class="SsectionLevel2" id="section 4"><h2 class="heading">4<span class="stt">&nbsp;</span><a name="(part._.Basic_.Operations)"></a>Basic Operations<span class="button-group"><a href="#(part._.Basic_.Operations)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-set!))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-set!</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span><span class="RktVar">key</span><span class="hspace">&nbsp;</span><span class="RktVar">value</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">boolean?</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">key</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">value</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr></table></blockquote></div><div class="SIntrapara">Stores <span class="RktVar">value</span> under <span class="RktVar">key</span>, replacing any existing value.
The function always returns <span class="RktVal">#t</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-get))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-get</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span><span class="RktVar">key</span><span class="hspace">&nbsp;</span><span class="RktVar">default</span><span class="hspace">&nbsp;</span><span class="RktMeta">...</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">key</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">default</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr></table></blockquote></div><div class="SIntrapara">Retrieves the value associated with <span class="RktVar">key</span>. If the key is not
present, the provided default value is returned when given; otherwise
the symbol <span class="RktVal">'</span><span class="RktVal">ks-nil</span> is returned.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-exists~3f))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-exists?</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span><span class="RktVar">key</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">boolean?</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">key</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns <span class="RktVal">#t</span> if the key exists, and <span class="RktVal">#f</span> otherwise.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-drop!))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-drop!</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span><span class="RktVar">key</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">boolean?</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">key</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">any/c</span></td></tr></table></blockquote></div><div class="SIntrapara">Removes the key from the store. The function always returns <span class="RktVal">#t</span>.</div></p></section><section class="SsectionLevel2" id="section 5"><h2 class="heading">5<span class="stt">&nbsp;</span><a name="(part._.Enumeration)"></a>Enumeration<span class="button-group"><a href="#(part._.Enumeration)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-keys))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-keys</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">listof</span><span class="hspace">&nbsp;</span><span class="RktSym">any/c</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns all keys in the store.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-key-values))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-key-values</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">listof</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">cons/c</span><span class="hspace">&nbsp;</span><span class="RktSym">any/c</span><span class="hspace">&nbsp;</span><span class="RktSym">any/c</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns all key&#8211;value pairs as cons cells.</div></p></section><section class="SsectionLevel2" id="section 6"><h2 class="heading">6<span class="stt">&nbsp;</span><a name="(part._.Glob_.Queries)"></a>Glob Queries<span class="button-group"><a href="#(part._.Glob_.Queries)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p>Glob queries operate on a lowercase string representation of keys.</p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-keys-glob))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-keys-glob</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span><span class="RktVar">pattern</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">listof</span><span class="hspace">&nbsp;</span><span class="RktSym">any/c</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">pattern</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">string?</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns all keys whose string form matches <span class="RktVar">pattern</span>.</div></p><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-key-values-glob))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-key-values-glob</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span><span class="RktVar">pattern</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">listof</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">cons/c</span><span class="hspace">&nbsp;</span><span class="RktSym">any/c</span><span class="hspace">&nbsp;</span><span class="RktSym">any/c</span><span class="RktPn">)</span><span class="RktPn">)</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">pattern</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">string?</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns key&#8211;value pairs whose keys match <span class="RktVar">pattern</span>.</div></p></section><section class="SsectionLevel2" id="section 7"><h2 class="heading">7<span class="stt">&nbsp;</span><a name="(part._.Raw_.Access)"></a>Raw Access<span class="button-group"><a href="#(part._.Raw_.Access)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-keys-raw))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-keys-raw</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">list?</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns raw key rows in the form:</div></p><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym">list</span><span class="hspace">&nbsp;</span><span class="RktSym">key-string</span><span class="hspace">&nbsp;</span><span class="RktSym">str-key</span><span class="RktPn">)</span></p></blockquote><p><div class="SIntrapara"><blockquote class="SVInsetFlow"><table cellspacing="0" cellpadding="0" class="boxed RBoxed"><tr><td><blockquote class="SubFlow"><div class="RBackgroundLabel SIEHidden"><div class="RBackgroundLabelInner"><p>procedure</p></div></div><p class="RForeground"><span class="RktPn">(</span><a name="(def._((lib._keystore/main..rkt)._ks-key-values-raw))"></a><span title="Provided from: keystore"><span class="RktSym"><span class="RktSymDef RktSym">ks-key-values-raw</span></span></span><span class="hspace">&nbsp;</span><span class="RktVar">ks</span><span class="RktPn">)</span><span class="hspace">&nbsp;</span>&rarr;<span class="hspace">&nbsp;</span><span class="RktSym">list?</span></p></blockquote></td></tr><tr><td><span class="hspace">&nbsp;&nbsp;</span><span class="RktVar">ks</span><span class="hspace">&nbsp;</span>:<span class="hspace">&nbsp;</span><span class="RktSym">keystore?</span></td></tr></table></blockquote></div><div class="SIntrapara">Returns raw key&#8211;value rows in the form:</div></p><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym">list</span><span class="hspace">&nbsp;</span><span class="RktSym">key-string</span><span class="hspace">&nbsp;</span><span class="RktSym">str-key</span><span class="hspace">&nbsp;</span><span class="RktSym">value-string</span><span class="RktPn">)</span></p></blockquote></section><section class="SsectionLevel2" id="section 8"><h2 class="heading">8<span class="stt">&nbsp;</span><a name="(part._.Examples)"></a>Examples<span class="button-group"><a href="#(part._.Examples)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h2><section class="SsectionLevel3" id="section 8.1"><h3 class="heading">8.1<span class="stt">&nbsp;</span><a name="(part._.Basic_.Usage)"></a>Basic Usage<span class="button-group"><a href="#(part._.Basic_.Usage)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h3><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym">define</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="hspace">&nbsp;</span><span class="RktPn">(</span><span class="RktSym">ks-open</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">demo</span><span class="RktPn">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym">ks-set!</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">a</span><span class="hspace">&nbsp;</span><span class="RktVal">42</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym">ks-set!</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="hspace">&nbsp;</span><span class="RktVal">"b"</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">(</span><span class="RktVal">1</span><span class="hspace">&nbsp;</span><span class="RktVal">2</span><span class="hspace">&nbsp;</span><span class="RktVal">3</span><span class="RktVal">)</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym">ks-get</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">a</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym">ks-get</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">missing</span><span class="RktPn">)</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym">ks-get</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="hspace">&nbsp;</span><span class="RktVal">'</span><span class="RktVal">missing</span><span class="hspace">&nbsp;</span><span class="RktVal">0</span><span class="RktPn">)</span></td></tr></table></blockquote></section><section class="SsectionLevel3" id="section 8.2"><h3 class="heading">8.2<span class="stt">&nbsp;</span><a name="(part._.Enumeration)"></a>Enumeration<span class="button-group"><a href="#(part._.Enumeration)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h3><blockquote class="SCodeFlow"><table cellspacing="0" cellpadding="0" class="RktBlk"><tr><td><span class="RktPn">(</span><span class="RktSym">ks-keys</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="RktPn">)</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="hspace">&nbsp;</span></td></tr><tr><td><span class="RktPn">(</span><span class="RktSym">ks-key-values</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="RktPn">)</span></td></tr></table></blockquote></section><section class="SsectionLevel3" id="section 8.3"><h3 class="heading">8.3<span class="stt">&nbsp;</span><a name="(part._.Glob_.Query_.Example)"></a>Glob Query Example<span class="button-group"><a href="#(part._.Glob_.Query_.Example)" class="heading-anchor" title="Link to here">🔗</a><span style="visibility: hidden"> </span></span></h3><blockquote class="SCodeFlow"><p><span class="RktPn">(</span><span class="RktSym">ks-keys-glob</span><span class="hspace">&nbsp;</span><span class="RktSym">ks</span><span class="hspace">&nbsp;</span><span class="RktVal">"*b*"</span><span class="RktPn">)</span></p></blockquote></section></section></section></div></div><div id="contextindicator">&nbsp;</div></body></html>