mirror of
https://github.com/d3vyce/fastapi-toolsets.git
synced 2026-08-08 17:34:08 +00:00
Compare commits
14
Commits
07289c015a
...
gh-pages
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eca29a5bdb | ||
|
|
c6d31cdac9 | ||
|
|
c9285b0fb8 | ||
|
|
8c60711c56 | ||
|
|
ad920321e8 | ||
|
|
95c5fb7828 | ||
|
|
e449df76c2 | ||
|
|
0c48b83fdd | ||
|
|
9a13ebdd22 | ||
|
|
1042121c1b | ||
|
|
c541fb4f85 | ||
|
|
84602c0fcf | ||
|
|
8f42f8da40 | ||
|
|
b8da326810 |
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1,81 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/cli/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/crud/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/db/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/dependencies/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/exceptions/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/fixtures/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/logger/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/metrics/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/models/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/pytest/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/module/schemas/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/cli/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/crud/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/db/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/dependencies/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/exceptions/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/fixtures/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/logger/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/metrics/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/models/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/pytest/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/reference/schemas/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/examples/pagination-search/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/migration/v3/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.0/migration/v2/</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="/v3.0/assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<link rel="icon" href="/v3.1/assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -30,12 +30,12 @@
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/v3.0/assets/stylesheets/modern/main.53a7feaf.min.css">
|
||||
<link rel="stylesheet" href="/v3.1/assets/stylesheets/modern/main.53a7feaf.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/v3.0/assets/stylesheets/modern/palette.dfe2e883.min.css">
|
||||
<link rel="stylesheet" href="/v3.1/assets/stylesheets/modern/palette.dfe2e883.min.css">
|
||||
|
||||
|
||||
|
||||
@@ -49,12 +49,12 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("/v3.0",location),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,a=__md_scope)=>JSON.parse(t.getItem(a.pathname+"."+e)),__md_set=(e,t,a=localStorage,_=__md_scope)=>{try{a.setItem(_.pathname+"."+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute("data-platform",navigator.platform)</script>
|
||||
<script>__md_scope=new URL("/v3.1",location),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,a=__md_scope)=>JSON.parse(t.getItem(a.pathname+"."+e)),__md_set=(e,t,a=localStorage,_=__md_scope)=>{try{a.setItem(_.pathname+"."+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute("data-platform",navigator.platform)</script>
|
||||
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
<header class="md-header" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="/v3.0/" title="FastAPI Toolsets" class="md-header__button md-logo" aria-label="FastAPI Toolsets" data-md-component="logo">
|
||||
<a href="/v3.1/" title="FastAPI Toolsets" class="md-header__button md-logo" aria-label="FastAPI Toolsets" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="lucide lucide-book-open" viewBox="0 0 24 24"><path d="M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/></svg>
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
|
||||
<li class="md-tabs__item">
|
||||
<a href="/v3.0/" class="md-tabs__link">
|
||||
<a href="/v3.1/" class="md-tabs__link">
|
||||
|
||||
|
||||
Home
|
||||
@@ -224,7 +224,7 @@
|
||||
|
||||
|
||||
<li class="md-tabs__item">
|
||||
<a href="/v3.0/module/cli/" class="md-tabs__link">
|
||||
<a href="/v3.1/module/cli/" class="md-tabs__link">
|
||||
|
||||
|
||||
Modules
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
|
||||
<li class="md-tabs__item">
|
||||
<a href="/v3.0/reference/cli/" class="md-tabs__link">
|
||||
<a href="/v3.1/reference/cli/" class="md-tabs__link">
|
||||
|
||||
|
||||
Reference
|
||||
@@ -262,7 +262,7 @@
|
||||
|
||||
|
||||
<li class="md-tabs__item">
|
||||
<a href="/v3.0/examples/pagination-search/" class="md-tabs__link">
|
||||
<a href="/v3.1/examples/pagination-search/" class="md-tabs__link">
|
||||
|
||||
|
||||
Examples
|
||||
@@ -281,7 +281,7 @@
|
||||
|
||||
|
||||
<li class="md-tabs__item">
|
||||
<a href="/v3.0/migration/v3/" class="md-tabs__link">
|
||||
<a href="/v3.1/migration/v3/" class="md-tabs__link">
|
||||
|
||||
|
||||
Migration
|
||||
@@ -330,7 +330,7 @@
|
||||
|
||||
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="/v3.0/" title="FastAPI Toolsets" class="md-nav__button md-logo" aria-label="FastAPI Toolsets" data-md-component="logo">
|
||||
<a href="/v3.1/" title="FastAPI Toolsets" class="md-nav__button md-logo" aria-label="FastAPI Toolsets" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="lucide lucide-book-open" viewBox="0 0 24 24"><path d="M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/></svg>
|
||||
@@ -360,7 +360,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/" class="md-nav__link">
|
||||
<a href="/v3.1/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -463,7 +463,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/cli/" class="md-nav__link">
|
||||
<a href="/v3.1/module/cli/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -491,7 +491,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/crud/" class="md-nav__link">
|
||||
<a href="/v3.1/module/crud/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -519,7 +519,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/db/" class="md-nav__link">
|
||||
<a href="/v3.1/module/db/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -547,7 +547,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/dependencies/" class="md-nav__link">
|
||||
<a href="/v3.1/module/dependencies/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -575,7 +575,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/exceptions/" class="md-nav__link">
|
||||
<a href="/v3.1/module/exceptions/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -603,7 +603,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/fixtures/" class="md-nav__link">
|
||||
<a href="/v3.1/module/fixtures/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -631,7 +631,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/logger/" class="md-nav__link">
|
||||
<a href="/v3.1/module/logger/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -659,7 +659,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/metrics/" class="md-nav__link">
|
||||
<a href="/v3.1/module/metrics/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -687,7 +687,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/models/" class="md-nav__link">
|
||||
<a href="/v3.1/module/models/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +715,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/pytest/" class="md-nav__link">
|
||||
<a href="/v3.1/module/pytest/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -743,7 +743,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/module/schemas/" class="md-nav__link">
|
||||
<a href="/v3.1/module/schemas/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -854,7 +854,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/cli/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/cli/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -882,7 +882,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/crud/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/crud/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -910,7 +910,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/db/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/db/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -938,7 +938,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/dependencies/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/dependencies/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -966,7 +966,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/exceptions/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/exceptions/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -994,7 +994,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/fixtures/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/fixtures/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1022,7 +1022,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/logger/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/logger/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1050,7 +1050,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/metrics/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/metrics/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1078,7 +1078,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/models/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/models/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1106,7 +1106,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/pytest/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/pytest/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/reference/schemas/" class="md-nav__link">
|
||||
<a href="/v3.1/reference/schemas/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1225,7 +1225,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/examples/pagination-search/" class="md-nav__link">
|
||||
<a href="/v3.1/examples/pagination-search/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1318,7 +1318,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/migration/v3/" class="md-nav__link">
|
||||
<a href="/v3.1/migration/v3/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1346,7 +1346,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/v3.0/migration/v2/" class="md-nav__link">
|
||||
<a href="/v3.1/migration/v2/" class="md-nav__link">
|
||||
|
||||
|
||||
|
||||
@@ -1497,10 +1497,10 @@
|
||||
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"/v3.0","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"/v3.0/assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"/v3.1","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"/v3.1/assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="/v3.0/assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="/v3.1/assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+4
-4
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/examples/pagination-search/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/examples/pagination-search/">
|
||||
|
||||
|
||||
<link rel="prev" href="../../reference/schemas/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2195,7 +2195,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/">
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="./assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1812,7 +1812,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":".","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"./assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="./assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="./assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/migration/v2/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/migration/v2/">
|
||||
|
||||
|
||||
<link rel="prev" href="../v3/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2028,7 +2028,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/migration/v3/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/migration/v3/">
|
||||
|
||||
|
||||
<link rel="prev" href="../../examples/pagination-search/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2016,7 +2016,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/cli/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/cli/">
|
||||
|
||||
|
||||
<link rel="prev" href="../..">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1868,7 +1868,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/crud/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/crud/">
|
||||
|
||||
|
||||
<link rel="prev" href="../cli/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2483,112 +2483,163 @@
|
||||
</span><span id="__span-18-3"><a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="n">search_fields</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">country</span><span class="p">],</span>
|
||||
</span><span id="__span-18-4"><a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>This allows searching with both <a href="../../reference/crud/#fastapi_toolsets.crud.factory.AsyncCrud.offset_paginate"><code>offset_paginate</code></a> and <a href="../../reference/crud/#fastapi_toolsets.crud.factory.AsyncCrud.cursor_paginate"><code>cursor_paginate</code></a>:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-19-2"><a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_users</span><span class="p">(</span>
|
||||
</span><span id="__span-19-3"><a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-19-4"><a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-19-5"><a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-19-6"><a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
<p>Or via the dependency to narrow which fields are exposed as query parameters:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">params</span> <span class="o">=</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">(</span><span class="n">search_fields</span><span class="o">=</span><span class="p">[</span><span class="n">Post</span><span class="o">.</span><span class="n">title</span><span class="p">])</span>
|
||||
</span></code></pre></div>
|
||||
<p>This allows searching with both <a href="../../reference/crud/#fastapi_toolsets.crud.factory.AsyncCrud.offset_paginate"><code>offset_paginate</code></a> and <a href="../../reference/crud/#fastapi_toolsets.crud.factory.AsyncCrud.cursor_paginate"><code>cursor_paginate</code></a>:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-20-2"><a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_users</span><span class="p">(</span>
|
||||
</span><span id="__span-20-3"><a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-20-4"><a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-20-5"><a id="__codelineno-20-5" name="__codelineno-20-5" href="#__codelineno-20-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">CursorPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-20-6"><a id="__codelineno-20-6" name="__codelineno-20-6" href="#__codelineno-20-6"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span><span id="__span-20-4"><a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-20-5"><a id="__codelineno-20-5" name="__codelineno-20-5" href="#__codelineno-20-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-20-6"><a id="__codelineno-20-6" name="__codelineno-20-6" href="#__codelineno-20-6"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<h3 id="faceted-search">Faceted search<a class="headerlink" href="#faceted-search" title="Permanent link">¶</a></h3>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Added in <code>v1.2</code></p>
|
||||
</div>
|
||||
<p>Declare <code>facet_fields</code> on the CRUD class to return distinct column values alongside paginated results. This is useful for populating filter dropdowns or building faceted search UIs.</p>
|
||||
<p>Facet fields use the same syntax as <code>searchable_fields</code> — direct columns or relationship tuples:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-21-1"><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="n">UserCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-21-2"><a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a> <span class="n">model</span><span class="o">=</span><span class="n">User</span><span class="p">,</span>
|
||||
</span><span id="__span-21-3"><a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="n">facet_fields</span><span class="o">=</span><span class="p">[</span>
|
||||
</span><span id="__span-21-4"><a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="n">User</span><span class="o">.</span><span class="n">status</span><span class="p">,</span>
|
||||
</span><span id="__span-21-5"><a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="n">User</span><span class="o">.</span><span class="n">country</span><span class="p">,</span>
|
||||
</span><span id="__span-21-6"><a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a> <span class="p">(</span><span class="n">User</span><span class="o">.</span><span class="n">role</span><span class="p">,</span> <span class="n">Role</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># value from a related model</span>
|
||||
</span><span id="__span-21-7"><a id="__codelineno-21-7" name="__codelineno-21-7" href="#__codelineno-21-7"></a> <span class="p">],</span>
|
||||
</span><span id="__span-21-8"><a id="__codelineno-21-8" name="__codelineno-21-8" href="#__codelineno-21-8"></a><span class="p">)</span>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-21-1"><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-21-2"><a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_users</span><span class="p">(</span>
|
||||
</span><span id="__span-21-3"><a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-21-4"><a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-21-5"><a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">CursorPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-21-6"><a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>You can override <code>facet_fields</code> per call:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-22-1"><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span>
|
||||
</span><span id="__span-22-2"><a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-22-3"><a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="n">facet_fields</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">country</span><span class="p">],</span>
|
||||
</span><span id="__span-22-4"><a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a><span class="p">)</span>
|
||||
<p>The dependency adds two query parameters to the endpoint:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Parameter</th>
|
||||
<th>Type</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>search</code></td>
|
||||
<td><code>str \| null</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>search_column</code></td>
|
||||
<td><code>str \| null</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-22-1"><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>GET /posts?search=hello → search all configured columns
|
||||
</span><span id="__span-22-2"><a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a>GET /posts?search=hello&search_column=title → search only Post.title
|
||||
</span></code></pre></div>
|
||||
<p>The distinct values are returned in the <code>filter_attributes</code> field of <a href="../../reference/schemas/#fastapi_toolsets.schemas.PaginatedResponse"><code>PaginatedResponse</code></a>:</p>
|
||||
<p>The available search column keys are returned in the <code>search_columns</code> field of <a href="../../reference/schemas/#fastapi_toolsets.schemas.PaginatedResponse"><code>PaginatedResponse</code></a>. Use them to populate a column picker in the UI, or to validate <code>search_column</code> values on the client side:</p>
|
||||
<div class="language-json highlight"><pre><span></span><code><span id="__span-23-1"><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="p">{</span>
|
||||
</span><span id="__span-23-2"><a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"SUCCESS"</span><span class="p">,</span>
|
||||
</span><span id="__span-23-3"><a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a><span class="w"> </span><span class="nt">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"..."</span><span class="p">],</span>
|
||||
</span><span id="__span-23-4"><a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a><span class="w"> </span><span class="nt">"pagination"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s2">"..."</span><span class="w"> </span><span class="p">},</span>
|
||||
</span><span id="__span-23-5"><a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="w"> </span><span class="nt">"filter_attributes"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-23-6"><a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a><span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"active"</span><span class="p">,</span><span class="w"> </span><span class="s2">"inactive"</span><span class="p">],</span>
|
||||
</span><span id="__span-23-7"><a id="__codelineno-23-7" name="__codelineno-23-7" href="#__codelineno-23-7"></a><span class="w"> </span><span class="nt">"country"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"DE"</span><span class="p">,</span><span class="w"> </span><span class="s2">"FR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"US"</span><span class="p">],</span>
|
||||
</span><span id="__span-23-8"><a id="__codelineno-23-8" name="__codelineno-23-8" href="#__codelineno-23-8"></a><span class="w"> </span><span class="nt">"role__name"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"admin"</span><span class="p">,</span><span class="w"> </span><span class="s2">"editor"</span><span class="p">,</span><span class="w"> </span><span class="s2">"viewer"</span><span class="p">]</span>
|
||||
</span><span id="__span-23-9"><a id="__codelineno-23-9" name="__codelineno-23-9" href="#__codelineno-23-9"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-23-10"><a id="__codelineno-23-10" name="__codelineno-23-10" href="#__codelineno-23-10"></a><span class="p">}</span>
|
||||
</span><span id="__span-23-5"><a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="w"> </span><span class="nt">"search_columns"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"content"</span><span class="p">,</span><span class="w"> </span><span class="s2">"author__username"</span><span class="p">,</span><span class="w"> </span><span class="s2">"title"</span><span class="p">]</span>
|
||||
</span><span id="__span-23-6"><a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
<p>Use <code>filter_by</code> to pass the client's chosen filter values directly — no need to build SQLAlchemy conditions by hand. Any unknown key raises <a href="../../reference/exceptions/#fastapi_toolsets.exceptions.exceptions.InvalidFacetFilterError"><code>InvalidFacetFilterError</code></a>.</p>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">The keys in <code>filter_by</code> are the same keys the client received in <code>filter_attributes</code>.</p>
|
||||
<p>Keys use <code>__</code> as a separator for the full relationship chain. A direct column <code>User.status</code> produces <code>"status"</code>. A relationship tuple <code>(User.role, Role.name)</code> produces <code>"role__name"</code>. A deeper chain <code>(User.role, Role.permission, Permission.name)</code> produces <code>"role__permission__name"</code>.</p>
|
||||
<p class="admonition-title">Key format uses <code>__</code> as a separator for relationship chains.</p>
|
||||
<p>A direct column <code>Post.title</code> produces <code>"title"</code>. A relationship tuple <code>(Post.author, User.username)</code> produces <code>"author__username"</code>. An unknown <code>search_column</code> value raises <a href="../../reference/exceptions/#fastapi_toolsets.exceptions.exceptions.InvalidSearchColumnError"><code>InvalidSearchColumnError</code></a> (HTTP 422).</p>
|
||||
</div>
|
||||
<p><code>filter_by</code> and <code>filters</code> can be combined — both are applied with AND logic.</p>
|
||||
<p>Facet filtering is built into the consolidated params dependencies. When <code>filter=True</code> (the default), facet fields are exposed as query parameters and collected into <code>filter_by</code> automatically:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-24-1"><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Annotated</span>
|
||||
</span><span id="__span-24-2"><a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a>
|
||||
</span><span id="__span-24-3"><a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">Depends</span>
|
||||
</span><span id="__span-24-4"><a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a>
|
||||
</span><span id="__span-24-5"><a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a><span class="n">UserCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-24-6"><a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a> <span class="n">model</span><span class="o">=</span><span class="n">User</span><span class="p">,</span>
|
||||
</span><span id="__span-24-7"><a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a> <span class="n">facet_fields</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">User</span><span class="o">.</span><span class="n">country</span><span class="p">,</span> <span class="p">(</span><span class="n">User</span><span class="o">.</span><span class="n">role</span><span class="p">,</span> <span class="n">Role</span><span class="o">.</span><span class="n">name</span><span class="p">)],</span>
|
||||
<h3 id="faceted-search">Faceted search<a class="headerlink" href="#faceted-search" title="Permanent link">¶</a></h3>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Added in <code>v1.2</code></p>
|
||||
</div>
|
||||
<p>Declare <code>facet_fields</code> on the CRUD class to return distinct column values alongside paginated results. This is useful for populating filter dropdowns or building faceted search UIs. Relationship traversal is supported via tuples, using the same syntax as <code>searchable_fields</code>:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-24-1"><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="n">UserCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-24-2"><a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a> <span class="n">model</span><span class="o">=</span><span class="n">User</span><span class="p">,</span>
|
||||
</span><span id="__span-24-3"><a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a> <span class="n">facet_fields</span><span class="o">=</span><span class="p">[</span>
|
||||
</span><span id="__span-24-4"><a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a> <span class="n">User</span><span class="o">.</span><span class="n">status</span><span class="p">,</span>
|
||||
</span><span id="__span-24-5"><a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a> <span class="n">User</span><span class="o">.</span><span class="n">country</span><span class="p">,</span>
|
||||
</span><span id="__span-24-6"><a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a> <span class="p">(</span><span class="n">User</span><span class="o">.</span><span class="n">role</span><span class="p">,</span> <span class="n">Role</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># value from a related model</span>
|
||||
</span><span id="__span-24-7"><a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a> <span class="p">],</span>
|
||||
</span><span id="__span-24-8"><a id="__codelineno-24-8" name="__codelineno-24-8" href="#__codelineno-24-8"></a><span class="p">)</span>
|
||||
</span><span id="__span-24-9"><a id="__codelineno-24-9" name="__codelineno-24-9" href="#__codelineno-24-9"></a>
|
||||
</span><span id="__span-24-10"><a id="__codelineno-24-10" name="__codelineno-24-10" href="#__codelineno-24-10"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">response_model_exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="__span-24-11"><a id="__codelineno-24-11" name="__codelineno-24-11" href="#__codelineno-24-11"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span>
|
||||
</span><span id="__span-24-12"><a id="__codelineno-24-12" name="__codelineno-24-12" href="#__codelineno-24-12"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-24-13"><a id="__codelineno-24-13" name="__codelineno-24-13" href="#__codelineno-24-13"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-24-14"><a id="__codelineno-24-14" name="__codelineno-24-14" href="#__codelineno-24-14"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-24-15"><a id="__codelineno-24-15" name="__codelineno-24-15" href="#__codelineno-24-15"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span>
|
||||
</span><span id="__span-24-16"><a id="__codelineno-24-16" name="__codelineno-24-16" href="#__codelineno-24-16"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-24-17"><a id="__codelineno-24-17" name="__codelineno-24-17" href="#__codelineno-24-17"></a> <span class="o">**</span><span class="n">params</span><span class="p">,</span>
|
||||
</span><span id="__span-24-18"><a id="__codelineno-24-18" name="__codelineno-24-18" href="#__codelineno-24-18"></a> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">,</span>
|
||||
</span><span id="__span-24-19"><a id="__codelineno-24-19" name="__codelineno-24-19" href="#__codelineno-24-19"></a> <span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>Both single-value and multi-value query parameters work:</p>
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-25-1"><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>GET /users?status=active → filter_by={"status": ["active"]}
|
||||
</span><span id="__span-25-2"><a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a>GET /users?status=active&country=FR → filter_by={"status": ["active"], "country": ["FR"]}
|
||||
</span><span id="__span-25-3"><a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a>GET /users?role__name=admin&role__name=editor → filter_by={"role__name": ["admin", "editor"]} (IN clause)
|
||||
<p>You can override <code>facet_fields</code> per call:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-25-1"><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span>
|
||||
</span><span id="__span-25-2"><a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-25-3"><a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a> <span class="n">facet_fields</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">country</span><span class="p">],</span>
|
||||
</span><span id="__span-25-4"><a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<h2 id="sorting">Sorting<a class="headerlink" href="#sorting" title="Permanent link">¶</a></h2>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Added in <code>v1.3</code></p>
|
||||
</div>
|
||||
<p>Declare <code>order_fields</code> on the CRUD class to expose client-driven column ordering via <code>order_by</code> and <code>order</code> query parameters.</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-26-1"><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="n">UserCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-26-2"><a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a> <span class="n">model</span><span class="o">=</span><span class="n">User</span><span class="p">,</span>
|
||||
</span><span id="__span-26-3"><a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a> <span class="n">order_fields</span><span class="o">=</span><span class="p">[</span>
|
||||
</span><span id="__span-26-4"><a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a> <span class="n">User</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="__span-26-5"><a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a> <span class="n">User</span><span class="o">.</span><span class="n">created_at</span><span class="p">,</span>
|
||||
</span><span id="__span-26-6"><a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a> <span class="p">],</span>
|
||||
</span><span id="__span-26-7"><a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a><span class="p">)</span>
|
||||
<p>Or via the dependency to narrow which fields are exposed as query parameters:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-26-1"><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="n">params</span> <span class="o">=</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">(</span><span class="n">facet_fields</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">country</span><span class="p">])</span>
|
||||
</span></code></pre></div>
|
||||
<p>Ordering is built into the consolidated params dependencies. When <code>order=True</code> (the default), <code>order_by</code> and <code>order</code> query parameters are exposed and resolved into an <code>OrderByClause</code> automatically:</p>
|
||||
<p>Facet filtering is built into the consolidated params dependencies. When <code>filter=True</code> (the default), each facet field is exposed as a query parameter and values are collected into <code>filter_by</code> automatically:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-27-1"><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Annotated</span>
|
||||
</span><span id="__span-27-2"><a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a>
|
||||
</span><span id="__span-27-3"><a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">Depends</span>
|
||||
</span><span id="__span-27-4"><a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a>
|
||||
</span><span id="__span-27-5"><a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-27-5"><a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">response_model_exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="__span-27-6"><a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span>
|
||||
</span><span id="__span-27-7"><a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-27-8"><a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">(</span>
|
||||
</span><span id="__span-27-9"><a id="__codelineno-27-9" name="__codelineno-27-9" href="#__codelineno-27-9"></a> <span class="n">default_order_field</span><span class="o">=</span><span class="n">User</span><span class="o">.</span><span class="n">created_at</span><span class="p">,</span>
|
||||
</span><span id="__span-27-10"><a id="__codelineno-27-10" name="__codelineno-27-10" href="#__codelineno-27-10"></a> <span class="p">))],</span>
|
||||
</span><span id="__span-27-11"><a id="__codelineno-27-11" name="__codelineno-27-11" href="#__codelineno-27-11"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-27-12"><a id="__codelineno-27-12" name="__codelineno-27-12" href="#__codelineno-27-12"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span><span id="__span-27-8"><a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-27-9"><a id="__codelineno-27-9" name="__codelineno-27-9" href="#__codelineno-27-9"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-27-10"><a id="__codelineno-27-10" name="__codelineno-27-10" href="#__codelineno-27-10"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-28-1"><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">response_model_exclude_none</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="__span-28-2"><a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span>
|
||||
</span><span id="__span-28-3"><a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-28-4"><a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-28-5"><a id="__codelineno-28-5" name="__codelineno-28-5" href="#__codelineno-28-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">CursorPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-28-6"><a id="__codelineno-28-6" name="__codelineno-28-6" href="#__codelineno-28-6"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>Both single-value and multi-value query parameters work:</p>
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-29-1"><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>GET /users?status=active → filter_by={"status": ["active"]}
|
||||
</span><span id="__span-29-2"><a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a>GET /users?status=active&country=FR → filter_by={"status": ["active"], "country": ["FR"]}
|
||||
</span><span id="__span-29-3"><a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a>GET /users?role__name=admin&role__name=editor → filter_by={"role__name": ["admin", "editor"]} (IN clause)
|
||||
</span></code></pre></div>
|
||||
<p><code>filter_by</code> and <code>filters</code> can be combined — both are applied with AND logic.</p>
|
||||
<p>The distinct values for each facet field are returned in the <code>filter_attributes</code> field of <a href="../../reference/schemas/#fastapi_toolsets.schemas.PaginatedResponse"><code>PaginatedResponse</code></a>. Use them to populate filter dropdowns in the UI, or to validate <code>filter_by</code> keys on the client side:</p>
|
||||
<div class="language-json highlight"><pre><span></span><code><span id="__span-30-1"><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a><span class="p">{</span>
|
||||
</span><span id="__span-30-2"><a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a><span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"SUCCESS"</span><span class="p">,</span>
|
||||
</span><span id="__span-30-3"><a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a><span class="w"> </span><span class="nt">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"..."</span><span class="p">],</span>
|
||||
</span><span id="__span-30-4"><a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a><span class="w"> </span><span class="nt">"pagination"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s2">"..."</span><span class="w"> </span><span class="p">},</span>
|
||||
</span><span id="__span-30-5"><a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a><span class="w"> </span><span class="nt">"filter_attributes"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||||
</span><span id="__span-30-6"><a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a><span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"active"</span><span class="p">,</span><span class="w"> </span><span class="s2">"inactive"</span><span class="p">],</span>
|
||||
</span><span id="__span-30-7"><a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a><span class="w"> </span><span class="nt">"country"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"DE"</span><span class="p">,</span><span class="w"> </span><span class="s2">"FR"</span><span class="p">,</span><span class="w"> </span><span class="s2">"US"</span><span class="p">],</span>
|
||||
</span><span id="__span-30-8"><a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a><span class="w"> </span><span class="nt">"role__name"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"admin"</span><span class="p">,</span><span class="w"> </span><span class="s2">"editor"</span><span class="p">,</span><span class="w"> </span><span class="s2">"viewer"</span><span class="p">]</span>
|
||||
</span><span id="__span-30-9"><a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a><span class="w"> </span><span class="p">}</span>
|
||||
</span><span id="__span-30-10"><a id="__codelineno-30-10" name="__codelineno-30-10" href="#__codelineno-30-10"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Key format uses <code>__</code> as a separator for relationship chains.</p>
|
||||
<p>A direct column <code>User.status</code> produces <code>"status"</code>. A relationship tuple <code>(User.role, Role.name)</code> produces <code>"role__name"</code>. A deeper chain <code>(User.role, Role.permission, Permission.name)</code> produces <code>"role__permission__name"</code>. An unknown <code>filter_by</code> key raises <a href="../../reference/exceptions/#fastapi_toolsets.exceptions.exceptions.InvalidFacetFilterError"><code>InvalidFacetFilterError</code></a> (HTTP 422).</p>
|
||||
</div>
|
||||
<h2 id="sorting">Sorting<a class="headerlink" href="#sorting" title="Permanent link">¶</a></h2>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Added in <code>v1.3</code></p>
|
||||
</div>
|
||||
<p>Declare <code>order_fields</code> on the CRUD class. Relationship traversal is supported via tuples, using the same syntax as <code>searchable_fields</code> and <code>facet_fields</code>:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-31-1"><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="n">UserCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-31-2"><a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a> <span class="n">model</span><span class="o">=</span><span class="n">User</span><span class="p">,</span>
|
||||
</span><span id="__span-31-3"><a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a> <span class="n">order_fields</span><span class="o">=</span><span class="p">[</span>
|
||||
</span><span id="__span-31-4"><a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a> <span class="n">User</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="__span-31-5"><a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a> <span class="n">User</span><span class="o">.</span><span class="n">created_at</span><span class="p">,</span>
|
||||
</span><span id="__span-31-6"><a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a> <span class="p">(</span><span class="n">User</span><span class="o">.</span><span class="n">role</span><span class="p">,</span> <span class="n">Role</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># sort by a related model column</span>
|
||||
</span><span id="__span-31-7"><a id="__codelineno-31-7" name="__codelineno-31-7" href="#__codelineno-31-7"></a> <span class="p">],</span>
|
||||
</span><span id="__span-31-8"><a id="__codelineno-31-8" name="__codelineno-31-8" href="#__codelineno-31-8"></a><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>You can override <code>order_fields</code> per call:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-32-1"><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span>
|
||||
</span><span id="__span-32-2"><a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-32-3"><a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a> <span class="n">order_fields</span><span class="o">=</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 id="__span-32-4"><a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>Or via the dependency to narrow which fields are exposed as query parameters:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-33-1"><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="n">params</span> <span class="o">=</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">(</span><span class="n">order_fields</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">name</span><span class="p">])</span>
|
||||
</span></code></pre></div>
|
||||
<p>Sorting is built into the consolidated params dependencies. When <code>order=True</code> (the default), <code>order_by</code> and <code>order</code> query parameters are exposed and resolved into an <code>OrderByClause</code> automatically:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-34-1"><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Annotated</span>
|
||||
</span><span id="__span-34-2"><a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a>
|
||||
</span><span id="__span-34-3"><a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">Depends</span>
|
||||
</span><span id="__span-34-4"><a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a>
|
||||
</span><span id="__span-34-5"><a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-34-6"><a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span>
|
||||
</span><span id="__span-34-7"><a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-34-8"><a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-34-9"><a id="__codelineno-34-9" name="__codelineno-34-9" href="#__codelineno-34-9"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-34-10"><a id="__codelineno-34-10" name="__codelineno-34-10" href="#__codelineno-34-10"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-35-1"><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-35-2"><a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span>
|
||||
</span><span id="__span-35-3"><a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-35-4"><a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-35-5"><a id="__codelineno-35-5" name="__codelineno-35-5" href="#__codelineno-35-5"></a><span class="p">)</span> <span class="o">-></span> <span class="n">CursorPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-35-6"><a id="__codelineno-35-6" name="__codelineno-35-6" href="#__codelineno-35-6"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">cursor_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>The dependency adds two query parameters to the endpoint:</p>
|
||||
<table>
|
||||
@@ -2601,7 +2652,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>order_by</code></td>
|
||||
<td><code>str | null</code></td>
|
||||
<td><code>str \| null</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>order</code></td>
|
||||
@@ -2609,13 +2660,25 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-28-1"><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>GET /users?order_by=name&order=asc → ORDER BY users.name ASC
|
||||
</span><span id="__span-28-2"><a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a>GET /users?order_by=name&order=desc → ORDER BY users.name DESC
|
||||
<div class="language-text highlight"><pre><span></span><code><span id="__span-36-1"><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a>GET /users?order_by=name&order=asc → ORDER BY users.name ASC
|
||||
</span><span id="__span-36-2"><a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a>GET /users?order_by=role__name&order=desc → LEFT JOIN roles ON ... ORDER BY roles.name DESC
|
||||
</span></code></pre></div>
|
||||
<p>An unknown <code>order_by</code> value raises <a href="../../reference/exceptions/#fastapi_toolsets.exceptions.exceptions.InvalidOrderFieldError"><code>InvalidOrderFieldError</code></a> (HTTP 422).</p>
|
||||
<p>You can also pass <code>order_fields</code> directly to override the class-level defaults:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-29-1"><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="n">params</span> <span class="o">=</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">(</span><span class="n">order_fields</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">name</span><span class="p">])</span>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Relationship tuples are joined automatically.</p>
|
||||
<p>When a relation field is selected, the related table is LEFT OUTER JOINed automatically. An unknown <code>order_by</code> value raises <a href="../../reference/exceptions/#fastapi_toolsets.exceptions.exceptions.InvalidOrderFieldError"><code>InvalidOrderFieldError</code></a> (HTTP 422).</p>
|
||||
</div>
|
||||
<p>The available sort keys are returned in the <code>order_columns</code> field of <a href="../../reference/schemas/#fastapi_toolsets.schemas.PaginatedResponse"><code>PaginatedResponse</code></a>. Use them to populate a sort picker in the UI, or to validate <code>order_by</code> values on the client side:</p>
|
||||
<div class="language-json highlight"><pre><span></span><code><span id="__span-37-1"><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a><span class="p">{</span>
|
||||
</span><span id="__span-37-2"><a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a><span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"SUCCESS"</span><span class="p">,</span>
|
||||
</span><span id="__span-37-3"><a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a><span class="w"> </span><span class="nt">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"..."</span><span class="p">],</span>
|
||||
</span><span id="__span-37-4"><a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a><span class="w"> </span><span class="nt">"pagination"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s2">"..."</span><span class="w"> </span><span class="p">},</span>
|
||||
</span><span id="__span-37-5"><a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a><span class="w"> </span><span class="nt">"order_columns"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"created_at"</span><span class="p">,</span><span class="w"> </span><span class="s2">"name"</span><span class="p">,</span><span class="w"> </span><span class="s2">"role__name"</span><span class="p">]</span>
|
||||
</span><span id="__span-37-6"><a id="__codelineno-37-6" name="__codelineno-37-6" href="#__codelineno-37-6"></a><span class="p">}</span>
|
||||
</span></code></pre></div>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Key format uses <code>__</code> as a separator for relationship chains.</p>
|
||||
<p>A direct column <code>User.name</code> produces <code>"name"</code>. A relationship tuple <code>(User.role, Role.name)</code> produces <code>"role__name"</code>.</p>
|
||||
</div>
|
||||
<h2 id="relationship-loading">Relationship loading<a class="headerlink" href="#relationship-loading" title="Permanent link">¶</a></h2>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Added in <code>v1.1</code></p>
|
||||
@@ -2625,71 +2688,71 @@
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>Avoid using <code>lazy="selectin"</code> on model relationships. It fires silently on every query, cannot be disabled per-call, and can cause unexpected cascading loads through deep relationship chains. Use <code>default_load_options</code> instead.</p>
|
||||
</div>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-30-1"><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlalchemy.orm</span><span class="w"> </span><span class="kn">import</span> <span class="n">selectinload</span>
|
||||
</span><span id="__span-30-2"><a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a>
|
||||
</span><span id="__span-30-3"><a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a><span class="n">ArticleCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-30-4"><a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a> <span class="n">model</span><span class="o">=</span><span class="n">Article</span><span class="p">,</span>
|
||||
</span><span id="__span-30-5"><a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a> <span class="n">default_load_options</span><span class="o">=</span><span class="p">[</span>
|
||||
</span><span id="__span-30-6"><a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a> <span class="n">selectinload</span><span class="p">(</span><span class="n">Article</span><span class="o">.</span><span class="n">category</span><span class="p">),</span>
|
||||
</span><span id="__span-30-7"><a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a> <span class="n">selectinload</span><span class="p">(</span><span class="n">Article</span><span class="o">.</span><span class="n">tags</span><span class="p">),</span>
|
||||
</span><span id="__span-30-8"><a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a> <span class="p">],</span>
|
||||
</span><span id="__span-30-9"><a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a><span class="p">)</span>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-38-1"><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlalchemy.orm</span><span class="w"> </span><span class="kn">import</span> <span class="n">selectinload</span>
|
||||
</span><span id="__span-38-2"><a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a>
|
||||
</span><span id="__span-38-3"><a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a><span class="n">ArticleCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-38-4"><a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a> <span class="n">model</span><span class="o">=</span><span class="n">Article</span><span class="p">,</span>
|
||||
</span><span id="__span-38-5"><a id="__codelineno-38-5" name="__codelineno-38-5" href="#__codelineno-38-5"></a> <span class="n">default_load_options</span><span class="o">=</span><span class="p">[</span>
|
||||
</span><span id="__span-38-6"><a id="__codelineno-38-6" name="__codelineno-38-6" href="#__codelineno-38-6"></a> <span class="n">selectinload</span><span class="p">(</span><span class="n">Article</span><span class="o">.</span><span class="n">category</span><span class="p">),</span>
|
||||
</span><span id="__span-38-7"><a id="__codelineno-38-7" name="__codelineno-38-7" href="#__codelineno-38-7"></a> <span class="n">selectinload</span><span class="p">(</span><span class="n">Article</span><span class="o">.</span><span class="n">tags</span><span class="p">),</span>
|
||||
</span><span id="__span-38-8"><a id="__codelineno-38-8" name="__codelineno-38-8" href="#__codelineno-38-8"></a> <span class="p">],</span>
|
||||
</span><span id="__span-38-9"><a id="__codelineno-38-9" name="__codelineno-38-9" href="#__codelineno-38-9"></a><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p><code>default_load_options</code> applies automatically to all read operations (<code>get</code>, <code>first</code>, <code>get_multi</code>, <code>offset_paginate</code>, <code>cursor_paginate</code>). When <code>load_options</code> is passed at call-site, it <strong>fully replaces</strong> <code>default_load_options</code> for that query — giving you precise per-call control:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-31-1"><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="c1"># Only loads category, tags are not loaded</span>
|
||||
</span><span id="__span-31-2"><a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a><span class="n">article</span> <span class="o">=</span> <span class="k">await</span> <span class="n">ArticleCrud</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
</span><span id="__span-31-3"><a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-31-4"><a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a> <span class="n">filters</span><span class="o">=</span><span class="p">[</span><span class="n">Article</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">article_id</span><span class="p">],</span>
|
||||
</span><span id="__span-31-5"><a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a> <span class="n">load_options</span><span class="o">=</span><span class="p">[</span><span class="n">selectinload</span><span class="p">(</span><span class="n">Article</span><span class="o">.</span><span class="n">category</span><span class="p">)],</span>
|
||||
</span><span id="__span-31-6"><a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a><span class="p">)</span>
|
||||
</span><span id="__span-31-7"><a id="__codelineno-31-7" name="__codelineno-31-7" href="#__codelineno-31-7"></a>
|
||||
</span><span id="__span-31-8"><a id="__codelineno-31-8" name="__codelineno-31-8" href="#__codelineno-31-8"></a><span class="c1"># Loads nothing — useful for write-then-refresh flows or lightweight checks</span>
|
||||
</span><span id="__span-31-9"><a id="__codelineno-31-9" name="__codelineno-31-9" href="#__codelineno-31-9"></a><span class="n">articles</span> <span class="o">=</span> <span class="k">await</span> <span class="n">ArticleCrud</span><span class="o">.</span><span class="n">get_multi</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="p">[])</span>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-39-1"><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a><span class="c1"># Only loads category, tags are not loaded</span>
|
||||
</span><span id="__span-39-2"><a id="__codelineno-39-2" name="__codelineno-39-2" href="#__codelineno-39-2"></a><span class="n">article</span> <span class="o">=</span> <span class="k">await</span> <span class="n">ArticleCrud</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
</span><span id="__span-39-3"><a id="__codelineno-39-3" name="__codelineno-39-3" href="#__codelineno-39-3"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-39-4"><a id="__codelineno-39-4" name="__codelineno-39-4" href="#__codelineno-39-4"></a> <span class="n">filters</span><span class="o">=</span><span class="p">[</span><span class="n">Article</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">article_id</span><span class="p">],</span>
|
||||
</span><span id="__span-39-5"><a id="__codelineno-39-5" name="__codelineno-39-5" href="#__codelineno-39-5"></a> <span class="n">load_options</span><span class="o">=</span><span class="p">[</span><span class="n">selectinload</span><span class="p">(</span><span class="n">Article</span><span class="o">.</span><span class="n">category</span><span class="p">)],</span>
|
||||
</span><span id="__span-39-6"><a id="__codelineno-39-6" name="__codelineno-39-6" href="#__codelineno-39-6"></a><span class="p">)</span>
|
||||
</span><span id="__span-39-7"><a id="__codelineno-39-7" name="__codelineno-39-7" href="#__codelineno-39-7"></a>
|
||||
</span><span id="__span-39-8"><a id="__codelineno-39-8" name="__codelineno-39-8" href="#__codelineno-39-8"></a><span class="c1"># Loads nothing — useful for write-then-refresh flows or lightweight checks</span>
|
||||
</span><span id="__span-39-9"><a id="__codelineno-39-9" name="__codelineno-39-9" href="#__codelineno-39-9"></a><span class="n">articles</span> <span class="o">=</span> <span class="k">await</span> <span class="n">ArticleCrud</span><span class="o">.</span><span class="n">get_multi</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="p">[])</span>
|
||||
</span></code></pre></div>
|
||||
<h2 id="many-to-many-relationships">Many-to-many relationships<a class="headerlink" href="#many-to-many-relationships" title="Permanent link">¶</a></h2>
|
||||
<p>Use <code>m2m_fields</code> to map schema fields containing lists of IDs to SQLAlchemy relationships. The CRUD class resolves and validates all IDs before persisting:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-32-1"><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="n">PostCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-32-2"><a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a> <span class="n">model</span><span class="o">=</span><span class="n">Post</span><span class="p">,</span>
|
||||
</span><span id="__span-32-3"><a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a> <span class="n">m2m_fields</span><span class="o">=</span><span class="p">{</span><span class="s2">"tag_ids"</span><span class="p">:</span> <span class="n">Post</span><span class="o">.</span><span class="n">tags</span><span class="p">},</span>
|
||||
</span><span id="__span-32-4"><a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a><span class="p">)</span>
|
||||
</span><span id="__span-32-5"><a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a>
|
||||
</span><span id="__span-32-6"><a id="__codelineno-32-6" name="__codelineno-32-6" href="#__codelineno-32-6"></a><span class="n">post</span> <span class="o">=</span> <span class="k">await</span> <span class="n">PostCrud</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="n">PostCreateSchema</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">"Hello"</span><span class="p">,</span> <span class="n">tag_ids</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]))</span>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-40-1"><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a><span class="n">PostCrud</span> <span class="o">=</span> <span class="n">CrudFactory</span><span class="p">(</span>
|
||||
</span><span id="__span-40-2"><a id="__codelineno-40-2" name="__codelineno-40-2" href="#__codelineno-40-2"></a> <span class="n">model</span><span class="o">=</span><span class="n">Post</span><span class="p">,</span>
|
||||
</span><span id="__span-40-3"><a id="__codelineno-40-3" name="__codelineno-40-3" href="#__codelineno-40-3"></a> <span class="n">m2m_fields</span><span class="o">=</span><span class="p">{</span><span class="s2">"tag_ids"</span><span class="p">:</span> <span class="n">Post</span><span class="o">.</span><span class="n">tags</span><span class="p">},</span>
|
||||
</span><span id="__span-40-4"><a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a><span class="p">)</span>
|
||||
</span><span id="__span-40-5"><a id="__codelineno-40-5" name="__codelineno-40-5" href="#__codelineno-40-5"></a>
|
||||
</span><span id="__span-40-6"><a id="__codelineno-40-6" name="__codelineno-40-6" href="#__codelineno-40-6"></a><span class="n">post</span> <span class="o">=</span> <span class="k">await</span> <span class="n">PostCrud</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="n">PostCreateSchema</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">"Hello"</span><span class="p">,</span> <span class="n">tag_ids</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]))</span>
|
||||
</span></code></pre></div>
|
||||
<h2 id="upsert">Upsert<a class="headerlink" href="#upsert" title="Permanent link">¶</a></h2>
|
||||
<p>Atomic <code>INSERT ... ON CONFLICT DO UPDATE</code> using PostgreSQL:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-33-1"><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">upsert</span><span class="p">(</span>
|
||||
</span><span id="__span-33-2"><a id="__codelineno-33-2" name="__codelineno-33-2" href="#__codelineno-33-2"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-33-3"><a id="__codelineno-33-3" name="__codelineno-33-3" href="#__codelineno-33-3"></a> <span class="n">obj</span><span class="o">=</span><span class="n">UserCreateSchema</span><span class="p">(</span><span class="n">email</span><span class="o">=</span><span class="s2">"alice@example.com"</span><span class="p">,</span> <span class="n">username</span><span class="o">=</span><span class="s2">"alice"</span><span class="p">),</span>
|
||||
</span><span id="__span-33-4"><a id="__codelineno-33-4" name="__codelineno-33-4" href="#__codelineno-33-4"></a> <span class="n">index_elements</span><span class="o">=</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 id="__span-33-5"><a id="__codelineno-33-5" name="__codelineno-33-5" href="#__codelineno-33-5"></a> <span class="n">set_</span><span class="o">=</span><span class="p">{</span><span class="s2">"username"</span><span class="p">},</span>
|
||||
</span><span id="__span-33-6"><a id="__codelineno-33-6" name="__codelineno-33-6" href="#__codelineno-33-6"></a><span class="p">)</span>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-41-1"><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a><span class="k">await</span> <span class="n">UserCrud</span><span class="o">.</span><span class="n">upsert</span><span class="p">(</span>
|
||||
</span><span id="__span-41-2"><a id="__codelineno-41-2" name="__codelineno-41-2" href="#__codelineno-41-2"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-41-3"><a id="__codelineno-41-3" name="__codelineno-41-3" href="#__codelineno-41-3"></a> <span class="n">obj</span><span class="o">=</span><span class="n">UserCreateSchema</span><span class="p">(</span><span class="n">email</span><span class="o">=</span><span class="s2">"alice@example.com"</span><span class="p">,</span> <span class="n">username</span><span class="o">=</span><span class="s2">"alice"</span><span class="p">),</span>
|
||||
</span><span id="__span-41-4"><a id="__codelineno-41-4" name="__codelineno-41-4" href="#__codelineno-41-4"></a> <span class="n">index_elements</span><span class="o">=</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 id="__span-41-5"><a id="__codelineno-41-5" name="__codelineno-41-5" href="#__codelineno-41-5"></a> <span class="n">set_</span><span class="o">=</span><span class="p">{</span><span class="s2">"username"</span><span class="p">},</span>
|
||||
</span><span id="__span-41-6"><a id="__codelineno-41-6" name="__codelineno-41-6" href="#__codelineno-41-6"></a><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<h2 id="response-serialization">Response serialization<a class="headerlink" href="#response-serialization" title="Permanent link">¶</a></h2>
|
||||
<div class="admonition info">
|
||||
<p class="admonition-title">Added in <code>v1.1</code></p>
|
||||
</div>
|
||||
<p>Pass a Pydantic schema class to <code>create</code>, <code>get</code>, <code>update</code>, or <code>offset_paginate</code> to serialize the result directly into that schema and wrap it in a <a href="../../reference/schemas/#fastapi_toolsets.schemas.Response"><code>Response[schema]</code></a> or <a href="../../reference/schemas/#fastapi_toolsets.schemas.PaginatedResponse"><code>PaginatedResponse[schema]</code></a>:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-34-1"><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">UserRead</span><span class="p">(</span><span class="n">PydanticBase</span><span class="p">):</span>
|
||||
</span><span id="__span-34-2"><a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a> <span class="nb">id</span><span class="p">:</span> <span class="n">UUID</span>
|
||||
</span><span id="__span-34-3"><a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a> <span class="n">username</span><span class="p">:</span> <span class="nb">str</span>
|
||||
</span><span id="__span-34-4"><a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a>
|
||||
</span><span id="__span-34-5"><a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
</span><span id="__span-34-6"><a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a> <span class="s2">"/</span><span class="si">{uuid}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="__span-34-7"><a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a> <span class="n">responses</span><span class="o">=</span><span class="n">generate_error_responses</span><span class="p">(</span><span class="n">NotFoundError</span><span class="p">),</span>
|
||||
</span><span id="__span-34-8"><a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a><span class="p">)</span>
|
||||
</span><span id="__span-34-9"><a id="__codelineno-34-9" name="__codelineno-34-9" href="#__codelineno-34-9"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_user</span><span class="p">(</span><span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span> <span class="n">uuid</span><span class="p">:</span> <span class="n">UUID</span><span class="p">)</span> <span class="o">-></span> <span class="n">Response</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-34-10"><a id="__codelineno-34-10" name="__codelineno-34-10" href="#__codelineno-34-10"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">crud</span><span class="o">.</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
</span><span id="__span-34-11"><a id="__codelineno-34-11" name="__codelineno-34-11" href="#__codelineno-34-11"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-34-12"><a id="__codelineno-34-12" name="__codelineno-34-12" href="#__codelineno-34-12"></a> <span class="n">filters</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">uuid</span><span class="p">],</span>
|
||||
</span><span id="__span-34-13"><a id="__codelineno-34-13" name="__codelineno-34-13" href="#__codelineno-34-13"></a> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">,</span>
|
||||
</span><span id="__span-34-14"><a id="__codelineno-34-14" name="__codelineno-34-14" href="#__codelineno-34-14"></a> <span class="p">)</span>
|
||||
</span><span id="__span-34-15"><a id="__codelineno-34-15" name="__codelineno-34-15" href="#__codelineno-34-15"></a>
|
||||
</span><span id="__span-34-16"><a id="__codelineno-34-16" name="__codelineno-34-16" href="#__codelineno-34-16"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-34-17"><a id="__codelineno-34-17" name="__codelineno-34-17" href="#__codelineno-34-17"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span>
|
||||
</span><span id="__span-34-18"><a id="__codelineno-34-18" name="__codelineno-34-18" href="#__codelineno-34-18"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-34-19"><a id="__codelineno-34-19" name="__codelineno-34-19" href="#__codelineno-34-19"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">crud</span><span class="o">.</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-34-20"><a id="__codelineno-34-20" name="__codelineno-34-20" href="#__codelineno-34-20"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-34-21"><a id="__codelineno-34-21" name="__codelineno-34-21" href="#__codelineno-34-21"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">crud</span><span class="o">.</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-42-1"><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">UserRead</span><span class="p">(</span><span class="n">PydanticBase</span><span class="p">):</span>
|
||||
</span><span id="__span-42-2"><a id="__codelineno-42-2" name="__codelineno-42-2" href="#__codelineno-42-2"></a> <span class="nb">id</span><span class="p">:</span> <span class="n">UUID</span>
|
||||
</span><span id="__span-42-3"><a id="__codelineno-42-3" name="__codelineno-42-3" href="#__codelineno-42-3"></a> <span class="n">username</span><span class="p">:</span> <span class="nb">str</span>
|
||||
</span><span id="__span-42-4"><a id="__codelineno-42-4" name="__codelineno-42-4" href="#__codelineno-42-4"></a>
|
||||
</span><span id="__span-42-5"><a id="__codelineno-42-5" name="__codelineno-42-5" href="#__codelineno-42-5"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
</span><span id="__span-42-6"><a id="__codelineno-42-6" name="__codelineno-42-6" href="#__codelineno-42-6"></a> <span class="s2">"/</span><span class="si">{uuid}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="__span-42-7"><a id="__codelineno-42-7" name="__codelineno-42-7" href="#__codelineno-42-7"></a> <span class="n">responses</span><span class="o">=</span><span class="n">generate_error_responses</span><span class="p">(</span><span class="n">NotFoundError</span><span class="p">),</span>
|
||||
</span><span id="__span-42-8"><a id="__codelineno-42-8" name="__codelineno-42-8" href="#__codelineno-42-8"></a><span class="p">)</span>
|
||||
</span><span id="__span-42-9"><a id="__codelineno-42-9" name="__codelineno-42-9" href="#__codelineno-42-9"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_user</span><span class="p">(</span><span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span> <span class="n">uuid</span><span class="p">:</span> <span class="n">UUID</span><span class="p">)</span> <span class="o">-></span> <span class="n">Response</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-42-10"><a id="__codelineno-42-10" name="__codelineno-42-10" href="#__codelineno-42-10"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">crud</span><span class="o">.</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
</span><span id="__span-42-11"><a id="__codelineno-42-11" name="__codelineno-42-11" href="#__codelineno-42-11"></a> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
||||
</span><span id="__span-42-12"><a id="__codelineno-42-12" name="__codelineno-42-12" href="#__codelineno-42-12"></a> <span class="n">filters</span><span class="o">=</span><span class="p">[</span><span class="n">User</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">uuid</span><span class="p">],</span>
|
||||
</span><span id="__span-42-13"><a id="__codelineno-42-13" name="__codelineno-42-13" href="#__codelineno-42-13"></a> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">,</span>
|
||||
</span><span id="__span-42-14"><a id="__codelineno-42-14" name="__codelineno-42-14" href="#__codelineno-42-14"></a> <span class="p">)</span>
|
||||
</span><span id="__span-42-15"><a id="__codelineno-42-15" name="__codelineno-42-15" href="#__codelineno-42-15"></a>
|
||||
</span><span id="__span-42-16"><a id="__codelineno-42-16" name="__codelineno-42-16" href="#__codelineno-42-16"></a><span class="nd">@router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
</span><span id="__span-42-17"><a id="__codelineno-42-17" name="__codelineno-42-17" href="#__codelineno-42-17"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span>
|
||||
</span><span id="__span-42-18"><a id="__codelineno-42-18" name="__codelineno-42-18" href="#__codelineno-42-18"></a> <span class="n">session</span><span class="p">:</span> <span class="n">SessionDep</span><span class="p">,</span>
|
||||
</span><span id="__span-42-19"><a id="__codelineno-42-19" name="__codelineno-42-19" href="#__codelineno-42-19"></a> <span class="n">params</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n">Depends</span><span class="p">(</span><span class="n">crud</span><span class="o">.</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate_params</span><span class="p">())],</span>
|
||||
</span><span id="__span-42-20"><a id="__codelineno-42-20" name="__codelineno-42-20" href="#__codelineno-42-20"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">UserRead</span><span class="p">]:</span>
|
||||
</span><span id="__span-42-21"><a id="__codelineno-42-21" name="__codelineno-42-21" href="#__codelineno-42-21"></a> <span class="k">return</span> <span class="k">await</span> <span class="n">crud</span><span class="o">.</span><span class="n">UserCrud</span><span class="o">.</span><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">UserRead</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>The schema must have <code>from_attributes=True</code> (or inherit from <a href="../../reference/schemas/#fastapi_toolsets.schemas.PydanticBase"><code>PydanticBase</code></a>) so it can be built from SQLAlchemy model instances.</p>
|
||||
<hr />
|
||||
@@ -2800,7 +2863,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/db/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/db/">
|
||||
|
||||
|
||||
<link rel="prev" href="../crud/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -679,6 +679,56 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#many-to-many-helpers" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Many-to-Many helpers
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Many-to-Many helpers">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#m2m_add-insert-associations" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_add — insert associations
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#m2m_remove-delete-associations" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_remove — delete associations
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#m2m_set-replace-the-full-set" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_set — replace the full set
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -1677,6 +1727,56 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#many-to-many-helpers" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Many-to-Many helpers
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Many-to-Many helpers">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#m2m_add-insert-associations" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_add — insert associations
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#m2m_remove-delete-associations" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_remove — delete associations
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#m2m_set-replace-the-full-set" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_set — replace the full set
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -1842,6 +1942,39 @@
|
||||
</span><span id="__span-6-5"><a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a> <span class="k">yield</span>
|
||||
</span><span id="__span-6-6"><a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a> <span class="k">await</span> <span class="n">cleanup_tables</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">db_session</span><span class="p">,</span> <span class="n">base</span><span class="o">=</span><span class="n">Base</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<h2 id="many-to-many-helpers">Many-to-Many helpers<a class="headerlink" href="#many-to-many-helpers" title="Permanent link">¶</a></h2>
|
||||
<p>SQLAlchemy's ORM collection API triggers lazy-loads when you append to a relationship inside a savepoint (e.g. inside <code>lock_tables</code> or a nested <code>get_transaction</code>). The three <code>m2m_*</code> helpers bypass the ORM collection entirely and issue direct SQL against the association table.</p>
|
||||
<h3 id="m2m_add-insert-associations"><code>m2m_add</code> — insert associations<a class="headerlink" href="#m2m_add-insert-associations" title="Permanent link">¶</a></h3>
|
||||
<p><a href="../../reference/db/#fastapi_toolsets.db.m2m_add"><code>m2m_add</code></a> inserts one or more rows into a secondary table without touching the ORM collection:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi_toolsets.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">lock_tables</span><span class="p">,</span> <span class="n">m2m_add</span>
|
||||
</span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>
|
||||
</span><span id="__span-7-3"><a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="k">async</span> <span class="k">with</span> <span class="n">lock_tables</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="p">[</span><span class="n">Tag</span><span class="p">]):</span>
|
||||
</span><span id="__span-7-4"><a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a> <span class="n">tag</span> <span class="o">=</span> <span class="k">await</span> <span class="n">TagCrud</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">TagCreate</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"python"</span><span class="p">))</span>
|
||||
</span><span id="__span-7-5"><a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a> <span class="k">await</span> <span class="n">m2m_add</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">post</span><span class="p">,</span> <span class="n">Post</span><span class="o">.</span><span class="n">tags</span><span class="p">,</span> <span class="n">tag</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>Pass <code>ignore_conflicts=True</code> to silently skip associations that already exist:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="k">await</span> <span class="n">m2m_add</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">post</span><span class="p">,</span> <span class="n">Post</span><span class="o">.</span><span class="n">tags</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">ignore_conflicts</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<h3 id="m2m_remove-delete-associations"><code>m2m_remove</code> — delete associations<a class="headerlink" href="#m2m_remove-delete-associations" title="Permanent link">¶</a></h3>
|
||||
<p><a href="../../reference/db/#fastapi_toolsets.db.m2m_remove"><code>m2m_remove</code></a> deletes specific association rows. Removing a non-existent association is a no-op:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi_toolsets.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_transaction</span><span class="p">,</span> <span class="n">m2m_remove</span>
|
||||
</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>
|
||||
</span><span id="__span-9-3"><a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="k">async</span> <span class="k">with</span> <span class="n">get_transaction</span><span class="p">(</span><span class="n">session</span><span class="p">):</span>
|
||||
</span><span id="__span-9-4"><a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a> <span class="k">await</span> <span class="n">m2m_remove</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">post</span><span class="p">,</span> <span class="n">Post</span><span class="o">.</span><span class="n">tags</span><span class="p">,</span> <span class="n">tag1</span><span class="p">,</span> <span class="n">tag2</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<h3 id="m2m_set-replace-the-full-set"><code>m2m_set</code> — replace the full set<a class="headerlink" href="#m2m_set-replace-the-full-set" title="Permanent link">¶</a></h3>
|
||||
<p><a href="../../reference/db/#fastapi_toolsets.db.m2m_set"><code>m2m_set</code></a> atomically replaces all associations: it deletes every existing row for the owner instance then inserts the new set. Passing no related instances clears the association entirely:</p>
|
||||
<div class="language-python highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi_toolsets.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_transaction</span><span class="p">,</span> <span class="n">m2m_set</span>
|
||||
</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>
|
||||
</span><span id="__span-10-3"><a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="c1"># Replace all tags</span>
|
||||
</span><span id="__span-10-4"><a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="k">async</span> <span class="k">with</span> <span class="n">get_transaction</span><span class="p">(</span><span class="n">session</span><span class="p">):</span>
|
||||
</span><span id="__span-10-5"><a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a> <span class="k">await</span> <span class="n">m2m_set</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">post</span><span class="p">,</span> <span class="n">Post</span><span class="o">.</span><span class="n">tags</span><span class="p">,</span> <span class="n">tag_a</span><span class="p">,</span> <span class="n">tag_b</span><span class="p">)</span>
|
||||
</span><span id="__span-10-6"><a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a>
|
||||
</span><span id="__span-10-7"><a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="c1"># Clear all tags</span>
|
||||
</span><span id="__span-10-8"><a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="k">async</span> <span class="k">with</span> <span class="n">get_transaction</span><span class="p">(</span><span class="n">session</span><span class="p">):</span>
|
||||
</span><span id="__span-10-9"><a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a> <span class="k">await</span> <span class="n">m2m_set</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">post</span><span class="p">,</span> <span class="n">Post</span><span class="o">.</span><span class="n">tags</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<p>All three helpers raise <code>TypeError</code> if the relationship attribute is not a Many-to-Many (i.e. has no secondary table).</p>
|
||||
<hr />
|
||||
<p><a href="../../reference/db/"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 7H5a2 2 0 0 0-2 2v8h2v-4h2v4h2V9a2 2 0 0 0-2-2m0 4H5V9h2m7-2h-4v10h2v-4h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2m0 4h-2V9h2m6 0v6h1v2h-4v-2h1V9h-1V7h4v2Z"/></svg></span> API Reference</a></p>
|
||||
|
||||
@@ -1950,7 +2083,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/dependencies/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/dependencies/">
|
||||
|
||||
|
||||
<link rel="prev" href="../db/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1794,7 +1794,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/exceptions/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/exceptions/">
|
||||
|
||||
|
||||
<link rel="prev" href="../dependencies/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2035,7 +2035,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/fixtures/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/fixtures/">
|
||||
|
||||
|
||||
<link rel="prev" href="../exceptions/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2136,7 +2136,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/logger/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/logger/">
|
||||
|
||||
|
||||
<link rel="prev" href="../fixtures/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1772,7 +1772,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/metrics/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/metrics/">
|
||||
|
||||
|
||||
<link rel="prev" href="../logger/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1953,7 +1953,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/models/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/models/">
|
||||
|
||||
|
||||
<link rel="prev" href="../metrics/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2210,7 +2210,7 @@ when the outermost <code>commit()</code> is called.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/pytest/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/pytest/">
|
||||
|
||||
|
||||
<link rel="prev" href="../models/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1890,7 +1890,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/module/schemas/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/module/schemas/">
|
||||
|
||||
|
||||
<link rel="prev" href="../pytest/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2036,7 +2036,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
Binary file not shown.
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/cli/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/cli/">
|
||||
|
||||
|
||||
<link rel="prev" href="../../module/schemas/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2121,7 +2121,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/crud/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/crud/">
|
||||
|
||||
|
||||
<link rel="prev" href="../cli/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2353,7 +2353,7 @@ the result is automatically wrapped in a <code>Response[schema]</code>.</p>
|
||||
|
||||
|
||||
<h3 id="fastapi_toolsets.crud.factory.AsyncCrud.cursor_paginate" class="doc doc-heading">
|
||||
<code class="highlight language-python"><span class="n">cursor_paginate</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outer_join</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">items_per_page</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">search</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_column</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">facet_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filter_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">schema</span><span class="p">)</span></code>
|
||||
<code class="highlight language-python"><span class="n">cursor_paginate</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outer_join</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">items_per_page</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">search</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_column</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">facet_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filter_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">schema</span><span class="p">)</span></code>
|
||||
|
||||
<span class="doc doc-labels">
|
||||
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
||||
@@ -2563,6 +2563,22 @@ tables.</p>
|
||||
<code>None</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>order_fields</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="fastapi_toolsets.types.OrderFieldType">OrderFieldType</span>] | None</code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>Fields allowed for sorting (overrides class default).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<code>None</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>facet_fields</code>
|
||||
@@ -2790,7 +2806,7 @@ list → IN clause. Raises InvalidFacetFilterError for unknown keys.</p>
|
||||
<code>order_fields</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="sqlalchemy.orm.QueryableAttribute">QueryableAttribute</span>[<a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a>]] | None</code>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="fastapi_toolsets.types.OrderFieldType">OrderFieldType</span>] | None</code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
@@ -3984,7 +4000,7 @@ the result is automatically wrapped in a <code>Response[schema]</code>.</p>
|
||||
|
||||
|
||||
<h3 id="fastapi_toolsets.crud.factory.AsyncCrud.offset_paginate" class="doc doc-heading">
|
||||
<code class="highlight language-python"><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outer_join</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">page</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">items_per_page</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">include_total</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">search</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_column</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">facet_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filter_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">schema</span><span class="p">)</span></code>
|
||||
<code class="highlight language-python"><span class="n">offset_paginate</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outer_join</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">page</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">items_per_page</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">include_total</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">search</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_column</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">facet_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filter_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">schema</span><span class="p">)</span></code>
|
||||
|
||||
<span class="doc doc-labels">
|
||||
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
||||
@@ -4208,6 +4224,22 @@ the result is automatically wrapped in a <code>Response[schema]</code>.</p>
|
||||
<code>None</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>order_fields</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="fastapi_toolsets.types.OrderFieldType">OrderFieldType</span>] | None</code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>Fields allowed for sorting (overrides class default).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<code>None</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>facet_fields</code>
|
||||
@@ -4451,7 +4483,7 @@ list → IN clause. Raises InvalidFacetFilterError for unknown keys.</p>
|
||||
<code>order_fields</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="sqlalchemy.orm.QueryableAttribute">QueryableAttribute</span>[<a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a>]] | None</code>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="fastapi_toolsets.types.OrderFieldType">OrderFieldType</span>] | None</code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
@@ -4539,7 +4571,7 @@ list → IN clause. Raises InvalidFacetFilterError for unknown keys.</p>
|
||||
|
||||
|
||||
<h3 id="fastapi_toolsets.crud.factory.AsyncCrud.paginate" class="doc doc-heading">
|
||||
<code class="highlight language-python"><span class="n">paginate</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">pagination_type</span><span class="o">=</span><span class="n">PaginationType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outer_join</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">page</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">items_per_page</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">include_total</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">search</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_column</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">facet_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filter_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">schema</span><span class="p">)</span></code>
|
||||
<code class="highlight language-python"><span class="n">paginate</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">pagination_type</span><span class="o">=</span><span class="n">PaginationType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> <span class="n">filters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outer_join</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">load_options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_joins</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">page</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">items_per_page</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">include_total</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">search</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">search_column</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">order_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">facet_fields</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">filter_by</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">schema</span><span class="p">)</span></code>
|
||||
|
||||
<span class="doc doc-labels">
|
||||
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
||||
@@ -4557,17 +4589,19 @@ list → IN clause. Raises InvalidFacetFilterError for unknown keys.</p>
|
||||
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">outer_join</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">load_options</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">ExecutableOption</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">order_by</span><span class="p">:</span> <span class="n">OrderByClause</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="n">items_per_page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> <span class="n">include_total</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> <span class="n">search</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">SearchConfig</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> <span class="n">search_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">SearchFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a> <span class="n">search_column</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a> <span class="n">facet_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">FacetFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a> <span class="n">filter_by</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="n">BaseModel</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-19"><a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a> <span class="n">schema</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">BaseModel</span><span class="p">],</span>
|
||||
</span><span id="__span-0-20"><a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">order_joins</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="n">page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> <span class="n">items_per_page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> <span class="n">include_total</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> <span class="n">search</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">SearchConfig</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a> <span class="n">search_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">SearchFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a> <span class="n">search_column</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a> <span class="n">order_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">OrderFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-19"><a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a> <span class="n">facet_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">FacetFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-20"><a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a> <span class="n">filter_by</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="n">BaseModel</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-21"><a id="__codelineno-0-21" name="__codelineno-0-21" href="#__codelineno-0-21"></a> <span class="n">schema</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">BaseModel</span><span class="p">],</span>
|
||||
</span><span id="__span-0-22"><a id="__codelineno-0-22" name="__codelineno-0-22" href="#__codelineno-0-22"></a><span class="p">)</span> <span class="o">-></span> <span class="n">OffsetPaginatedResponse</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span>
|
||||
</span></code></pre></div><div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">paginate</span><span class="p">(</span>
|
||||
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">session</span><span class="p">:</span> <span class="n">AsyncSession</span><span class="p">,</span>
|
||||
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="o">*</span><span class="p">,</span>
|
||||
@@ -4577,17 +4611,19 @@ list → IN clause. Raises InvalidFacetFilterError for unknown keys.</p>
|
||||
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">outer_join</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">load_options</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">ExecutableOption</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">order_by</span><span class="p">:</span> <span class="n">OrderByClause</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="n">items_per_page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> <span class="n">include_total</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> <span class="n">search</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">SearchConfig</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> <span class="n">search_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">SearchFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a> <span class="n">search_column</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a> <span class="n">facet_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">FacetFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a> <span class="n">filter_by</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="n">BaseModel</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-19"><a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a> <span class="n">schema</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">BaseModel</span><span class="p">],</span>
|
||||
</span><span id="__span-0-20"><a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a><span class="p">)</span> <span class="o">-></span> <span class="n">CursorPaginatedResponse</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">order_joins</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="n">page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="n">cursor</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> <span class="n">items_per_page</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> <span class="n">include_total</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> <span class="n">search</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">SearchConfig</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a> <span class="n">search_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">SearchFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a> <span class="n">search_column</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a> <span class="n">order_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">OrderFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-19"><a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a> <span class="n">facet_fields</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">FacetFieldType</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-20"><a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a> <span class="n">filter_by</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="n">BaseModel</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span>
|
||||
</span><span id="__span-0-21"><a id="__codelineno-0-21" name="__codelineno-0-21" href="#__codelineno-0-21"></a> <span class="n">schema</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">BaseModel</span><span class="p">],</span>
|
||||
</span><span id="__span-0-22"><a id="__codelineno-0-22" name="__codelineno-0-22" href="#__codelineno-0-22"></a><span class="p">)</span> <span class="o">-></span> <span class="n">CursorPaginatedResponse</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span>
|
||||
</span></code></pre></div> </div>
|
||||
|
||||
|
||||
@@ -4843,6 +4879,22 @@ only applies when <code>pagination_type</code> is <code>OFFSET</code>.</p>
|
||||
<code>None</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>order_fields</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="fastapi_toolsets.types.OrderFieldType">OrderFieldType</span>] | None</code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>Fields allowed for sorting (overrides class default).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<code>None</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>facet_fields</code>
|
||||
@@ -5124,7 +5176,7 @@ field. Scalar → equality, list → IN clause. Raises
|
||||
<code>order_fields</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="sqlalchemy.orm.QueryableAttribute">QueryableAttribute</span>[<a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a>]] | None</code>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="fastapi_toolsets.types.OrderFieldType">OrderFieldType</span>] | None</code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
@@ -5657,7 +5709,7 @@ responses. Supports direct columns (<code>User.status</code>) and relationship t
|
||||
<code>order_fields</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="sqlalchemy.orm.QueryableAttribute">QueryableAttribute</span>[<a class="autorefs autorefs-external" title="typing.Any" href="https://docs.python.org/3/library/typing.html#typing.Any">Any</a>]] | None</code>
|
||||
<code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<span title="fastapi_toolsets.types.OrderFieldType">OrderFieldType</span>] | None</code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
@@ -6327,7 +6379,7 @@ Must match one of the resolved search field keys.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/db/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/db/">
|
||||
|
||||
|
||||
<link rel="prev" href="../crud/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1070,6 +1070,39 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#fastapi_toolsets.db.m2m_add" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_add
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#fastapi_toolsets.db.m2m_remove" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_remove
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#fastapi_toolsets.db.m2m_set" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_set
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -1677,6 +1710,39 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#fastapi_toolsets.db.m2m_add" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_add
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#fastapi_toolsets.db.m2m_remove" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_remove
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#fastapi_toolsets.db.m2m_set" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
m2m_set
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -1764,8 +1830,11 @@
|
||||
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">create_db_context</span><span class="p">,</span>
|
||||
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">get_transaction</span><span class="p">,</span>
|
||||
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">lock_tables</span><span class="p">,</span>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">wait_for_row_change</span><span class="p">,</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">)</span>
|
||||
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="n">m2m_add</span><span class="p">,</span>
|
||||
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="n">m2m_remove</span><span class="p">,</span>
|
||||
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="n">m2m_set</span><span class="p">,</span>
|
||||
</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="n">wait_for_row_change</span><span class="p">,</span>
|
||||
</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
|
||||
|
||||
@@ -2622,6 +2691,395 @@ than dropping and re-creating tables between tests.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h2 id="fastapi_toolsets.db.m2m_add" class="doc doc-heading">
|
||||
<code class="highlight language-python"><span class="n">fastapi_toolsets</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">m2m_add</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">rel_attr</span><span class="p">,</span> <span class="o">*</span><span class="n">related</span><span class="p">,</span> <span class="n">ignore_conflicts</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
||||
|
||||
<span class="doc doc-labels">
|
||||
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
||||
</span>
|
||||
|
||||
<a href="#fastapi_toolsets.db.m2m_add" class="headerlink" title="Permanent link">¶</a></h2>
|
||||
|
||||
|
||||
<div class="doc doc-contents first">
|
||||
|
||||
<p>Insert rows into a Many-to-Many association table without loading the ORM collection.</p>
|
||||
|
||||
|
||||
<p><span class="doc-section-title">Parameters:</span></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
<th>Default</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>session</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.ext.asyncio.AsyncSession">AsyncSession</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>DB async session.</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>instance</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.DeclarativeBase">DeclarativeBase</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>The "owner" side model instance (e.g. the <code>A</code> in <code>A.b_list</code>).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>rel_attr</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.QueryableAttribute">QueryableAttribute</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>The M2M relationship attribute on the model class (e.g. <code>A.b_list</code>).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>*related</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.DeclarativeBase">DeclarativeBase</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>One or more related instances to associate with <code>instance</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<code>()</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>ignore_conflicts</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>When <code>True</code>, silently skip rows that already exist
|
||||
in the association table (<code>ON CONFLICT DO NOTHING</code>).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<code>False</code>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<p><span class="doc-section-title">Raises:</span></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#TypeError">TypeError</a></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>If <code>rel_attr</code> is not a Many-to-Many relationship.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h2 id="fastapi_toolsets.db.m2m_remove" class="doc doc-heading">
|
||||
<code class="highlight language-python"><span class="n">fastapi_toolsets</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">m2m_remove</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">rel_attr</span><span class="p">,</span> <span class="o">*</span><span class="n">related</span><span class="p">)</span></code>
|
||||
|
||||
<span class="doc doc-labels">
|
||||
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
||||
</span>
|
||||
|
||||
<a href="#fastapi_toolsets.db.m2m_remove" class="headerlink" title="Permanent link">¶</a></h2>
|
||||
|
||||
|
||||
<div class="doc doc-contents first">
|
||||
|
||||
<p>Remove rows from a Many-to-Many association table without loading the ORM collection.</p>
|
||||
|
||||
|
||||
<p><span class="doc-section-title">Parameters:</span></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
<th>Default</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>session</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.ext.asyncio.AsyncSession">AsyncSession</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>DB async session.</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>instance</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.DeclarativeBase">DeclarativeBase</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>The "owner" side model instance (e.g. the <code>A</code> in <code>A.b_list</code>).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>rel_attr</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.QueryableAttribute">QueryableAttribute</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>The M2M relationship attribute on the model class (e.g. <code>A.b_list</code>).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>*related</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.DeclarativeBase">DeclarativeBase</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>One or more related instances to disassociate from <code>instance</code>.</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<code>()</code>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<p><span class="doc-section-title">Raises:</span></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#TypeError">TypeError</a></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>If <code>rel_attr</code> is not a Many-to-Many relationship.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h2 id="fastapi_toolsets.db.m2m_set" class="doc doc-heading">
|
||||
<code class="highlight language-python"><span class="n">fastapi_toolsets</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">m2m_set</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">rel_attr</span><span class="p">,</span> <span class="o">*</span><span class="n">related</span><span class="p">)</span></code>
|
||||
|
||||
<span class="doc doc-labels">
|
||||
<small class="doc doc-label doc-label-async"><code>async</code></small>
|
||||
</span>
|
||||
|
||||
<a href="#fastapi_toolsets.db.m2m_set" class="headerlink" title="Permanent link">¶</a></h2>
|
||||
|
||||
|
||||
<div class="doc doc-contents first">
|
||||
|
||||
<p>Replace the entire Many-to-Many association set atomically.</p>
|
||||
|
||||
|
||||
<p><span class="doc-section-title">Parameters:</span></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
<th>Default</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>session</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.ext.asyncio.AsyncSession">AsyncSession</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>DB async session.</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>instance</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.DeclarativeBase">DeclarativeBase</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>The "owner" side model instance (e.g. the <code>A</code> in <code>A.b_list</code>).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>rel_attr</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.QueryableAttribute">QueryableAttribute</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>The M2M relationship attribute on the model class (e.g. <code>A.b_list</code>).</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<em>required</em>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code>*related</code>
|
||||
</td>
|
||||
<td>
|
||||
<code><span title="sqlalchemy.orm.DeclarativeBase">DeclarativeBase</span></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>The new complete set of related instances.</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<code>()</code>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<p><span class="doc-section-title">Raises:</span></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="doc-section-item">
|
||||
<td>
|
||||
<code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#TypeError">TypeError</a></code>
|
||||
</td>
|
||||
<td>
|
||||
<div class="doc-md-description">
|
||||
<p>If <code>rel_attr</code> is not a Many-to-Many relationship.</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2727,7 +3185,7 @@ than dropping and re-creating tables between tests.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/dependencies/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/dependencies/">
|
||||
|
||||
|
||||
<link rel="prev" href="../db/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2043,7 +2043,7 @@
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/exceptions/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/exceptions/">
|
||||
|
||||
|
||||
<link rel="prev" href="../dependencies/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -3314,7 +3314,7 @@ HTTP response body.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/fixtures/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/fixtures/">
|
||||
|
||||
|
||||
<link rel="prev" href="../exceptions/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -3596,7 +3596,7 @@ that returns a sequence of SQLAlchemy model instances.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/logger/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/logger/">
|
||||
|
||||
|
||||
<link rel="prev" href="../fixtures/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -1942,7 +1942,7 @@ Pass <code>None</code> to get the root logger.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/metrics/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/metrics/">
|
||||
|
||||
|
||||
<link rel="prev" href="../logger/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2392,7 +2392,7 @@ If <code>False</code> (default), called once at init time.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/models/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/models/">
|
||||
|
||||
|
||||
<link rel="prev" href="../metrics/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2268,7 +2268,7 @@ Defaults to all event types.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/pytest/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/pytest/">
|
||||
|
||||
|
||||
<link rel="prev" href="../models/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2502,7 +2502,7 @@ connection and as the base for the worker database name).</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
@@ -12,7 +12,7 @@
|
||||
<meta name="author" content="d3vyce">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.0/reference/schemas/">
|
||||
<link rel="canonical" href="https://fastapi-toolsets.d3vyce.fr/v3.1/reference/schemas/">
|
||||
|
||||
|
||||
<link rel="prev" href="../pytest/">
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="zensical-0.0.31">
|
||||
<meta name="generator" content="zensical-0.0.33">
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetbrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Inter";--md-code-font:"Jetbrains Mono"}</style>
|
||||
|
||||
|
||||
@@ -2855,7 +2855,7 @@ by a unified <code>paginate()</code> endpoint.</p>
|
||||
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["announce.dismiss","content.action.view","content.code.annotate","content.code.copy","content.code.select","content.footnote.tooltips","content.tabs.link","content.tooltips","navigation.footer","navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.path","navigation.sections","navigation.tabs","navigation.top","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":{"alias":true,"default":"stable","provider":"mike"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.91a19a9e.min.js"></script>
|
||||
<script src="../../assets/javascripts/bundle.63456bd9.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/cli/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/crud/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/db/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/dependencies/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/exceptions/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/fixtures/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/logger/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/metrics/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/models/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/pytest/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/module/schemas/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/cli/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/crud/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/db/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/dependencies/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/exceptions/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/fixtures/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/logger/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/metrics/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/models/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/pytest/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/reference/schemas/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/examples/pagination-search/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/migration/v3/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v3.1/migration/v2/</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
+1635
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,29 @@
|
||||
-------------------------------------------------------------------------------
|
||||
Third-Party licenses
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: clipboard@2.0.11
|
||||
License: MIT
|
||||
Copyright: Zeno Rocha
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: escape-html@1.0.3
|
||||
License: MIT
|
||||
Copyright: 2012-2013 TJ Holowaychuk
|
||||
2015 Andreas Lubbe
|
||||
2015 Tiancheng "Timothy" Gu
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: focus-visible@5.2.1
|
||||
License: W3C
|
||||
Copyright: WICG
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: rxjs@7.8.2
|
||||
License: Apache-2.0
|
||||
Copyright: 2015-2018 Google, Inc.,
|
||||
2015-2018 Netflix, Inc.,
|
||||
2015-2018 Microsoft Corp. and contributors
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
+1948
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
{% extends "base.html" %} {% block extrahead %}
|
||||
<script
|
||||
defer
|
||||
src="https://analytics.d3vyce.fr/script.js"
|
||||
data-website-id="338b8816-7b99-4c6a-82f3-15595be3fd47"
|
||||
></script>
|
||||
{{ super() }} {% endblock %}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/cli/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/crud/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/db/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/dependencies/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/exceptions/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/fixtures/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/logger/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/metrics/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/models/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/pytest/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/schemas/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/module/security/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/cli/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/crud/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/db/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/dependencies/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/exceptions/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/fixtures/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/logger/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/metrics/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/models/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/pytest/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/schemas/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/reference/security/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/examples/pagination-search/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/migration/v4/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/migration/v3/</loc>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://fastapi-toolsets.d3vyce.fr/v4.1/migration/v2/</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
+1604
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,29 @@
|
||||
-------------------------------------------------------------------------------
|
||||
Third-Party licenses
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: clipboard@2.0.11
|
||||
License: MIT
|
||||
Copyright: Zeno Rocha
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: escape-html@1.0.3
|
||||
License: MIT
|
||||
Copyright: 2012-2013 TJ Holowaychuk
|
||||
2015 Andreas Lubbe
|
||||
2015 Tiancheng "Timothy" Gu
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: focus-visible@5.2.1
|
||||
License: W3C
|
||||
Copyright: WICG
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: rxjs@7.8.2
|
||||
License: Apache-2.0
|
||||
Copyright: 2015-2018 Google, Inc.,
|
||||
2015-2018 Netflix, Inc.,
|
||||
2015-2018 Microsoft Corp. and contributors
|
||||
+10
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
+1915
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user