Current section

Files

Jump to
reckon_db assets khepri_paths.svg
Raw

assets/khepri_paths.svg

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 520">
<defs>
<linearGradient id="rootGradPath" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea"/>
<stop offset="100%" style="stop-color:#764ba2"/>
</linearGradient>
<linearGradient id="streamGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#4299e1"/>
<stop offset="100%" style="stop-color:#3182ce"/>
</linearGradient>
<linearGradient id="snapGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#48bb78"/>
<stop offset="100%" style="stop-color:#38a169"/>
</linearGradient>
<linearGradient id="subGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#f6ad55"/>
<stop offset="100%" style="stop-color:#ed8936"/>
</linearGradient>
<linearGradient id="schemaGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#9f7aea"/>
<stop offset="100%" style="stop-color:#805ad5"/>
</linearGradient>
</defs>
<!-- Background -->
<rect width="800" height="520" fill="#f7fafc"/>
<!-- Title -->
<text x="400" y="30" text-anchor="middle" font-family="system-ui, sans-serif" font-size="18" font-weight="bold" fill="#2d3748">Khepri Storage Paths</text>
<!-- Root Node -->
<rect x="350" y="50" width="100" height="40" rx="8" fill="url(#rootGradPath)" stroke="#5a67d8" stroke-width="2"/>
<text x="400" y="75" text-anchor="middle" font-family="monospace" font-size="12" fill="white">[root]</text>
<!-- Level 1 branches -->
<!-- Streams -->
<line x1="400" y1="90" x2="100" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="30" y="130" width="140" height="35" rx="6" fill="url(#streamGrad)" stroke="#2b6cb0" stroke-width="2"/>
<text x="100" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[streams]</text>
<!-- Snapshots -->
<line x1="400" y1="90" x2="260" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="190" y="130" width="140" height="35" rx="6" fill="url(#snapGrad)" stroke="#276749" stroke-width="2"/>
<text x="260" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[snapshots]</text>
<!-- Subscriptions -->
<line x1="400" y1="90" x2="420" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="350" y="130" width="140" height="35" rx="6" fill="url(#subGrad)" stroke="#dd6b20" stroke-width="2"/>
<text x="420" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[subscriptions]</text>
<!-- Schemas -->
<line x1="400" y1="90" x2="580" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="510" y="130" width="140" height="35" rx="6" fill="url(#schemaGrad)" stroke="#6b46c1" stroke-width="2"/>
<text x="580" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[schemas]</text>
<!-- Links -->
<line x1="400" y1="90" x2="720" y2="130" stroke="#4a5568" stroke-width="2"/>
<rect x="660" y="130" width="100" height="35" rx="6" fill="#fc8181" stroke="#c53030" stroke-width="2"/>
<text x="710" y="152" text-anchor="middle" font-family="monospace" font-size="11" fill="white">[links]</text>
<!-- Streams Subtree -->
<line x1="100" y1="165" x2="100" y2="195" stroke="#4299e1" stroke-width="1"/>
<rect x="30" y="195" width="140" height="30" rx="4" fill="#ebf8ff" stroke="#90cdf4" stroke-width="1"/>
<text x="100" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#2b6cb0">[StreamId]</text>
<line x1="100" y1="225" x2="100" y2="250" stroke="#4299e1" stroke-width="1"/>
<rect x="30" y="250" width="140" height="30" rx="4" fill="#ebf8ff" stroke="#90cdf4" stroke-width="1"/>
<text x="100" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#2b6cb0">[PaddedVersion]</text>
<line x1="100" y1="280" x2="100" y2="305" stroke="#4299e1" stroke-width="1"/>
<rect x="30" y="305" width="140" height="40" rx="4" fill="white" stroke="#4299e1" stroke-width="1"/>
<text x="100" y="325" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">#event{}</text>
<text x="100" y="340" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Event record</text>
<!-- Snapshots Subtree -->
<line x1="260" y1="165" x2="260" y2="195" stroke="#48bb78" stroke-width="1"/>
<rect x="190" y="195" width="140" height="30" rx="4" fill="#f0fff4" stroke="#9ae6b4" stroke-width="1"/>
<text x="260" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#276749">[StreamId]</text>
<line x1="260" y1="225" x2="260" y2="250" stroke="#48bb78" stroke-width="1"/>
<rect x="190" y="250" width="140" height="30" rx="4" fill="#f0fff4" stroke="#9ae6b4" stroke-width="1"/>
<text x="260" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#276749">[PaddedVersion]</text>
<line x1="260" y1="280" x2="260" y2="305" stroke="#48bb78" stroke-width="1"/>
<rect x="190" y="305" width="140" height="40" rx="4" fill="white" stroke="#48bb78" stroke-width="1"/>
<text x="260" y="325" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">#snapshot{}</text>
<text x="260" y="340" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Snapshot record</text>
<!-- Subscriptions Subtree -->
<line x1="420" y1="165" x2="420" y2="195" stroke="#ed8936" stroke-width="1"/>
<rect x="350" y="195" width="140" height="30" rx="4" fill="#feebc8" stroke="#f6ad55" stroke-width="1"/>
<text x="420" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#c05621">[SubName]</text>
<line x1="420" y1="225" x2="420" y2="250" stroke="#ed8936" stroke-width="1"/>
<rect x="350" y="250" width="140" height="40" rx="4" fill="white" stroke="#ed8936" stroke-width="1"/>
<text x="420" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">#subscription{}</text>
<text x="420" y="285" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Subscription record</text>
<!-- Schemas Subtree -->
<line x1="580" y1="165" x2="580" y2="195" stroke="#9f7aea" stroke-width="1"/>
<rect x="510" y="195" width="140" height="30" rx="4" fill="#faf5ff" stroke="#d6bcfa" stroke-width="1"/>
<text x="580" y="215" text-anchor="middle" font-family="monospace" font-size="9" fill="#6b46c1">[StoreId]</text>
<line x1="580" y1="225" x2="580" y2="250" stroke="#9f7aea" stroke-width="1"/>
<rect x="510" y="250" width="140" height="30" rx="4" fill="#faf5ff" stroke="#d6bcfa" stroke-width="1"/>
<text x="580" y="270" text-anchor="middle" font-family="monospace" font-size="9" fill="#6b46c1">[EventType]</text>
<line x1="580" y1="280" x2="580" y2="305" stroke="#9f7aea" stroke-width="1"/>
<rect x="510" y="305" width="140" height="40" rx="4" fill="white" stroke="#9f7aea" stroke-width="1"/>
<text x="580" y="325" text-anchor="middle" font-family="monospace" font-size="9" fill="#2d3748">schema_map()</text>
<text x="580" y="340" text-anchor="middle" font-family="system-ui, sans-serif" font-size="8" fill="#718096">Schema definition</text>
<!-- Example Path Box -->
<rect x="50" y="370" width="700" height="130" rx="10" fill="#edf2f7" stroke="#cbd5e0" stroke-width="1"/>
<text x="400" y="395" text-anchor="middle" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" fill="#2d3748">Example Paths</text>
<!-- Examples -->
<text x="70" y="425" font-family="monospace" font-size="10" fill="#4299e1">[streams, "orders-123", "000000000042"]</text>
<text x="450" y="425" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Event at version 42</text>
<text x="70" y="450" font-family="monospace" font-size="10" fill="#48bb78">[snapshots, "orders-123", "000000000100"]</text>
<text x="450" y="450" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Snapshot at version 100</text>
<text x="70" y="475" font-family="monospace" font-size="10" fill="#ed8936">[subscriptions, "my-projection"]</text>
<text x="450" y="475" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Subscription config</text>
<text x="70" y="500" font-family="monospace" font-size="10" fill="#9f7aea">[schemas, my_store, "OrderPlaced"]</text>
<text x="450" y="500" font-family="system-ui, sans-serif" font-size="10" fill="#718096">→ Schema for OrderPlaced</text>
</svg>