<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 --> <h2 id="code-examples" class="position-relative d-flex align-items-center group"> <span>Code Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="code-examples" aria-haspopup="dialog" aria-label="Share link: Code Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Code examples provide immediate, practical demonstrations of Geode features through working code snippets. Unlike tutorials that explain concepts step-by-step, examples show you exactly how to accomplish specific tasks with copy-paste-ready code in Python, Go, Rust, and Zig.</p> <h3 id="why-code-examples-matter" class="position-relative d-flex align-items-center group"> <span>Why Code Examples Matter</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="why-code-examples-matter" aria-haspopup="dialog" aria-label="Share link: Why Code Examples Matter"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p><strong>Immediate Understanding</strong>: See how a feature works in seconds rather than reading lengthy explanations. Examples answer &ldquo;show me how&rdquo; more effectively than prose descriptions.</p> <p><strong>Language-Specific Patterns</strong>: Each language has idiomatic approaches to database integration. Examples demonstrate best practices for your preferred ecosystem—async/await in Python, database/sql in Go, tokio in Rust, or manual memory management in Zig.</p> <p><strong>Real-World Context</strong>: Examples use realistic scenarios—user authentication, product recommendations, social graphs, fraud detection—helping you understand how features apply to actual problems.</p> <p><strong>Executable Code</strong>: Every example is tested and runnable. Copy the code into your project and it works, accelerating development from prototype to production.</p> <h3 id="example-categories" class="position-relative d-flex align-items-center group"> <span>Example Categories</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="example-categories" aria-haspopup="dialog" aria-label="Share link: Example Categories"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="basic-crud-operations" class="position-relative d-flex align-items-center group"> <span>Basic CRUD Operations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="basic-crud-operations" aria-haspopup="dialog" aria-label="Share link: Basic CRUD Operations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Creating Nodes</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Create a user node</span> </span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&#34;localhost&#34;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">3141</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (u:User { </span></span></span><span class="line"><span class="cl"><span class="s2"> id: $id, </span></span></span><span class="line"><span class="cl"><span class="s2"> name: $name, </span></span></span><span class="line"><span class="cl"><span class="s2"> email: $email, </span></span></span><span class="line"><span class="cl"><span class="s2"> created_at: $timestamp </span></span></span><span class="line"><span class="cl"><span class="s2"> }) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN u </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="s2">&#34;user123&#34;</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&#34;Alice&#34;</span><span class="p">,</span> <span class="n">email</span><span class="o">=</span><span class="s2">&#34;[email protected]&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">timestamp</span><span class="o">=</span><span class="s2">&#34;2025-01-24T10:00:00Z&#34;</span><span class="p">)</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Go: Create a product node </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">db</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Open</span><span class="p">(</span><span class="s">&#34;geode&#34;</span><span class="p">,</span> <span class="s">&#34;quic://localhost:3141&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="nx">result</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">db</span><span class="p">.</span><span class="nf">Exec</span><span class="p">(</span><span class="s">` </span></span></span><span class="line"><span class="cl"><span class="s"> CREATE (p:Product { </span></span></span><span class="line"><span class="cl"><span class="s"> id: $id, </span></span></span><span class="line"><span class="cl"><span class="s"> name: $name, </span></span></span><span class="line"><span class="cl"><span class="s"> price: $price, </span></span></span><span class="line"><span class="cl"><span class="s"> in_stock: $stock </span></span></span><span class="line"><span class="cl"><span class="s"> }) </span></span></span><span class="line"><span class="cl"><span class="s">`</span><span class="p">,</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;id&#34;</span><span class="p">,</span> <span class="s">&#34;prod456&#34;</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;name&#34;</span><span class="p">,</span> <span class="s">&#34;Widget&#34;</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;price&#34;</span><span class="p">,</span> <span class="mf">29.99</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;stock&#34;</span><span class="p">,</span> <span class="kc">true</span><span class="p">))</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-rust" data-lang="rust"><span class="line"><span class="cl"><span class="c1">// Rust: Create a post node </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">let</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Client</span>::<span class="n">connect</span><span class="p">(</span><span class="s">&#34;localhost:3141&#34;</span><span class="p">).</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">client</span><span class="p">.</span><span class="n">execute</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;CREATE (p:Post {id: $id, title: $title, content: $content})&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="fm">params!</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;id&#34;</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s">&#34;post789&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;title&#34;</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s">&#34;Hello Graph&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;content&#34;</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s">&#34;Learning Geode is fun!&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">).</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Reading Nodes</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Find user by email</span> </span></span><span class="line"><span class="cl"><span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;MATCH (u:User {email: $email}) RETURN u&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">email</span><span class="o">=</span><span class="s2">&#34;[email protected]&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="n">user</span> <span class="o">=</span> <span class="k">await</span> <span class="n">result</span><span class="o">.</span><span class="n">first</span><span class="p">()</span> </span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Found user: </span><span class="si">{</span><span class="n">user</span><span class="p">[</span><span class="s1">&#39;u&#39;</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span> </span></span></code></pre></div><p><strong>Updating Properties</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Update user&#39;s last login time</span> </span></span><span class="line"><span class="cl"><span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User {id: $user_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> SET u.last_login = $timestamp </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">,</span> <span class="n">user_id</span><span class="o">=</span><span class="s2">&#34;user123&#34;</span><span class="p">,</span> <span class="n">timestamp</span><span class="o">=</span><span class="s2">&#34;2025-01-24T15:30:00Z&#34;</span><span class="p">)</span> </span></span></code></pre></div><p><strong>Deleting Nodes</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Delete a product and its relationships</span> </span></span><span class="line"><span class="cl"><span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (p:Product {id: $product_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> DETACH DELETE p </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">,</span> <span class="n">product_id</span><span class="o">=</span><span class="s2">&#34;prod456&#34;</span><span class="p">)</span> </span></span></code></pre></div> <h4 id="relationship-examples" class="position-relative d-flex align-items-center group"> <span>Relationship Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="relationship-examples" aria-haspopup="dialog" aria-label="Share link: Relationship Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Creating Relationships</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: User follows another user</span> </span></span><span class="line"><span class="cl"><span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (a:User {id: $follower_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (b:User {id: $followee_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (a)-[:FOLLOWS {since: $timestamp}]-&gt;(b) </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">,</span> <span class="n">follower_id</span><span class="o">=</span><span class="s2">&#34;user123&#34;</span><span class="p">,</span> <span class="n">followee_id</span><span class="o">=</span><span class="s2">&#34;user456&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">timestamp</span><span class="o">=</span><span class="s2">&#34;2025-01-24T10:00:00Z&#34;</span><span class="p">)</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Go: User purchases product </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">db</span><span class="p">.</span><span class="nf">Exec</span><span class="p">(</span><span class="s">` </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (u:User {id: $user_id}) </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (p:Product {id: $product_id}) </span></span></span><span class="line"><span class="cl"><span class="s"> CREATE (u)-[:PURCHASED { </span></span></span><span class="line"><span class="cl"><span class="s"> at: $timestamp, </span></span></span><span class="line"><span class="cl"><span class="s"> quantity: $qty, </span></span></span><span class="line"><span class="cl"><span class="s"> total: $total </span></span></span><span class="line"><span class="cl"><span class="s"> }]-&gt;(p) </span></span></span><span class="line"><span class="cl"><span class="s">`</span><span class="p">,</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;user_id&#34;</span><span class="p">,</span> <span class="s">&#34;user123&#34;</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;product_id&#34;</span><span class="p">,</span> <span class="s">&#34;prod456&#34;</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;timestamp&#34;</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Now</span><span class="p">()),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;qty&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;total&#34;</span><span class="p">,</span> <span class="mf">59.98</span><span class="p">))</span> </span></span></code></pre></div><p><strong>Querying Relationships</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Find all products a user purchased</span> </span></span><span class="line"><span class="cl"><span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User {id: $user_id})-[r:PURCHASED]-&gt;(p:Product) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN p.name, r.quantity, r.total, r.at </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY r.at DESC </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">,</span> <span class="n">user_id</span><span class="o">=</span><span class="s2">&#34;user123&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;</span><span class="si">{</span><span class="n">row</span><span class="p">[</span><span class="s1">&#39;p.name&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">row</span><span class="p">[</span><span class="s1">&#39;r.quantity&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> @ $</span><span class="si">{</span><span class="n">row</span><span class="p">[</span><span class="s1">&#39;r.total&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span> </span></span></code></pre></div> <h4 id="pattern-matching-examples" class="position-relative d-flex align-items-center group"> <span>Pattern Matching Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="pattern-matching-examples" aria-haspopup="dialog" aria-label="Share link: Pattern Matching Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Multi-Hop Traversals</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Friends of friends (2 degrees of separation)</span> </span></span><span class="line"><span class="cl"><span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (me:User {id: $my_id})-[:FRIENDS*2]-&gt;(friend_of_friend) </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE NOT EXISTS { </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (me)-[:FRIENDS]-&gt;(friend_of_friend) </span></span></span><span class="line"><span class="cl"><span class="s2"> } </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN DISTINCT friend_of_friend.name, friend_of_friend.email </span></span></span><span class="line"><span class="cl"><span class="s2"> LIMIT 10 </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">,</span> <span class="n">my_id</span><span class="o">=</span><span class="s2">&#34;user123&#34;</span><span class="p">)</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-rust" data-lang="rust"><span class="line"><span class="cl"><span class="c1">// Rust: Product recommendation via similarity </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">let</span><span class="w"> </span><span class="n">results</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">execute</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="sa">r</span><span class="s">#&#34; </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (u:User {id: $user_id})-[:PURCHASED]-&gt;(p:Product) </span></span></span><span class="line"><span class="cl"><span class="s"> -[:SIMILAR_TO]-&gt;(rec:Product) </span></span></span><span class="line"><span class="cl"><span class="s"> WHERE NOT EXISTS { </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (u)-[:PURCHASED]-&gt;(rec) </span></span></span><span class="line"><span class="cl"><span class="s"> } </span></span></span><span class="line"><span class="cl"><span class="s"> RETURN rec.name, rec.price, COUNT(*) as relevance </span></span></span><span class="line"><span class="cl"><span class="s"> ORDER BY relevance DESC </span></span></span><span class="line"><span class="cl"><span class="s"> LIMIT 5 </span></span></span><span class="line"><span class="cl"><span class="s"> &#34;#</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="fm">params!</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s">&#34;user_id&#34;</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s">&#34;user123&#34;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">).</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Optional Patterns</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Users with optional profile pictures</span> </span></span><span class="line"><span class="cl"><span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)-[:HAS_AVATAR]-&gt;(img:Image) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN u.name, u.email, img.url </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">avatar</span> <span class="o">=</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;img.url&#39;</span><span class="p">]</span> <span class="k">if</span> <span class="n">row</span><span class="p">[</span><span class="s1">&#39;img.url&#39;</span><span class="p">]</span> <span class="k">else</span> <span class="s2">&#34;default.png&#34;</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;</span><span class="si">{</span><span class="n">row</span><span class="p">[</span><span class="s1">&#39;u.name&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">avatar</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span> </span></span></code></pre></div> <h4 id="transaction-examples" class="position-relative d-flex align-items-center group"> <span>Transaction Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="transaction-examples" aria-haspopup="dialog" aria-label="Share link: Transaction Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Basic Transaction</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Transfer credits between users atomically</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">tx</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">begin</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Deduct from sender</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (sender:User {id: $sender_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> SET sender.credits = sender.credits - $amount </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="n">sender_id</span><span class="o">=</span><span class="s2">&#34;user123&#34;</span><span class="p">,</span> <span class="n">amount</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Add to receiver</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (receiver:User {id: $receiver_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> SET receiver.credits = receiver.credits + $amount </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="n">receiver_id</span><span class="o">=</span><span class="s2">&#34;user456&#34;</span><span class="p">,</span> <span class="n">amount</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Both operations succeed or both fail</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Go: Multi-step order creation with rollback </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">tx</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">db</span><span class="p">.</span><span class="nf">Begin</span><span class="p">()</span> </span></span><span class="line"><span class="cl"><span class="k">defer</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="nx">r</span> <span class="o">:=</span> <span class="nb">recover</span><span class="p">();</span> <span class="nx">r</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">tx</span><span class="p">.</span><span class="nf">Rollback</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1">// Create order </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">tx</span><span class="p">.</span><span class="nf">Exec</span><span class="p">(</span><span class="s">`CREATE (o:Order {id: $id, user_id: $user_id, total: $total})`</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;id&#34;</span><span class="p">,</span> <span class="nx">orderID</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;user_id&#34;</span><span class="p">,</span> <span class="nx">userID</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;total&#34;</span><span class="p">,</span> <span class="nx">total</span><span class="p">))</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1">// Add order items </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">for</span> <span class="nx">_</span><span class="p">,</span> <span class="nx">item</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">items</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">tx</span><span class="p">.</span><span class="nf">Exec</span><span class="p">(</span><span class="s">` </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (o:Order {id: $order_id}) </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (p:Product {id: $product_id}) </span></span></span><span class="line"><span class="cl"><span class="s"> CREATE (o)-[:CONTAINS {quantity: $qty}]-&gt;(p) </span></span></span><span class="line"><span class="cl"><span class="s"> `</span><span class="p">,</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;order_id&#34;</span><span class="p">,</span> <span class="nx">orderID</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;product_id&#34;</span><span class="p">,</span> <span class="nx">item</span><span class="p">.</span><span class="nx">ProductID</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;qty&#34;</span><span class="p">,</span> <span class="nx">item</span><span class="p">.</span><span class="nx">Quantity</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nx">tx</span><span class="p">.</span><span class="nf">Commit</span><span class="p">()</span> </span></span></code></pre></div><p><strong>Savepoints</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Complex operation with partial rollback</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">tx</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">begin</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;CREATE (u:User {id: &#39;temp1&#39;, name: &#39;Test&#39;})&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="n">savepoint</span> <span class="o">=</span> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">savepoint</span><span class="p">(</span><span class="s2">&#34;before_optional&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Risky operation that might fail</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;CREATE (u:User {id: &#39;temp1&#39;})&#34;</span><span class="p">)</span> <span class="c1"># Duplicate!</span> </span></span><span class="line"><span class="cl"> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Roll back to savepoint, keep first user</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">rollback_to</span><span class="p">(</span><span class="n">savepoint</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">tx</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;CREATE (u:User {id: &#39;temp2&#39;, name: &#39;Test2&#39;})&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Commits temp1 and temp2, but not the duplicate attempt</span> </span></span></code></pre></div> <h4 id="aggregation-examples" class="position-relative d-flex align-items-center group"> <span>Aggregation Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="aggregation-examples" aria-haspopup="dialog" aria-label="Share link: Aggregation Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Count users by country</span> </span></span><span class="line"><span class="cl"><span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN u.country, COUNT(*) as user_count </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY user_count DESC </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">)</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Go: Average order value by month </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">rows</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">db</span><span class="p">.</span><span class="nf">Query</span><span class="p">(</span><span class="s">` </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (o:Order) </span></span></span><span class="line"><span class="cl"><span class="s"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s"> substring(o.created_at, 0, 7) as month, </span></span></span><span class="line"><span class="cl"><span class="s"> AVG(o.total) as avg_value, </span></span></span><span class="line"><span class="cl"><span class="s"> SUM(o.total) as total_revenue, </span></span></span><span class="line"><span class="cl"><span class="s"> COUNT(*) as order_count </span></span></span><span class="line"><span class="cl"><span class="s"> ORDER BY month DESC </span></span></span><span class="line"><span class="cl"><span class="s">`</span><span class="p">)</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-rust" data-lang="rust"><span class="line"><span class="cl"><span class="c1">// Rust: Top products by revenue </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">let</span><span class="w"> </span><span class="n">results</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">execute</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="sa">r</span><span class="s">#&#34; </span></span></span><span class="line"><span class="cl"><span class="s"> MATCH (o:Order)-[c:CONTAINS]-&gt;(p:Product) </span></span></span><span class="line"><span class="cl"><span class="s"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s"> p.name, </span></span></span><span class="line"><span class="cl"><span class="s"> SUM(c.quantity) as units_sold, </span></span></span><span class="line"><span class="cl"><span class="s"> SUM(c.quantity * p.price) as revenue </span></span></span><span class="line"><span class="cl"><span class="s"> ORDER BY revenue DESC </span></span></span><span class="line"><span class="cl"><span class="s"> LIMIT 10 </span></span></span><span class="line"><span class="cl"><span class="s"> &#34;#</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="fm">params!</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">).</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="advanced-query-examples" class="position-relative d-flex align-items-center group"> <span>Advanced Query Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="advanced-query-examples" aria-haspopup="dialog" aria-label="Share link: Advanced Query Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Subqueries</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Users who purchased all items in a category</span> </span></span><span class="line"><span class="cl"><span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (category:Category {name: $category_name})&lt;-[:IN_CATEGORY]-(p:Product) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH category, COUNT(p) as total_products </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE EXISTS { </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u)-[:PURCHASED]-&gt;(p2:Product)-[:IN_CATEGORY]-&gt;(category) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH category, COUNT(DISTINCT p2) as user_purchased </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE user_purchased = total_products </span></span></span><span class="line"><span class="cl"><span class="s2"> } </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN u.name, u.email </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">,</span> <span class="n">category_name</span><span class="o">=</span><span class="s2">&#34;Electronics&#34;</span><span class="p">)</span> </span></span></code></pre></div><p><strong>Shortest Path</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Find shortest connection between two users</span> </span></span><span class="line"><span class="cl"><span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH path = shortestPath( </span></span></span><span class="line"><span class="cl"><span class="s2"> (a:User {id: $user_a})-[:KNOWS*]-(b:User {id: $user_b}) </span></span></span><span class="line"><span class="cl"><span class="s2"> ) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN [node IN nodes(path) | node.name] as connection_path, </span></span></span><span class="line"><span class="cl"><span class="s2"> length(path) as degrees_of_separation </span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">,</span> <span class="n">user_a</span><span class="o">=</span><span class="s2">&#34;user123&#34;</span><span class="p">,</span> <span class="n">user_b</span><span class="o">=</span><span class="s2">&#34;user789&#34;</span><span class="p">)</span> </span></span></code></pre></div> <h4 id="client-specific-patterns" class="position-relative d-flex align-items-center group"> <span>Client-Specific Patterns</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="client-specific-patterns" aria-haspopup="dialog" aria-label="Share link: Client-Specific Patterns"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Python Async Patterns</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Concurrent queries with asyncio</span> </span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">asyncio</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">fetch_user_data</span><span class="p">(</span><span class="n">user_id</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&#34;localhost&#34;</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">3141</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">user</span><span class="p">,</span> <span class="n">posts</span><span class="p">,</span> <span class="n">friends</span> <span class="o">=</span> <span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;MATCH (u:User {id: $id}) RETURN u&#34;</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">user_id</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;MATCH (u:User {id: $id})-[:WROTE]-&gt;(p) RETURN p&#34;</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">user_id</span><span class="p">),</span> </span></span><span class="line"><span class="cl"> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;MATCH (u:User {id: $id})-[:FRIENDS]-&gt;(f) RETURN f&#34;</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">user_id</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">user</span><span class="p">,</span> <span class="n">posts</span><span class="p">,</span> <span class="n">friends</span> </span></span></code></pre></div><p><strong>Go Connection Pooling</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Configure connection pool </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">db</span><span class="p">,</span> <span class="nx">_</span> <span class="o">:=</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Open</span><span class="p">(</span><span class="s">&#34;geode&#34;</span><span class="p">,</span> <span class="s">&#34;quic://localhost:3141&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">.</span><span class="nf">SetMaxOpenConns</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">.</span><span class="nf">SetMaxIdleConns</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">.</span><span class="nf">SetConnMaxLifetime</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Hour</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1">// Use connection from pool </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">ctx</span><span class="p">,</span> <span class="nx">cancel</span> <span class="o">:=</span> <span class="nx">context</span><span class="p">.</span><span class="nf">WithTimeout</span><span class="p">(</span><span class="nx">context</span><span class="p">.</span><span class="nf">Background</span><span class="p">(),</span> <span class="mi">5</span><span class="o">*</span><span class="nx">time</span><span class="p">.</span><span class="nx">Second</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">defer</span> <span class="nf">cancel</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nx">row</span> <span class="o">:=</span> <span class="nx">db</span><span class="p">.</span><span class="nf">QueryRowContext</span><span class="p">(</span><span class="nx">ctx</span><span class="p">,</span> <span class="s">&#34;MATCH (u:User {id: $id}) RETURN u&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;id&#34;</span><span class="p">,</span> <span class="s">&#34;user123&#34;</span><span class="p">))</span> </span></span></code></pre></div><p><strong>Rust Stream Processing</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-rust" data-lang="rust"><span class="line"><span class="cl"><span class="c1">// Process large result sets efficiently </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">execute</span><span class="p">(</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">&#34;MATCH (u:User) WHERE u.active = true RETURN u&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="fm">params!</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">).</span><span class="n">stream</span><span class="p">().</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">while</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nb">Some</span><span class="p">(</span><span class="n">row</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream</span><span class="p">.</span><span class="n">next</span><span class="p">().</span><span class="k">await</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">user_id</span>: <span class="nb">String</span> <span class="o">=</span><span class="w"> </span><span class="n">row</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#34;u.id&#34;</span><span class="p">)</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">user_name</span>: <span class="nb">String</span> <span class="o">=</span><span class="w"> </span><span class="n">row</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#34;u.name&#34;</span><span class="p">)</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Process each user without loading entire result set into memory </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="w"> </span><span class="n">process_user</span><span class="p">(</span><span class="n">user_id</span><span class="p">,</span><span class="w"> </span><span class="n">user_name</span><span class="p">).</span><span class="k">await</span><span class="o">?</span><span class="p">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w"> </span></span></span></code></pre></div> <h4 id="error-handling-examples" class="position-relative d-flex align-items-center group"> <span>Error Handling Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="error-handling-examples" aria-haspopup="dialog" aria-label="Share link: Error Handling Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python: Retry logic for transient failures</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">tenacity</span> <span class="kn">import</span> <span class="n">retry</span><span class="p">,</span> <span class="n">stop_after_attempt</span><span class="p">,</span> <span class="n">wait_exponential</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">geode_client</span> <span class="kn">import</span> <span class="n">QueryError</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@retry</span><span class="p">(</span><span class="n">stop</span><span class="o">=</span><span class="n">stop_after_attempt</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span> <span class="n">wait</span><span class="o">=</span><span class="n">wait_exponential</span><span class="p">(</span><span class="n">multiplier</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">10</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">execute_with_retry</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">result</span> </span></span><span class="line"><span class="cl"> <span class="k">except</span> <span class="n">QueryError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">message</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="s2">&#34;40502&#34;</span> <span class="ow">in</span> <span class="n">message</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Let retry decorator handle conflicts</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="s2">&#34;syntax&#34;</span> <span class="ow">in</span> <span class="n">message</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Non-retryable error: </span><span class="si">{</span><span class="n">exc</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Go: Graceful error handling </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">row</span> <span class="o">:=</span> <span class="nx">db</span><span class="p">.</span><span class="nf">QueryRow</span><span class="p">(</span><span class="s">&#34;MATCH (u:User {id: $id}) RETURN u&#34;</span><span class="p">,</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Named</span><span class="p">(</span><span class="s">&#34;id&#34;</span><span class="p">,</span> <span class="nx">userID</span><span class="p">))</span> </span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">user</span> <span class="nx">User</span> </span></span><span class="line"><span class="cl"><span class="nx">err</span> <span class="o">:=</span> <span class="nx">row</span><span class="p">.</span><span class="nf">Scan</span><span class="p">(</span><span class="o">&amp;</span><span class="nx">user</span><span class="p">.</span><span class="nx">ID</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">user</span><span class="p">.</span><span class="nx">Name</span><span class="p">,</span> <span class="o">&amp;</span><span class="nx">user</span><span class="p">.</span><span class="nx">Email</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="nx">err</span> <span class="o">==</span> <span class="nx">sql</span><span class="p">.</span><span class="nx">ErrNoRows</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="c1">// User not found - expected case </span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="nx">ErrUserNotFound</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="nx">err</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="c1">// Unexpected database error </span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">log</span><span class="p">.</span><span class="nf">Printf</span><span class="p">(</span><span class="s">&#34;Database error: %v&#34;</span><span class="p">,</span> <span class="nx">err</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="kc">nil</span><span class="p">,</span> <span class="nx">err</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h3 id="related-topics" class="position-relative d-flex align-items-center group"> <span>Related Topics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-topics" aria-haspopup="dialog" aria-label="Share link: Related Topics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong>Tutorials</strong>: Step-by-step learning paths with explanations</li> <li><strong>Guides</strong>: Architectural patterns and design principles</li> <li><strong>Getting Started</strong>: Quick examples for beginners</li> <li><strong>Developer Guide</strong>: Complete API reference and documentation</li> </ul> <h3 id="production-code-examples" class="position-relative d-flex align-items-center group"> <span>Production Code Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="production-code-examples" aria-haspopup="dialog" aria-label="Share link: Production Code Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="full-stack-application-integration" class="position-relative d-flex align-items-center group"> <span>Full-Stack Application Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="full-stack-application-integration" aria-haspopup="dialog" aria-label="Share link: Full-Stack Application Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Complete application with Geode backend:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># FastAPI application with Geode</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span><span class="p">,</span> <span class="n">HTTPException</span><span class="p">,</span> <span class="n">Depends</span><span class="p">,</span> <span class="n">Header</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">geode_client</span> <span class="kn">import</span> <span class="n">Client</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">pydantic</span> <span class="kn">import</span> <span class="n">BaseModel</span><span class="p">,</span> <span class="n">EmailStr</span> </span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">asyncio</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Connection pool (reused across requests)</span> </span></span><span class="line"><span class="cl"><span class="n">geode_pool</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;localhost:3141&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">pool_size</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">pool_timeout</span><span class="o">=</span><span class="mf">30.0</span> </span></span><span class="line"><span class="cl"><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">UserRegistration</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> </span></span><span class="line"><span class="cl"> <span class="n">email</span><span class="p">:</span> <span class="n">EmailStr</span> </span></span><span class="line"><span class="cl"> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">&#34;startup&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Initialize database connection&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">geode_pool</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">&#34;shutdown&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Close database connection&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">geode_pool</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">get_current_user</span><span class="p">(</span><span class="n">authorization</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">Header</span><span class="p">(</span><span class="o">...</span><span class="p">)):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Dependency: Extract user from JWT token&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">token</span> <span class="o">=</span> <span class="n">authorization</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&#34;Bearer &#34;</span><span class="p">,</span> <span class="s2">&#34;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">user_id</span> <span class="o">=</span> <span class="n">decode_jwt</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">geode_pool</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User {id: $id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN u </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&#34;id&#34;</span><span class="p">:</span> <span class="n">user_id</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="mi">401</span><span class="p">,</span> <span class="s2">&#34;Invalid token&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;u&#39;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@app.post</span><span class="p">(</span><span class="s2">&#34;/api/register&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">UserRegistration</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Register new user&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Hash password</span> </span></span><span class="line"><span class="cl"> <span class="n">password_hash</span> <span class="o">=</span> <span class="n">hash_password</span><span class="p">(</span><span class="n">user</span><span class="o">.</span><span class="n">password</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">geode_pool</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (u:User { </span></span></span><span class="line"><span class="cl"><span class="s2"> id: randomUUID(), </span></span></span><span class="line"><span class="cl"><span class="s2"> name: $name, </span></span></span><span class="line"><span class="cl"><span class="s2"> email: $email, </span></span></span><span class="line"><span class="cl"><span class="s2"> password_hash: $password_hash, </span></span></span><span class="line"><span class="cl"><span class="s2"> created_at: datetime(), </span></span></span><span class="line"><span class="cl"><span class="s2"> verified: false </span></span></span><span class="line"><span class="cl"><span class="s2"> }) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN u.id as user_id, u.email as email </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;name&#34;</span><span class="p">:</span> <span class="n">user</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;email&#34;</span><span class="p">:</span> <span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;password_hash&#34;</span><span class="p">:</span> <span class="n">password_hash</span> </span></span><span class="line"><span class="cl"> <span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="n">user_id</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;user_id&#39;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Send verification email</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">send_verification_email</span><span class="p">(</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> <span class="n">user_id</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span><span class="s2">&#34;user_id&#34;</span><span class="p">:</span> <span class="n">user_id</span><span class="p">,</span> <span class="s2">&#34;message&#34;</span><span class="p">:</span> <span class="s2">&#34;Registration successful&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">except</span> <span class="n">UniqueConstraintViolation</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span> <span class="s2">&#34;Email already registered&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@app.get</span><span class="p">(</span><span class="s2">&#34;/api/users/</span><span class="si">{user_id}</span><span class="s2">/profile&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">get_profile</span><span class="p">(</span><span class="n">user_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">current_user</span><span class="o">=</span><span class="n">Depends</span><span class="p">(</span><span class="n">get_current_user</span><span class="p">)):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Get user profile&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">geode_pool</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User {id: $id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)-[:FRIENDS_WITH]-(friend:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)-[:POSTED]-&gt;(post:Post) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s2"> u.id as id, </span></span></span><span class="line"><span class="cl"><span class="s2"> u.name as name, </span></span></span><span class="line"><span class="cl"><span class="s2"> u.email as email, </span></span></span><span class="line"><span class="cl"><span class="s2"> u.created_at as created_at, </span></span></span><span class="line"><span class="cl"><span class="s2"> COUNT(DISTINCT friend) as friend_count, </span></span></span><span class="line"><span class="cl"><span class="s2"> COUNT(DISTINCT post) as post_count </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&#34;id&#34;</span><span class="p">:</span> <span class="n">user_id</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="mi">404</span><span class="p">,</span> <span class="s2">&#34;User not found&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@app.post</span><span class="p">(</span><span class="s2">&#34;/api/posts&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">create_post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="n">content</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">current_user</span><span class="o">=</span><span class="n">Depends</span><span class="p">(</span><span class="n">get_current_user</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Create new post&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">geode_pool</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User {id: $user_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (p:Post { </span></span></span><span class="line"><span class="cl"><span class="s2"> id: randomUUID(), </span></span></span><span class="line"><span class="cl"><span class="s2"> content: $content, </span></span></span><span class="line"><span class="cl"><span class="s2"> created_at: datetime(), </span></span></span><span class="line"><span class="cl"><span class="s2"> likes: 0, </span></span></span><span class="line"><span class="cl"><span class="s2"> comments: 0 </span></span></span><span class="line"><span class="cl"><span class="s2"> }) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (u)-[:POSTED]-&gt;(p) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN p.id as post_id </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;user_id&#34;</span><span class="p">:</span> <span class="n">current_user</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;content&#34;</span><span class="p">:</span> <span class="n">content</span> </span></span><span class="line"><span class="cl"> <span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span><span class="s2">&#34;post_id&#34;</span><span class="p">:</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;post_id&#39;</span><span class="p">]}</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@app.get</span><span class="p">(</span><span class="s2">&#34;/api/feed&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">get_feed</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">current_user</span><span class="o">=</span><span class="n">Depends</span><span class="p">(</span><span class="n">get_current_user</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Get personalized feed&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">geode_pool</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (me:User {id: $user_id})-[:FRIENDS_WITH]-(friend:User)-[:POSTED]-&gt;(post:Post) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH post, friend </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY post.created_at DESC </span></span></span><span class="line"><span class="cl"><span class="s2"> SKIP $offset </span></span></span><span class="line"><span class="cl"><span class="s2"> LIMIT $limit </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s2"> post.id as id, </span></span></span><span class="line"><span class="cl"><span class="s2"> post.content as content, </span></span></span><span class="line"><span class="cl"><span class="s2"> post.created_at as created_at, </span></span></span><span class="line"><span class="cl"><span class="s2"> post.likes as likes, </span></span></span><span class="line"><span class="cl"><span class="s2"> friend.id as author_id, </span></span></span><span class="line"><span class="cl"><span class="s2"> friend.name as author_name </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;user_id&#34;</span><span class="p">:</span> <span class="n">current_user</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;offset&#34;</span><span class="p">:</span> <span class="n">offset</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;limit&#34;</span><span class="p">:</span> <span class="n">limit</span> </span></span><span class="line"><span class="cl"> <span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span><span class="s2">&#34;posts&#34;</span><span class="p">:</span> <span class="p">[</span><span class="nb">dict</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">result</span><span class="p">]}</span> </span></span></code></pre></div> <h4 id="recommendation-engine" class="position-relative d-flex align-items-center group"> <span>Recommendation Engine</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="recommendation-engine" aria-haspopup="dialog" aria-label="Share link: Recommendation Engine"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Collaborative filtering implementation:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">RecommendationEngine</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">get_product_recommendations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Generate product recommendations using collaborative filtering&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Find similar users based on purchase history</span> </span></span><span class="line"><span class="cl"> <span class="n">similar_users</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (me:User {id: $user_id})-[:PURCHASED]-&gt;(p:Product) </span></span></span><span class="line"><span class="cl"><span class="s2"> &lt;-[:PURCHASED]-(other:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE other.id &lt;&gt; $user_id </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH other, COUNT(p) as common_purchases, me </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY common_purchases DESC </span></span></span><span class="line"><span class="cl"><span class="s2"> LIMIT 50 </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (other)-[:PURCHASED]-&gt;(rec:Product) </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE NOT EXISTS { </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (me)-[:PURCHASED]-&gt;(rec) </span></span></span><span class="line"><span class="cl"><span class="s2"> } </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH rec, COUNT(other) as score, SUM(common_purchases) as weight </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s2"> rec.id as product_id, </span></span></span><span class="line"><span class="cl"><span class="s2"> rec.name as name, </span></span></span><span class="line"><span class="cl"><span class="s2"> rec.price as price, </span></span></span><span class="line"><span class="cl"><span class="s2"> score * weight as recommendation_score </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY recommendation_score DESC </span></span></span><span class="line"><span class="cl"><span class="s2"> LIMIT $limit </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&#34;user_id&#34;</span><span class="p">:</span> <span class="n">user_id</span><span class="p">,</span> <span class="s2">&#34;limit&#34;</span><span class="p">:</span> <span class="n">limit</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">similar_users</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">get_content_based_recommendations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Content-based recommendations using product attributes&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">recommendations</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User {id: $user_id})-[:PURCHASED]-&gt;(liked:Product) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, COLLECT(liked.category) as liked_categories, </span></span></span><span class="line"><span class="cl"><span class="s2"> AVG(liked.price) as avg_price </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (rec:Product) </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE rec.category IN liked_categories </span></span></span><span class="line"><span class="cl"><span class="s2"> AND NOT EXISTS { MATCH (u)-[:PURCHASED]-&gt;(rec) } </span></span></span><span class="line"><span class="cl"><span class="s2"> AND rec.price BETWEEN avg_price * 0.7 AND avg_price * 1.3 </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH rec, SIZE([cat IN rec.tags WHERE cat IN liked_categories]) as tag_match </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s2"> rec.id as product_id, </span></span></span><span class="line"><span class="cl"><span class="s2"> rec.name as name, </span></span></span><span class="line"><span class="cl"><span class="s2"> rec.price as price, </span></span></span><span class="line"><span class="cl"><span class="s2"> tag_match as relevance_score </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY relevance_score DESC </span></span></span><span class="line"><span class="cl"><span class="s2"> LIMIT $limit </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&#34;user_id&#34;</span><span class="p">:</span> <span class="n">user_id</span><span class="p">,</span> <span class="s2">&#34;limit&#34;</span><span class="p">:</span> <span class="n">limit</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">recommendations</span> </span></span></code></pre></div> <h4 id="social-network-analytics" class="position-relative d-flex align-items-center group"> <span>Social Network Analytics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="social-network-analytics" aria-haspopup="dialog" aria-label="Share link: Social Network Analytics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Graph analytics for social features:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">SocialAnalytics</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">calculate_user_influence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_id</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Calculate user influence score&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">metrics</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User {id: $user_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)&lt;-[:FOLLOWS]-(follower:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, COUNT(DISTINCT follower) as followers </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)-[:POSTED]-&gt;(post:Post)&lt;-[:LIKED]-(liker:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, followers, COUNT(DISTINCT liker) as total_likes </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)-[:POSTED]-&gt;(post:Post) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, followers, total_likes, COUNT(DISTINCT post) as posts </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s2"> followers, </span></span></span><span class="line"><span class="cl"><span class="s2"> total_likes, </span></span></span><span class="line"><span class="cl"><span class="s2"> posts, </span></span></span><span class="line"><span class="cl"><span class="s2"> (followers * 2.0 + total_likes * 0.5 + posts * 1.0) as influence_score </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&#34;user_id&#34;</span><span class="p">:</span> <span class="n">user_id</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">metrics</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">metrics</span> <span class="k">else</span> <span class="kc">None</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">detect_communities</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Detect communities using label propagation&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Initialize communities</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> SET u.community = u.id </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Iterate label propagation</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">iteration</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">changes</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User)-[:FRIENDS_WITH]-(neighbor:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, neighbor.community as label, COUNT(*) as freq </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY u, freq DESC </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, COLLECT(label)[0] as most_common </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE u.community &lt;&gt; most_common </span></span></span><span class="line"><span class="cl"><span class="s2"> SET u.community = most_common </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN COUNT(u) as changes </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="n">changes</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;changes&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">break</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Return communities</span> </span></span><span class="line"><span class="cl"> <span class="n">communities</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN u.community as community_id, COUNT(u) as size </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY size DESC </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">communities</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">find_influencers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">20</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Find top influencers&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">influencers</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (u:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)&lt;-[:FOLLOWS]-(follower:User) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, COUNT(DISTINCT follower) as followers </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (u)-[:POSTED]-&gt;(p:Post) </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH u, followers, AVG(p.likes) as avg_likes </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE followers &gt; 100 </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN </span></span></span><span class="line"><span class="cl"><span class="s2"> u.id as user_id, </span></span></span><span class="line"><span class="cl"><span class="s2"> u.name as name, </span></span></span><span class="line"><span class="cl"><span class="s2"> followers, </span></span></span><span class="line"><span class="cl"><span class="s2"> avg_likes, </span></span></span><span class="line"><span class="cl"><span class="s2"> (followers + avg_likes * 10) as influence_score </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY influence_score DESC </span></span></span><span class="line"><span class="cl"><span class="s2"> LIMIT $limit </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&#34;limit&#34;</span><span class="p">:</span> <span class="n">limit</span><span class="p">})</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">influencers</span> </span></span></code></pre></div> <h4 id="e-commerce-transaction-processing" class="position-relative d-flex align-items-center group"> <span>E-Commerce Transaction Processing</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="e-commerce-transaction-processing" aria-haspopup="dialog" aria-label="Share link: E-Commerce Transaction Processing"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Complete order processing example:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">OrderProcessor</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">process_order</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">customer_id</span><span class="p">,</span> <span class="n">items</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34;Process order with inventory check&#34;&#34;&#34;</span> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Isolation is configured server-side</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">begin</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Create order</span> </span></span><span class="line"><span class="cl"> <span class="n">order_result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (c:Customer {id: $customer_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (o:Order { </span></span></span><span class="line"><span class="cl"><span class="s2"> id: randomUUID(), </span></span></span><span class="line"><span class="cl"><span class="s2"> status: &#39;pending&#39;, </span></span></span><span class="line"><span class="cl"><span class="s2"> created_at: datetime(), </span></span></span><span class="line"><span class="cl"><span class="s2"> subtotal: 0.0, </span></span></span><span class="line"><span class="cl"><span class="s2"> tax: 0.0, </span></span></span><span class="line"><span class="cl"><span class="s2"> total: 0.0 </span></span></span><span class="line"><span class="cl"><span class="s2"> }) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (c)-[:PLACED]-&gt;(o) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN o.id as order_id </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="s2">&#34;customer_id&#34;</span><span class="p">:</span> <span class="n">customer_id</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="n">order_id</span> <span class="o">=</span> <span class="n">order_result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">&#34;order_id&#34;</span><span class="p">]</span><span class="o">.</span><span class="n">as_string</span> </span></span><span class="line"><span class="cl"> <span class="n">subtotal</span> <span class="o">=</span> <span class="mf">0.0</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Process each item</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Check and reserve inventory</span> </span></span><span class="line"><span class="cl"> <span class="n">inventory</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (p:Product {id: $product_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE p.stock &gt;= $quantity </span></span></span><span class="line"><span class="cl"><span class="s2"> SET p.stock = p.stock - $quantity </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN p.id AS id, p.name AS name, p.price AS price </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;product_id&#34;</span><span class="p">:</span> <span class="n">item</span><span class="p">[</span><span class="s2">&#34;product_id&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;quantity&#34;</span><span class="p">:</span> <span class="n">item</span><span class="p">[</span><span class="s2">&#34;quantity&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="ow">not</span> <span class="n">inventory</span><span class="o">.</span><span class="n">rows</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> <span class="n">InsufficientInventoryError</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="sa">f</span><span class="s2">&#34;Product </span><span class="si">{</span><span class="n">item</span><span class="p">[</span><span class="s1">&#39;product_id&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> out of stock&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="n">product</span> <span class="o">=</span> <span class="n">inventory</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="n">unit_price</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">product</span><span class="p">[</span><span class="s2">&#34;price&#34;</span><span class="p">]</span><span class="o">.</span><span class="n">as_decimal</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">line_total</span> <span class="o">=</span> <span class="n">unit_price</span> <span class="o">*</span> <span class="n">item</span><span class="p">[</span><span class="s2">&#34;quantity&#34;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="n">subtotal</span> <span class="o">+=</span> <span class="n">line_total</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Create order line item</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (o:Order {id: $order_id}), (p:Product {id: $product_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (li:LineItem { </span></span></span><span class="line"><span class="cl"><span class="s2"> quantity: $quantity, </span></span></span><span class="line"><span class="cl"><span class="s2"> unit_price: $unit_price, </span></span></span><span class="line"><span class="cl"><span class="s2"> total: $total </span></span></span><span class="line"><span class="cl"><span class="s2"> }) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (o)-[:CONTAINS]-&gt;(li) </span></span></span><span class="line"><span class="cl"><span class="s2"> CREATE (li)-[:FOR_PRODUCT]-&gt;(p) </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;order_id&#34;</span><span class="p">:</span> <span class="n">order_id</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;product_id&#34;</span><span class="p">:</span> <span class="n">item</span><span class="p">[</span><span class="s2">&#34;product_id&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;quantity&#34;</span><span class="p">:</span> <span class="n">item</span><span class="p">[</span><span class="s2">&#34;quantity&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;unit_price&#34;</span><span class="p">:</span> <span class="n">unit_price</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;total&#34;</span><span class="p">:</span> <span class="n">line_total</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Calculate totals</span> </span></span><span class="line"><span class="cl"> <span class="n">tax</span> <span class="o">=</span> <span class="n">subtotal</span> <span class="o">*</span> <span class="mf">0.08</span> <span class="c1"># 8% tax</span> </span></span><span class="line"><span class="cl"> <span class="n">total</span> <span class="o">=</span> <span class="n">subtotal</span> <span class="o">+</span> <span class="n">tax</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1"># Update order totals</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (o:Order {id: $order_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> SET o.subtotal = $subtotal, </span></span></span><span class="line"><span class="cl"><span class="s2"> o.tax = $tax, </span></span></span><span class="line"><span class="cl"><span class="s2"> o.total = $total, </span></span></span><span class="line"><span class="cl"><span class="s2"> o.status = &#39;confirmed&#39; </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;order_id&#34;</span><span class="p">:</span> <span class="n">order_id</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;subtotal&#34;</span><span class="p">:</span> <span class="n">subtotal</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;tax&#34;</span><span class="p">:</span> <span class="n">tax</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;total&#34;</span><span class="p">:</span> <span class="n">total</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="p">{</span><span class="s2">&#34;order_id&#34;</span><span class="p">:</span> <span class="n">order_id</span><span class="p">,</span> <span class="s2">&#34;total&#34;</span><span class="p">:</span> <span class="n">total</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">rollback</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span></code></pre></div><p>Browse the tagged content below to discover comprehensive code examples and integration patterns for Geode applications.</p>

Related Articles