-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
1 lines (1 loc) · 32 KB
/
index.html
1
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>VB-Consulting</title><meta name="description" content="#1 Svelte, .NET, PostgreSQL Consulting"><link href="https://vb-consulting.github.io/" rel="canonical"><meta name="keywords" content="net, dotnet, c#, csharp, orm, database, postgresql, sql, postgres, svelte, consulting, development, software, architecture"><meta name="author" content="Floki"><meta prefix="og: http://ogp.me/ns#" property="og:title" content="VB-Consulting"><meta prefix="og: http://ogp.me/ns#" property="og:description" content="#1 Svelte, .NET, PostgreSQL Consulting"><meta prefix="og: http://ogp.me/ns#" property="og:image" content="https://vb-consulting.github.io/sqlcode.jpg"><meta prefix="og: http://ogp.me/ns#" property="og:type" content="article"><meta prefix="og: http://ogp.me/ns#" property="og:site_name" content="VB-Consulting"><meta prefix="og: http://ogp.me/ns#" property="og:url" content="https://vb-consulting.github.io/"><meta name="twitter:image" content="https://vb-consulting.github.io/sqlcode.jpg"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:description" content="#1 Svelte, .NET, PostgreSQL Consulting"><link rel="stylesheet" href="/_elderjs/assets/svelte-345b0f69.css" media="all"><style></style><link href="/style.css?1730285038886" rel="stylesheet"><script>!function(){var e="theme",t=localStorage.getItem(e);t||(t=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",localStorage.setItem(e,t)),document.getElementsByTagName("html")[0].dataset.bsTheme=t}();</script></head><body class="d-flex flex-column h-100"><header id="header"><nav class="navbar navbar-expand-md navbar-dark fixed-top py-0 py-md-0 svelte-30jr7w"><div class="container-fluid flex-nowrap svelte-30jr7w"><div class="d-flex svelte-30jr7w"><button id="nav-btn" type="button" class="d-flex btn btn-sm logo animate-rotate svelte-30jr7w"><i class="material-icons-outlined">menu</i></button> <a class="nav-link my-auto ms-2 fw-semibold home svelte-30jr7w" href="/"><i class="bi-chevron-double-left"></i> VB Home</a></div><div class="d-flex right svelte-30jr7w"><a class="nav-link my-auto svelte-30jr7w" data-bs-toggle="tooltip" data-bs-html="true" title="Become a Patreon" href="https://www.patreon.com/vbconsulting" target="_blank"><div class="patreon"></div></a><div class="vr1 text-muted my-auto svelte-30jr7w"></div><a class="nav-link my-auto svelte-30jr7w" data-bs-toggle="tooltip" data-bs-html="true" title="Buy Me a Coffee" href="https://www.buymeacoffee.com/vbilopavu" target="_blank"><div class="bmc"></div></a><div class="vr1 text-muted my-auto svelte-30jr7w"></div><a class="nav-link my-auto me-2 svelte-30jr7w" data-bs-toggle="tooltip" data-bs-html="true" title="vb-consulting on GitHub" href="https://github.com/vb-consulting/"><i class="bi-github"></i></a> <a class="github-button svelte-30jr7w" href="https://github.com/vb-consulting/" data-bs-toggle="tooltip" data-bs-html="true" title="Star vb-consulting on GitHub" data-color-scheme="no-preference: light_high_contrast; light: light_high_contrast; dark: light_high_contrast;" data-icon="octicon-star" data-show-count="true" aria-label="Star vb-consulting on GitHub"></a><div class="vr1 text-muted my-auto svelte-30jr7w"></div><button id="theme-btn" type="button" aria-pressed="true" aria-label="theme" class="svelte-30jr7w"><span class="check hidden svelte-30jr7w"><span class="icon svelte-30jr7w"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="svelte-30jr7w"><path fill="currentColor" d="M12 21q-3.775 0-6.388-2.613T3 12q0-3.45 2.25-5.988T11 3.05q.625-.075.975.45t-.025 1.1q-.425.65-.638 1.375T11.1 7.5q0 2.25 1.575 3.825T16.5 12.9q.775 0 1.538-.225t1.362-.625q.525-.35 1.075-.037t.475.987q-.35 3.45-2.937 5.725T12 21Zm0-2q2.2 0 3.95-1.213t2.55-3.162q-.5.125-1 .2t-1 .075q-3.075 0-5.238-2.163T9.1 7.5q0-.5.075-1t.2-1q-1.95.8-3.163 2.55T5 12q0 2.9 2.05 4.95T12 19Zm-.25-6.75Z"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" class="svelte-30jr7w"><g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M0 0h24v24H0z"></path><path fill="currentColor" d="M12 19a1 1 0 0 1 .993.883L13 20v1a1 1 0 0 1-1.993.117L11 21v-1a1 1 0 0 1 1-1zm6.313-2.09l.094.083l.7.7a1 1 0 0 1-1.32 1.497l-.094-.083l-.7-.7a1 1 0 0 1 1.218-1.567l.102.07zm-11.306.083a1 1 0 0 1 .083 1.32l-.083.094l-.7.7a1 1 0 0 1-1.497-1.32l.083-.094l.7-.7a1 1 0 0 1 1.414 0zM4 11a1 1 0 0 1 .117 1.993L4 13H3a1 1 0 0 1-.117-1.993L3 11h1zm17 0a1 1 0 0 1 .117 1.993L21 13h-1a1 1 0 0 1-.117-1.993L20 11h1zM6.213 4.81l.094.083l.7.7a1 1 0 0 1-1.32 1.497l-.094-.083l-.7-.7A1 1 0 0 1 6.11 4.74l.102.07zm12.894.083a1 1 0 0 1 .083 1.32l-.083.094l-.7.7a1 1 0 0 1-1.497-1.32l.083-.094l.7-.7a1 1 0 0 1 1.414 0zM12 2a1 1 0 0 1 .993.883L13 3v1a1 1 0 0 1-1.993.117L11 4V3a1 1 0 0 1 1-1zm0 5a5 5 0 1 1-4.995 5.217L7 12l.005-.217A5 5 0 0 1 12 7z"></path></g></svg></span></span></button></div></div></nav></header><main class="svelte-9zwk14"><div class="sidebar sidebar-hide svelte-9zwk14"><div class="svelte-9zwk14"><ul class="navbar-nav sidenav svelte-9zwk14"><li class="nav-item svelte-9zwk14 active" data-id="" title="VB-Consulting"><a class="nav-link svelte-9zwk14 text-uppercase" href="/">VB-Consulting</a></li><li class="nav-divider svelte-9zwk14"><hr class="svelte-9zwk14"></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="NpgsqlRest"><a class="nav-link svelte-9zwk14 text-uppercase" href="/npgsqlrest/">NpgsqlRest</a></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="Norm.Net"><a class="nav-link svelte-9zwk14 text-uppercase" href="/norm.net/">Norm.Net</a></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="RazorSvelte"><a class="nav-link svelte-9zwk14 text-uppercase" href="/razorsvelte/">RazorSvelte</a></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="PgRoutiner"><a class="nav-link svelte-9zwk14 text-uppercase" href="/pgroutiner/">PgRoutiner</a></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="XUnit.Npgsql"><a class="nav-link svelte-9zwk14 text-uppercase" href="/xunit.npgsql/">XUnit.Npgsql</a></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="pgmigrations"><a class="nav-link svelte-9zwk14 text-uppercase" href="/pgmigrations/">pgmigrations</a></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="PostrgeSQL Schema Tools"><a class="nav-link svelte-9zwk14 text-uppercase" href="/pg_schema_tools/">PostrgeSQL Schema Tools</a></li><li class="nav-txt-divider text-muted svelte-9zwk14"><hr class="svelte-9zwk14"><span class="svelte-9zwk14">blogs</span><hr class="svelte-9zwk14"></li><li class="nav-item toc2 svelte-9zwk14" data-id="" title="See all blogs..."><a class="nav-link btn btn-sm w-fit px-3 mx-auto svelte-9zwk14 lr-arrow text-uppercase" href="/blogs/"><i class="bi bi-arrow-right-circle svelte-9zwk14"></i> <span class="btn-link">ALL BLOGS</span></a></li><li class="nav-item svelte-9zwk14" data-id="" title="Unit Testing and TDD With PostgreSQL"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/unit-testing-postgresql/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>Unit Testing and TDD With PostgreSQL is Easy</a></li><li class="nav-item svelte-9zwk14" data-id="" title="From Transaction Scripts and Domain Model to SQL"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/domain-model-transaction-script/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>From Transaction Scripts and Domain Model to SQL</a></li><li class="nav-item svelte-9zwk14" data-id="" title="Transaction Script DDD vs SQL"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/transaction-script/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>Transaction Script DDD vs SQL</a></li><li class="nav-item svelte-9zwk14" data-id="" title="Common Sense Software Design Approach for RDBMS-backed Type of Software"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/common-sense-design/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>Common Sense Software Design</a></li><li class="nav-item svelte-9zwk14" data-id="" title="Automatic REST API for PostgreSQL Database as .NET8 Middleware"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/npgsqlrest-v2/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>NpgsqlRest v2 Update 🐘🔥</a></li><li class="nav-item svelte-9zwk14" data-id="" title="Automatic REST API for PostgreSQL Database as .NET8 Middleware"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/npgsqlrest-update1.6.2/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>NpgsqlRest Update 1.6.2</a></li><li class="nav-item svelte-9zwk14" data-id="" title="PostgreSQL Array Example"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/postgresql-array/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>PostgreSQL Arrays 🐘</a></li><li class="nav-item svelte-9zwk14" data-id="" title="How DDD is screwing up your SQL"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/sql-vs-ddd/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>How DDD is screwing up your SQL</a></li><li class="nav-item svelte-9zwk14" data-id="" title="PostgreSQL Paging Benchmarks"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/postgresql-paging/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>PostgreSQL Paging Benchmarks</a></li><li class="nav-item svelte-9zwk14" data-id="" title="Automatic REST API for PostgreSQL Database as .NET8 Middleware"><a class="nav-link svelte-9zwk14 lr-arrow text-uppercase" href="/blog/npgsqlrest/"><i class="bi bi-chat-left-text svelte-9zwk14"></i>NpgsqlRest NuGet Library</a></li></ul></div></div><div class="content svelte-9zwk14"><div class="container-sm"><div class="row"><div class="col-12"><div class="text-center mt-3"><h1 class="fs-smaller text-capitalize fw-bolder">no-nonsense software development and consulting</h1><h2 class="fs-5 text-capitalize fw-bolder text-shadow">Get the most out of the world's most advanced open-source full-stack eco-systems</h2><div class="flex-sm-row mt-2"><div class="col logo background-pg svelte-18zbkxl" data-bs-toggle="tooltip" data-bs-html="true" title="<strong>PostgreSQL</strong><br />The World's Most Advanced Open Source Relational Database"></div><div class="col logo background-net svelte-18zbkxl" data-bs-toggle="tooltip" data-bs-html="true" title="<strong>.NET</strong><br />Free. Cross-platform. Open source. A Developer Platform For Building All Your Apps."></div><div class="col logo background-svelte svelte-18zbkxl" data-bs-toggle="tooltip" data-bs-html="true" title="<strong>Svelte</strong><br />Cybernetically Enhanced Web Apps"></div></div><div class="divider text-muted svelte-18zbkxl"><hr><span class="svelte-18zbkxl">featured</span><hr></div><div class="card-list svelte-kvbr7g"><a href="/npgsqlrest/" class="card btn svelte-kvbr7g"><div class="card-body svelte-kvbr7g small"><h6 class="card-subtitle mb-2 text-body-secondary">NpgsqlRest is Automatic REST API for PostgreSQL Databases 🐘</h6></div></a><a href="/pgroutiner/" class="card btn svelte-kvbr7g"><div class="card-body svelte-kvbr7g small"><h6 class="card-subtitle mb-2 text-body-secondary">PgRoutiner Command-Line Tools for PostgreSQL Databases and .NET 🐘</h6></div></a><a href="/pgmigrations/" class="card btn svelte-kvbr7g"><div class="card-body svelte-kvbr7g small"><h6 class="card-subtitle mb-2 text-body-secondary">Lightweight, Zero-Dependency, PostgreSQL Tool for Node.js and NPM</h6></div></a><a href="/blog/micro-orm/" class="card btn svelte-kvbr7g"><div class="card-body svelte-kvbr7g small"><h6 class="card-subtitle mb-2 text-body-secondary">What is Micro ORM 📖</h6></div></a><a href="/blog/postgresql-array/" class="card btn svelte-kvbr7g"><div class="card-body svelte-kvbr7g small"><h6 class="card-subtitle mb-2 text-body-secondary">Blog Article on PostgreSQL Arrays 🐘</h6></div></a><a href="/blog/postgresql-paging/" class="card btn svelte-kvbr7g"><div class="card-body svelte-kvbr7g small"><h6 class="card-subtitle mb-2 text-body-secondary">Blog Article on PostgreSQL Paging Benchmarks 🐘</h6></div></a><a href="/blog/common-sense-design/" class="card btn svelte-kvbr7g"><div class="card-body svelte-kvbr7g small"><h6 class="card-subtitle mb-2 text-body-secondary">Blog Article on the Common Sense Software Design 🗄️</h6></div></a></div><div class="divider text-muted svelte-18zbkxl"><hr><span class="svelte-18zbkxl">open-source tools</span><hr></div><div class="card-list svelte-kvbr7g"><a href="/npgsqlrest/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/pgcode2.png); background-position: center; background-blend-mode: difference;background-color: initial;"><div class="card-corner text-shadow svelte-kvbr7g"><i class="bi-github"></i></div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">NpgsqlRest</h5><h6 class="card-subtitle mb-2 text-body-secondary">Automatic REST API for PostgreSQL Database as .NET8 Middleware</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Learn more</span></div></a><a href="/pgroutiner/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/pgroutiner/search-balance.jpg); background-position: top; background-blend-mode: exclusion;"><div class="card-corner text-shadow svelte-kvbr7g"><i class="bi-github"></i></div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">PgRoutiner</h5><h6 class="card-subtitle mb-2 text-body-secondary">Database-First Development with .NET and PostgreSQL</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Learn more</span></div></a><a href="/razorsvelte/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/svelte_logo.svg); background-position: center; background-blend-mode: exclusion;"><div class="card-corner text-shadow svelte-kvbr7g"><i class="bi-github"></i></div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">RazorSvelte</h5><h6 class="card-subtitle mb-2 text-body-secondary">Cybernetically Enhanced Svelte Web Apps Integradted With ASP.NET Web Forms</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Learn more</span></div></a><a href="/norm.net/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/sqlcode.jpg); background-position: top; background-blend-mode: exclusion;"><div class="card-corner text-shadow svelte-kvbr7g"><i class="bi-github"></i></div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">Norm.Net</h5><h6 class="card-subtitle mb-2 text-body-secondary">Norm.Net Is An Innovative And High-Performance Database Access Micro ORM For .NET</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Learn more</span></div></a><a href="/xunit.npgsql/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/cs1.jpg); background-position: top; background-blend-mode: exclusion;"><div class="card-corner text-shadow svelte-kvbr7g"><i class="bi-github"></i></div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">XUnit.Npgsql</h5><h6 class="card-subtitle mb-2 text-body-secondary">XUnit.Npgsql Unit Tests For PostgreSQL With XUnit And .NET</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Learn more</span></div></a><a href="/pgmigrations/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/pgadmin1.jpg); background-position: center; background-blend-mode: exclusion;"><div class="card-corner text-shadow svelte-kvbr7g"><i class="bi-github"></i></div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">pgmigrations</h5><h6 class="card-subtitle mb-2 text-body-secondary">Lightweight, Zero-Dependency, PostgreSQL Tool for Node.js and NPM</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Learn more</span></div></a><a href="/pg_schema_tools/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/pgadmin1.jpg); background-position: center; background-blend-mode: exclusion;"><div class="card-corner text-shadow svelte-kvbr7g"><i class="bi-github"></i></div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">PostrgeSQL Schema Tools</h5><h6 class="card-subtitle mb-2 text-body-secondary">Set Of Open-Source PostrgeSQL Functions To Manage Database Schema</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Learn more</span></div></a></div><div class="divider text-muted svelte-18zbkxl"><hr><span class="svelte-18zbkxl">blogs</span><hr></div><div class="card-list svelte-kvbr7g"><a href="/blog/unit-testing-postgresql/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/more-banner.jpg); background-position: top; background-blend-mode: luminosity;"><div class="card-corner text-shadow svelte-kvbr7g">Jul 3, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">Unit Testing and TDD With PostgreSQL is Easy</h5><h6 class="card-subtitle mb-2 text-body-secondary">Unit Testing and TDD With PostgreSQL</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/domain-model-transaction-script/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/more-banner.jpg); background-position: top; background-blend-mode: luminosity;"><div class="card-corner text-shadow svelte-kvbr7g">Jun 20, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">From Transaction Scripts and Domain Model to SQL</h5><h6 class="card-subtitle mb-2 text-body-secondary">From Transaction Scripts and Domain Model to SQL</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/transaction-script/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/more-banner.jpg); background-position: top; background-blend-mode: luminosity;"><div class="card-corner text-shadow svelte-kvbr7g">Jun 20, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">Transaction Script DDD vs SQL</h5><h6 class="card-subtitle mb-2 text-body-secondary">Transaction Script DDD vs SQL</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/common-sense-design/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/arch-trans.png); background-position: center; background-blend-mode: luminosity;"><div class="card-corner text-shadow svelte-kvbr7g">May 4, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">Common Sense Software Design</h5><h6 class="card-subtitle mb-2 text-body-secondary">Common Sense Software Design Approach for RDBMS-backed Type of Software</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/npgsqlrest-v2/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/pgcode2.png); background-position: center; background-blend-mode: difference;"><div class="card-corner text-shadow svelte-kvbr7g">May 4, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">NpgsqlRest v2 Update 🐘🔥</h5><h6 class="card-subtitle mb-2 text-body-secondary">Automatic REST API for PostgreSQL Database as .NET8 Middleware</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/npgsqlrest-update1.6.2/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/pgcode2.png); background-position: center; background-blend-mode: difference;"><div class="card-corner text-shadow svelte-kvbr7g">May 4, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">NpgsqlRest Update 1.6.2</h5><h6 class="card-subtitle mb-2 text-body-secondary">Automatic REST API for PostgreSQL Database as .NET8 Middleware</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/postgresql-array/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/eleph2.jpg); background-position: center; background-blend-mode: difference;"><div class="card-corner text-shadow svelte-kvbr7g">May 4, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">PostgreSQL Arrays 🐘</h5><h6 class="card-subtitle mb-2 text-body-secondary">PostgreSQL Array Example</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/sql-vs-ddd/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/macka.jpg); background-position: center; background-blend-mode: luminosity;"><div class="card-corner text-shadow svelte-kvbr7g">Mar 20, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">How DDD is screwing up your SQL</h5><h6 class="card-subtitle mb-2 text-body-secondary">How DDD is screwing up your SQL</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/postgresql-paging/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/neretva.jpg); background-position: center; background-blend-mode: luminosity;"><div class="card-corner text-shadow svelte-kvbr7g">Feb 16, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">PostgreSQL Paging Benchmarks</h5><h6 class="card-subtitle mb-2 text-body-secondary">PostgreSQL Paging Benchmarks</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a><a href="/blog/npgsqlrest/" class="card btn svelte-kvbr7g"><div class="card-header svelte-kvbr7g" style="background-image: url(/pgcode2.png); background-position: center; background-blend-mode: difference;"><div class="card-corner text-shadow svelte-kvbr7g">Jan 23, 2024</div></div><div class="card-body svelte-kvbr7g"><h5 class="card-title">NpgsqlRest NuGet Library</h5><h6 class="card-subtitle mb-2 text-body-secondary">Automatic REST API for PostgreSQL Database as .NET8 Middleware</h6></div><div class="btn btn-sm lr-arrow w-fit m-auto"><i class="bi bi-arrow-right-circle me-1"></i> <span class="">Read more</span></div></a></div><a class="btn btn-sm lr-arrow mt-5" href="/blogs/"><i class="bi bi-arrow-right-circle me-1"></i> <span class="btn-link">See All Blogs</span></a></div></div></div></div><footer class="mt-3 py-5"><div class="w-fit mx-auto mb-3 border-top border-bottom"><div class="alert text-center fs-smaller text-muted"><div class="alert text-center fs-smaller text-muted mb-1">If you like my content, use my software, or otherwise benefit from my work, consider supporting me by buying me a coffee. The software runs on coffee after all.</div><a class="btn rl-arrow" target="_blank" data-bs-toggle="tooltip" data-bs-html="true" title="Click Here to Buy Me a Coffee Or Scan the Code" href="https://www.buymeacoffee.com/vbilopavu" style="display: inline-grid;">Buy me a Coffee <img class="m-auto svelte-byttq0" alt="Scan Here To Buy Me a Cofee" src="/bmc_qr.png"></a></div></div><div class="d-flex justify-content-center"><a class="btn rl-arrow me-1" target="_blank" data-bs-toggle="tooltip" data-bs-html="true" title="vb-consulting on GitHub" href="https://github.com/vb-consulting/" style="display: inline-grid;">vb-consulting on GitHub <i class="bi bi-github"></i></a> <a class="btn rl-arrow" target="_blank" data-bs-toggle="tooltip" data-bs-html="true" title="I Post Software Development Content Daily" href="https://www.linkedin.com/in/vb-software/" style="display: inline-grid;">Follow me on LinkedIn <i class="bi bi-linkedin"></i></a></div><div class="text-center"><div class="mt-5 mb-5 background-floki svelte-byttq0" data-bs-toggle="tooltip" data-bs-html="true" title="Floki is a developer dog."></div></div></footer><div class="mb-5"></div></div></main><script>!function(){var i=document.querySelector("nav.navbar"),f=document.getElementsByTagName("main")[0],L=f.getElementsByClassName("sidebar")[0],w=f.getElementsByClassName("content")[0],o=document.querySelectorAll("div.code"),k=i.querySelector(".home");function E(e,t){for(var n=1;n<arguments.length;n++)e.classList.remove(arguments[n])}function T(e,t){for(var n=1;n<arguments.length;n++)e.classList.remove(arguments[n]);E(e,t),e.classList.add(t)}function t(e,t){var n=e.currentTarget;if(!n.classList.contains("bi-check")){for(var i="",o=0;o<n.classList.length;o++)if(n.classList[o].startsWith("bi-")){i=n.classList[o];break}n.classList.remove(i),n.classList.add("spinner-border-sm"),n.classList.add("spinner-border");e=bootstrap.Tooltip.getInstance(n);e&&(e.setContent({".tooltip-inner":"Copying..."}),e.show()),t(n,function(){var e;n.classList.remove(i),n.classList.remove("spinner-border-sm"),n.classList.remove("spinner-border"),n.classList.add("bi-check"),bootstrap&&(e=bootstrap.Tooltip.getInstance(n))&&(e.setContent({".tooltip-inner":"Copied!"}),e.show()),setTimeout(function(){var e;n.classList.add(i),n.classList.remove("bi-check"),bootstrap&&(e=bootstrap.Tooltip.getInstance(n))&&e.setContent({".tooltip-inner":n.dataset.bsTitle})},2e3)})}}"/"==document.location.pathname&&T(k,"d-none");var e=document.querySelector(".post-share > .copy-url"),n=(e&&e.addEventListener("click",function(e){t(e,function(e,t){navigator.clipboard.writeText(document.location.origin+document.location.pathname),t()})}),document.getElementsByTagName("html")[0]),a=i.querySelector("#theme-btn"),s="theme";function l(e){var t=a.getElementsByTagName("svg");"dark"===e?(t[0].style.display="",t[1].style.display="none",a.getElementsByClassName("check")[0].classList.add("checked")):(t[0].style.display="none",t[1].style.display="",a.getElementsByClassName("check")[0].classList.remove("checked"));for(var n=0;n<o.length;n++){var i=o[n];"dark"===e?(i.children[1].style.display="inherit",i.children[2].style.display="none"):"light"===e&&(i.children[1].style.display="none",i.children[2].style.display="inherit")}window._theme&&window._theme(e)}function r(e){t(e,function(e,t){navigator.clipboard.writeText(e.parentElement.nextSibling.innerText),t()})}function c(e){t(e,function(e,t){var n=localStorage.getItem(s);e="dark"===n?e.parentElement.parentElement.children[1]:e.parentElement.parentElement.children[2],setTimeout(function(){html2canvas(e).then(e=>{e.toBlob(e=>navigator.clipboard.write([new ClipboardItem({"image/png":e})])),t()})},0)})}a.addEventListener("click",()=>{var e="dark"===localStorage.getItem(s)?"light":"dark";localStorage.setItem(s,e),l(n.dataset.bsTheme=e)}),l(localStorage.getItem(s)),a.children[0].classList.remove("hidden");for(var d=0;d<o.length;d++){o[d].getElementsByClassName("copy-code")[0].addEventListener("click",r);var m=o[d].getElementsByClassName("photo-code");m.length&&m[0].addEventListener("click",c)}for(var S=function(){var a,o,s;if(f.children[2]&&"none"!=f.children[2].style.display)return a=f.querySelector(".main-content").querySelectorAll("[id]"),o=void 0,this.initNavs=function(e){s=e.querySelectorAll("li.bookmark-nav");for(var t=0;t<a.length;t++){for(var n=a[t].id,i=null,o=0;o<s.length;o++)if(s[o].dataset.id==n){i=s[o];break}a[t].nav=i}setTimeout(function(){for(var e=0;e<a.length;e++){var t=a[e];if(l(t).visible&&t.nav)return void t.nav.classList.add("active")}},1e3),r()},f.children[1].addEventListener("scroll",r),this;function l(e){var e=e.getBoundingClientRect(),t=Math.max(document.documentElement.clientHeight,window.innerHeight),n=0<e.top&&!(e.bottom<0||0<=e.top-t)||e.top<0&&e.bottom>t,i=!1;return{visible:n,above:i=n?i:e.bottom<t}}function r(){if(s&&s.length){for(var e=0;e<s.length;e++)s[e].classList.remove("active");for(var t=void 0,e=0;e<a.length;e++){const i=a[e];var n=l(i);if(!n.visible&&n.above&&(t=i.nav),n.visible&&i.nav&&!i.nav.classList.contains("active"))return i.nav.classList.add("active"),o&&clearTimeout(o),void(o=setTimeout(function(){i.nav.scrollIntoView({behavior:"smooth"}),o=void 0},250))}t&&!t.classList.contains("active")&&(t.classList.add("active"),o&&clearTimeout(o),o=setTimeout(function(){t.scrollIntoView({behavior:"smooth"}),o=void 0},250))}}}(),h=function(){var l,r=i.querySelector("#nav-btn"),c=480,d="200px",m="0.25fr",h=730,v=535,u=f.children[0].children[0].children[0],g=f.children[2]&&f.children[2].children[0].children[0],t="sidebar-pinned",p=null==localStorage.getItem(t)||"true"==localStorage.getItem(t),y=!1,b=!1;function n(){window._onresize&&window._onresize();var e=window.outerWidth||window.innerWidth,t=e<c,n=t?y?"100%":"0":p?""+d:"0",i=`grid-template-columns: ${n} 1fr`,o=t&&y?"width: 100%":"0"!=n?"":"display: none",a=t&&y?"display: none":"",s=t?y?"sidebar-show":"sidebar-hide":p?"sidebar-show":"sidebar-hide",n="0"==n;f.children[2]&&(m&&h&&v&&(n&&e<v||!n&&e<h?b||(u.innerHTML=l+g.innerHTML,S.initNavs(u),b=!0):b&&(u.innerHTML=l,S.initNavs(g),b=!1)),!m||t||b?(i+=";",f.children[2].style.display="none"):(i+=` ${m};`,f.children[2].style.display="")),T(r,!t&&p||t&&y?"rotate":"rotate-back","rotate","rotate-back"),p?(r.classList.add("text-shadow"),null==document.querySelector("main .sidebar .accordion > [title='VB-Consulting'] > .collapsed")&&T(k,"d-none")):("/"!=document.location.pathname&&E(k,"d-none"),r.classList.remove("text-shadow")),f.style=L?i:"display: grid;",L&&T(L,s,"sidebar-show","sidebar-hide"),L&&(L.firstChild.style=o),w.style=a,t&&!y&&"/"!=document.location.pathname&&E(k,"d-none"),t&&y&&T(k,"d-none")}function e(){var e=window.outerWidth<c;e?y=!y:p=!p,localStorage.setItem(t,p.toString()),n(),p?(r.classList.add("text-shadow"),null==document.querySelector("main .sidebar .accordion > [title='VB-Consulting'] > .collapsed")&&T(k,"d-none")):("/"!=document.location.pathname&&E(k,"d-none"),r.classList.remove("text-shadow")),e&&!y&&"/"!=document.location.pathname&&E(k,"d-none"),e&&y&&T(k,"d-none")}return m&&h&&v&&g&&(l=u.innerHTML,S.initNavs(g)),r.addEventListener("click",e),(window.onresize=n)(),this.closeSidebar=function(){window.outerWidth<c&&y&&e()},this}(),v=document.getElementsByClassName("auto-close"),u=0;u<v.length;u++)v[u].addEventListener("click",function(e){h.closeSidebar()});location.hash&&(e=document.getElementById(location.hash.replace("#","")))&&e.scrollIntoView()}();</script><script src="/bootstrap.bundle.min.js"></script><script>!function(){for(var e=document.querySelectorAll('[data-bs-toggle="tooltip"]'),t=0;t<e.length;t++)new bootstrap.Tooltip(e[t]);var n=document.getElementsByClassName("accordion-item");if(n.length){for(t=0;t<n.length;t++){var o=n[t];o.querySelectorAll("[href='"+document.location.pathname+"']").length&&o.firstChild.click()}var l=document.querySelector("nav.navbar").querySelector(".home"),a=document.getElementsByClassName("accordion");"/"==document.location.pathname&&l.classList.add("d-none");for(t=0;t<n.length;t++){var s=a[t];s&&s.firstChild&&"VB-Consulting"==s.firstChild.title&&(null!=s.firstChild.querySelector(".collapse")&&l.classList.contains("d-none")&&"/"!=document.location.pathname&&l.classList.remove("d-none"),s.addEventListener("show.bs.collapse",function(){"/"!=document.location.pathname&&l.classList.remove("d-none"),l.classList.add("d-none")}),s.addEventListener("hide.bs.collapse",function(){"/"!=document.location.pathname&&l.classList.remove("d-none")}))}}}();</script><script src="/html2canvas.min.js"></script><script async defer src="https://buttons.github.io/buttons.js"></script></body><script async data-id="101435862" src="//static.getclicky.com/js"></script></html>