sqlmodel-ext 0.3.0__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/PKG-INFO +1 -1
  2. sqlmodel_ext-0.3.2/docs/.vitepress/config.mts +57 -0
  3. sqlmodel_ext-0.3.2/docs/.vitepress/en.mts +88 -0
  4. sqlmodel_ext-0.3.2/docs/.vitepress/theme/index.ts +13 -0
  5. sqlmodel_ext-0.3.2/docs/.vitepress/zh.mts +88 -0
  6. {sqlmodel_ext-0.3.0/docs/en/internals → sqlmodel_ext-0.3.2/docs/en/explanation}/cached-table.md +244 -227
  7. sqlmodel_ext-0.3.2/docs/en/explanation/cascade-delete-semantics.md +153 -0
  8. sqlmodel_ext-0.3.0/docs/en/internals/crud.md → sqlmodel_ext-0.3.2/docs/en/explanation/crud-pipeline.md +288 -283
  9. sqlmodel_ext-0.3.2/docs/en/explanation/index.md +41 -0
  10. {sqlmodel_ext-0.3.0/docs/en/internals → sqlmodel_ext-0.3.2/docs/en/explanation}/metaclass.md +319 -315
  11. {sqlmodel_ext-0.3.0/docs/en/internals → sqlmodel_ext-0.3.2/docs/en/explanation}/optimistic-lock.md +120 -114
  12. sqlmodel_ext-0.3.0/docs/en/internals/polymorphic.md → sqlmodel_ext-0.3.2/docs/en/explanation/polymorphic-internals.md +210 -204
  13. {sqlmodel_ext-0.3.0/docs/en/internals → sqlmodel_ext-0.3.2/docs/en/explanation}/prerequisites.md +158 -154
  14. {sqlmodel_ext-0.3.0/docs/en/internals → sqlmodel_ext-0.3.2/docs/en/explanation}/relation-load-checker.md +116 -108
  15. {sqlmodel_ext-0.3.0/docs/en/internals → sqlmodel_ext-0.3.2/docs/en/explanation}/relation-preload.md +197 -191
  16. sqlmodel_ext-0.3.2/docs/en/guide/cached-table.md +17 -0
  17. sqlmodel_ext-0.3.2/docs/en/guide/crud.md +15 -0
  18. sqlmodel_ext-0.3.2/docs/en/guide/field-types.md +13 -0
  19. sqlmodel_ext-0.3.2/docs/en/guide/index.md +13 -0
  20. sqlmodel_ext-0.3.2/docs/en/guide/optimistic-lock.md +14 -0
  21. sqlmodel_ext-0.3.2/docs/en/guide/pagination.md +14 -0
  22. sqlmodel_ext-0.3.2/docs/en/guide/polymorphic.md +17 -0
  23. sqlmodel_ext-0.3.2/docs/en/guide/relation-load-checker.md +16 -0
  24. sqlmodel_ext-0.3.2/docs/en/guide/relation-preload.md +17 -0
  25. sqlmodel_ext-0.3.2/docs/en/how-to/cache-queries.md +142 -0
  26. sqlmodel_ext-0.3.2/docs/en/how-to/configure-cascade-delete.md +234 -0
  27. sqlmodel_ext-0.3.2/docs/en/how-to/define-jti-models.md +120 -0
  28. sqlmodel_ext-0.3.2/docs/en/how-to/define-sti-models.md +132 -0
  29. sqlmodel_ext-0.3.2/docs/en/how-to/handle-concurrent-updates.md +88 -0
  30. sqlmodel_ext-0.3.2/docs/en/how-to/index.md +41 -0
  31. sqlmodel_ext-0.3.2/docs/en/how-to/integrate-with-fastapi.md +116 -0
  32. sqlmodel_ext-0.3.2/docs/en/how-to/paginate-a-list-endpoint.md +79 -0
  33. sqlmodel_ext-0.3.2/docs/en/how-to/prevent-missing-greenlet.md +162 -0
  34. sqlmodel_ext-0.3.2/docs/en/how-to/release-connection-during-long-io.md +181 -0
  35. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/docs/en/index.md +10 -4
  36. sqlmodel_ext-0.3.2/docs/en/internals/cached-table.md +13 -0
  37. sqlmodel_ext-0.3.2/docs/en/internals/crud.md +15 -0
  38. sqlmodel_ext-0.3.2/docs/en/internals/index.md +13 -0
  39. sqlmodel_ext-0.3.2/docs/en/internals/metaclass.md +13 -0
  40. sqlmodel_ext-0.3.2/docs/en/internals/optimistic-lock.md +13 -0
  41. sqlmodel_ext-0.3.2/docs/en/internals/polymorphic.md +13 -0
  42. sqlmodel_ext-0.3.2/docs/en/internals/prerequisites.md +13 -0
  43. sqlmodel_ext-0.3.2/docs/en/internals/relation-load-checker.md +13 -0
  44. sqlmodel_ext-0.3.2/docs/en/internals/relation-preload.md +13 -0
  45. sqlmodel_ext-0.3.2/docs/en/reference/base-classes.md +121 -0
  46. sqlmodel_ext-0.3.2/docs/en/reference/crud-methods.md +275 -0
  47. sqlmodel_ext-0.3.2/docs/en/reference/decorators.md +162 -0
  48. sqlmodel_ext-0.3.2/docs/en/reference/field-types.md +218 -0
  49. sqlmodel_ext-0.3.2/docs/en/reference/index.md +54 -0
  50. sqlmodel_ext-0.3.2/docs/en/reference/mixins.md +222 -0
  51. sqlmodel_ext-0.3.2/docs/en/reference/pagination-types.md +113 -0
  52. sqlmodel_ext-0.3.2/docs/en/tutorials/01-getting-started.md +174 -0
  53. sqlmodel_ext-0.3.2/docs/en/tutorials/02-building-a-blog-api.md +388 -0
  54. sqlmodel_ext-0.3.2/docs/en/tutorials/03-adding-redis-cache.md +269 -0
  55. sqlmodel_ext-0.3.2/docs/en/tutorials/index.md +32 -0
  56. {sqlmodel_ext-0.3.0/docs/internals → sqlmodel_ext-0.3.2/docs/explanation}/cached-table.md +244 -227
  57. sqlmodel_ext-0.3.2/docs/explanation/cascade-delete-semantics.md +153 -0
  58. sqlmodel_ext-0.3.0/docs/internals/crud.md → sqlmodel_ext-0.3.2/docs/explanation/crud-pipeline.md +288 -283
  59. sqlmodel_ext-0.3.2/docs/explanation/index.md +41 -0
  60. {sqlmodel_ext-0.3.0/docs/internals → sqlmodel_ext-0.3.2/docs/explanation}/metaclass.md +319 -315
  61. {sqlmodel_ext-0.3.0/docs/internals → sqlmodel_ext-0.3.2/docs/explanation}/optimistic-lock.md +120 -114
  62. sqlmodel_ext-0.3.0/docs/internals/polymorphic.md → sqlmodel_ext-0.3.2/docs/explanation/polymorphic-internals.md +210 -204
  63. {sqlmodel_ext-0.3.0/docs/internals → sqlmodel_ext-0.3.2/docs/explanation}/prerequisites.md +158 -154
  64. {sqlmodel_ext-0.3.0/docs/internals → sqlmodel_ext-0.3.2/docs/explanation}/relation-load-checker.md +116 -108
  65. {sqlmodel_ext-0.3.0/docs/internals → sqlmodel_ext-0.3.2/docs/explanation}/relation-preload.md +197 -191
  66. sqlmodel_ext-0.3.2/docs/guide/cached-table.md +17 -0
  67. sqlmodel_ext-0.3.2/docs/guide/crud.md +15 -0
  68. sqlmodel_ext-0.3.2/docs/guide/field-types.md +13 -0
  69. sqlmodel_ext-0.3.2/docs/guide/index.md +13 -0
  70. sqlmodel_ext-0.3.2/docs/guide/optimistic-lock.md +14 -0
  71. sqlmodel_ext-0.3.2/docs/guide/pagination.md +14 -0
  72. sqlmodel_ext-0.3.2/docs/guide/polymorphic.md +17 -0
  73. sqlmodel_ext-0.3.2/docs/guide/relation-load-checker.md +16 -0
  74. sqlmodel_ext-0.3.2/docs/guide/relation-preload.md +17 -0
  75. sqlmodel_ext-0.3.2/docs/how-to/cache-queries.md +142 -0
  76. sqlmodel_ext-0.3.2/docs/how-to/configure-cascade-delete.md +234 -0
  77. sqlmodel_ext-0.3.2/docs/how-to/define-jti-models.md +120 -0
  78. sqlmodel_ext-0.3.2/docs/how-to/define-sti-models.md +132 -0
  79. sqlmodel_ext-0.3.2/docs/how-to/handle-concurrent-updates.md +87 -0
  80. sqlmodel_ext-0.3.2/docs/how-to/index.md +41 -0
  81. sqlmodel_ext-0.3.2/docs/how-to/integrate-with-fastapi.md +116 -0
  82. sqlmodel_ext-0.3.2/docs/how-to/paginate-a-list-endpoint.md +79 -0
  83. sqlmodel_ext-0.3.2/docs/how-to/prevent-missing-greenlet.md +162 -0
  84. sqlmodel_ext-0.3.2/docs/how-to/release-connection-during-long-io.md +181 -0
  85. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/docs/index.md +10 -4
  86. sqlmodel_ext-0.3.2/docs/internals/cached-table.md +13 -0
  87. sqlmodel_ext-0.3.2/docs/internals/crud.md +15 -0
  88. sqlmodel_ext-0.3.2/docs/internals/index.md +13 -0
  89. sqlmodel_ext-0.3.2/docs/internals/metaclass.md +13 -0
  90. sqlmodel_ext-0.3.2/docs/internals/optimistic-lock.md +13 -0
  91. sqlmodel_ext-0.3.2/docs/internals/polymorphic.md +13 -0
  92. sqlmodel_ext-0.3.2/docs/internals/prerequisites.md +13 -0
  93. sqlmodel_ext-0.3.2/docs/internals/relation-load-checker.md +13 -0
  94. sqlmodel_ext-0.3.2/docs/internals/relation-preload.md +13 -0
  95. sqlmodel_ext-0.3.2/docs/reference/base-classes.md +121 -0
  96. sqlmodel_ext-0.3.2/docs/reference/crud-methods.md +275 -0
  97. sqlmodel_ext-0.3.2/docs/reference/decorators.md +162 -0
  98. sqlmodel_ext-0.3.2/docs/reference/field-types.md +218 -0
  99. sqlmodel_ext-0.3.2/docs/reference/index.md +54 -0
  100. sqlmodel_ext-0.3.2/docs/reference/mixins.md +222 -0
  101. sqlmodel_ext-0.3.2/docs/reference/pagination-types.md +113 -0
  102. sqlmodel_ext-0.3.2/docs/tutorials/01-getting-started.md +174 -0
  103. sqlmodel_ext-0.3.2/docs/tutorials/02-building-a-blog-api.md +388 -0
  104. sqlmodel_ext-0.3.2/docs/tutorials/03-adding-redis-cache.md +269 -0
  105. sqlmodel_ext-0.3.2/docs/tutorials/index.md +32 -0
  106. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/package.json +2 -1
  107. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/pnpm-lock.yaml +1096 -390
  108. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/pyproject.toml +1 -1
  109. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/__init__.py +1 -1
  110. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/_compat.py +30 -0
  111. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/mixins/polymorphic.py +16 -0
  112. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/relation_load_checker.py +3737 -3645
  113. sqlmodel_ext-0.3.0/docs/.vitepress/config.mts +0 -27
  114. sqlmodel_ext-0.3.0/docs/.vitepress/en.mts +0 -59
  115. sqlmodel_ext-0.3.0/docs/.vitepress/theme/index.ts +0 -6
  116. sqlmodel_ext-0.3.0/docs/.vitepress/zh.mts +0 -59
  117. sqlmodel_ext-0.3.0/docs/en/guide/cached-table.md +0 -186
  118. sqlmodel_ext-0.3.0/docs/en/guide/crud.md +0 -264
  119. sqlmodel_ext-0.3.0/docs/en/guide/field-types.md +0 -129
  120. sqlmodel_ext-0.3.0/docs/en/guide/index.md +0 -175
  121. sqlmodel_ext-0.3.0/docs/en/guide/optimistic-lock.md +0 -102
  122. sqlmodel_ext-0.3.0/docs/en/guide/pagination.md +0 -136
  123. sqlmodel_ext-0.3.0/docs/en/guide/polymorphic.md +0 -141
  124. sqlmodel_ext-0.3.0/docs/en/guide/relation-load-checker.md +0 -134
  125. sqlmodel_ext-0.3.0/docs/en/guide/relation-preload.md +0 -118
  126. sqlmodel_ext-0.3.0/docs/en/internals/index.md +0 -78
  127. sqlmodel_ext-0.3.0/docs/guide/cached-table.md +0 -176
  128. sqlmodel_ext-0.3.0/docs/guide/crud.md +0 -264
  129. sqlmodel_ext-0.3.0/docs/guide/field-types.md +0 -125
  130. sqlmodel_ext-0.3.0/docs/guide/index.md +0 -175
  131. sqlmodel_ext-0.3.0/docs/guide/optimistic-lock.md +0 -102
  132. sqlmodel_ext-0.3.0/docs/guide/pagination.md +0 -136
  133. sqlmodel_ext-0.3.0/docs/guide/polymorphic.md +0 -141
  134. sqlmodel_ext-0.3.0/docs/guide/relation-load-checker.md +0 -124
  135. sqlmodel_ext-0.3.0/docs/guide/relation-preload.md +0 -118
  136. sqlmodel_ext-0.3.0/docs/internals/index.md +0 -78
  137. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/.gitignore +0 -0
  138. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/LICENSE +0 -0
  139. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/README.md +0 -0
  140. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/README_zh.md +0 -0
  141. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/docs/.vitepress/theme/style/custom.css +0 -0
  142. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/_exceptions.py +0 -0
  143. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/_sa_type.py +0 -0
  144. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/_utils.py +0 -0
  145. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/base.py +0 -0
  146. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/__init__.py +0 -0
  147. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/_internal/__init__.py +0 -0
  148. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/_internal/path.py +0 -0
  149. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/_ssrf.py +0 -0
  150. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/dialects/__init__.py +0 -0
  151. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/dialects/postgresql/__init__.py +0 -0
  152. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/dialects/postgresql/array.py +0 -0
  153. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/dialects/postgresql/exceptions.py +0 -0
  154. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/dialects/postgresql/jsonb_types.py +0 -0
  155. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/dialects/postgresql/numpy_vector.py +0 -0
  156. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/ip_address.py +0 -0
  157. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/mixins/__init__.py +0 -0
  158. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/mixins/module_name_mixin.py +0 -0
  159. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/field_types/url.py +0 -0
  160. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/mixins/__init__.py +0 -0
  161. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/mixins/cached_table.py +0 -0
  162. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/mixins/info_response.py +0 -0
  163. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/mixins/optimistic_lock.py +0 -0
  164. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/mixins/relation_preload.py +0 -0
  165. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/mixins/table.py +0 -0
  166. {sqlmodel_ext-0.3.0 → sqlmodel_ext-0.3.2}/src/sqlmodel_ext/pagination.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmodel-ext
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Extended SQLModel infrastructure: smart metaclass, async CRUD mixins, polymorphic inheritance, optimistic locking, relation preloading, and reusable field types.
5
5
  Project-URL: Homepage, https://github.com/Foxerine/sqlmodel-ext
6
6
  Project-URL: Repository, https://github.com/Foxerine/sqlmodel-ext
@@ -0,0 +1,57 @@
1
+ import { withMermaid } from 'vitepress-plugin-mermaid'
2
+ import llmstxt from 'vitepress-plugin-llms'
3
+ import { copyOrDownloadAsMarkdownButtons } from 'vitepress-plugin-llms'
4
+ import { zh } from './zh.mts'
5
+ import { en } from './en.mts'
6
+
7
+ export default withMermaid({
8
+ title: 'sqlmodel-ext',
9
+
10
+ vite: {
11
+ plugins: [
12
+ llmstxt({
13
+ // Exclude legacy redirect placeholders. The old guide/internals trees were
14
+ // migrated to tutorials/how-to/reference/explanation under Diátaxis;
15
+ // the placeholders only carry meta-refresh stubs and would pollute llms-full.txt.
16
+ ignoreFiles: [
17
+ 'guide/*',
18
+ 'internals/*',
19
+ 'en/guide/*',
20
+ 'en/internals/*',
21
+ ],
22
+ }),
23
+ ],
24
+ optimizeDeps: {
25
+ include: ['mermaid', 'dayjs'],
26
+ },
27
+ ssr: {
28
+ noExternal: ['vitepress-plugin-mermaid', 'mermaid'],
29
+ },
30
+ },
31
+
32
+ markdown: {
33
+ config(md) {
34
+ md.use(copyOrDownloadAsMarkdownButtons)
35
+ },
36
+ },
37
+
38
+ locales: {
39
+ root: {
40
+ label: '简体中文',
41
+ ...zh,
42
+ },
43
+ en: {
44
+ label: 'English',
45
+ ...en,
46
+ },
47
+ },
48
+
49
+ themeConfig: {
50
+ socialLinks: [
51
+ { icon: 'github', link: 'https://github.com/Foxerine/sqlmodel-ext' },
52
+ ],
53
+ search: {
54
+ provider: 'local',
55
+ },
56
+ },
57
+ })
@@ -0,0 +1,88 @@
1
+ import type { DefaultTheme } from 'vitepress'
2
+
3
+ export const en = {
4
+ lang: 'en',
5
+ description: 'SQLModel Enhancement Library — Tutorials, How-to, Reference, Explanation',
6
+
7
+ themeConfig: {
8
+ nav: [
9
+ { text: 'Home', link: '/en/' },
10
+ { text: 'Tutorials', link: '/en/tutorials/' },
11
+ { text: 'How-to', link: '/en/how-to/' },
12
+ { text: 'Reference', link: '/en/reference/' },
13
+ { text: 'Explanation', link: '/en/explanation/' },
14
+ ],
15
+
16
+ sidebar: {
17
+ '/en/tutorials/': [
18
+ {
19
+ text: 'Tutorials',
20
+ items: [
21
+ { text: 'Overview', link: '/en/tutorials/' },
22
+ { text: '01 · Getting started', link: '/en/tutorials/01-getting-started' },
23
+ { text: '02 · Building a blog API', link: '/en/tutorials/02-building-a-blog-api' },
24
+ { text: '03 · Adding Redis caching', link: '/en/tutorials/03-adding-redis-cache' },
25
+ ],
26
+ },
27
+ ],
28
+ '/en/how-to/': [
29
+ {
30
+ text: 'How-to guides',
31
+ items: [
32
+ { text: 'Overview', link: '/en/how-to/' },
33
+ { text: 'Integrate with FastAPI', link: '/en/how-to/integrate-with-fastapi' },
34
+ { text: 'Paginate a list endpoint', link: '/en/how-to/paginate-a-list-endpoint' },
35
+ { text: 'Define JTI models', link: '/en/how-to/define-jti-models' },
36
+ { text: 'Define STI models', link: '/en/how-to/define-sti-models' },
37
+ { text: 'Handle concurrent updates', link: '/en/how-to/handle-concurrent-updates' },
38
+ { text: 'Prevent MissingGreenlet errors', link: '/en/how-to/prevent-missing-greenlet' },
39
+ { text: 'Release the DB connection during long I/O', link: '/en/how-to/release-connection-during-long-io' },
40
+ { text: 'Configure cascade delete', link: '/en/how-to/configure-cascade-delete' },
41
+ { text: 'Cache queries with Redis', link: '/en/how-to/cache-queries' },
42
+ ],
43
+ },
44
+ ],
45
+ '/en/reference/': [
46
+ {
47
+ text: 'Reference',
48
+ items: [
49
+ { text: 'Overview', link: '/en/reference/' },
50
+ { text: 'Base classes', link: '/en/reference/base-classes' },
51
+ { text: 'CRUD methods', link: '/en/reference/crud-methods' },
52
+ { text: 'Field types', link: '/en/reference/field-types' },
53
+ { text: 'Mixins', link: '/en/reference/mixins' },
54
+ { text: 'Decorators & helpers', link: '/en/reference/decorators' },
55
+ { text: 'Pagination types', link: '/en/reference/pagination-types' },
56
+ ],
57
+ },
58
+ ],
59
+ '/en/explanation/': [
60
+ {
61
+ text: 'Explanation',
62
+ items: [
63
+ { text: 'Overview', link: '/en/explanation/' },
64
+ { text: 'Prerequisites', link: '/en/explanation/prerequisites' },
65
+ { text: 'Metaclass & SQLModelBase', link: '/en/explanation/metaclass' },
66
+ { text: 'CRUD pipeline', link: '/en/explanation/crud-pipeline' },
67
+ { text: 'Polymorphic internals', link: '/en/explanation/polymorphic-internals' },
68
+ { text: 'Optimistic locking', link: '/en/explanation/optimistic-lock' },
69
+ { text: 'Relation preloading', link: '/en/explanation/relation-preload' },
70
+ { text: 'Cascade delete semantics', link: '/en/explanation/cascade-delete-semantics' },
71
+ { text: 'Redis caching', link: '/en/explanation/cached-table' },
72
+ { text: 'Static analyzer', link: '/en/explanation/relation-load-checker' },
73
+ ],
74
+ },
75
+ ],
76
+ },
77
+
78
+ outline: {
79
+ level: [2, 3],
80
+ label: 'On this page',
81
+ },
82
+
83
+ docFooter: {
84
+ prev: 'Previous',
85
+ next: 'Next',
86
+ },
87
+ } satisfies DefaultTheme.Config,
88
+ }
@@ -0,0 +1,13 @@
1
+ // .vitepress/theme/index.ts
2
+ import DefaultTheme from 'vitepress/theme'
3
+ import type { Theme } from 'vitepress'
4
+ import CopyOrDownloadAsMarkdownButtons from 'vitepress-plugin-llms/vitepress-components/CopyOrDownloadAsMarkdownButtons.vue'
5
+ import '@fontsource/maple-mono';
6
+ import './style/custom.css'
7
+
8
+ export default {
9
+ extends: DefaultTheme,
10
+ enhanceApp({ app }) {
11
+ app.component('CopyOrDownloadAsMarkdownButtons', CopyOrDownloadAsMarkdownButtons)
12
+ },
13
+ } satisfies Theme
@@ -0,0 +1,88 @@
1
+ import type { DefaultTheme } from 'vitepress'
2
+
3
+ export const zh = {
4
+ lang: 'zh-CN',
5
+ description: 'SQLModel 增强库 — 教程、操作指南、参考、讲解',
6
+
7
+ themeConfig: {
8
+ nav: [
9
+ { text: '首页', link: '/' },
10
+ { text: '教程', link: '/tutorials/' },
11
+ { text: '操作指南', link: '/how-to/' },
12
+ { text: '参考', link: '/reference/' },
13
+ { text: '讲解', link: '/explanation/' },
14
+ ],
15
+
16
+ sidebar: {
17
+ '/tutorials/': [
18
+ {
19
+ text: '教程',
20
+ items: [
21
+ { text: '总览', link: '/tutorials/' },
22
+ { text: '01 · 快速上手', link: '/tutorials/01-getting-started' },
23
+ { text: '02 · 构建博客 API', link: '/tutorials/02-building-a-blog-api' },
24
+ { text: '03 · 给博客加 Redis 缓存', link: '/tutorials/03-adding-redis-cache' },
25
+ ],
26
+ },
27
+ ],
28
+ '/how-to/': [
29
+ {
30
+ text: '操作指南',
31
+ items: [
32
+ { text: '总览', link: '/how-to/' },
33
+ { text: '集成 FastAPI', link: '/how-to/integrate-with-fastapi' },
34
+ { text: '给列表端点加分页', link: '/how-to/paginate-a-list-endpoint' },
35
+ { text: '定义 JTI 联表继承模型', link: '/how-to/define-jti-models' },
36
+ { text: '定义 STI 单表继承模型', link: '/how-to/define-sti-models' },
37
+ { text: '处理并发更新', link: '/how-to/handle-concurrent-updates' },
38
+ { text: '防止 MissingGreenlet 错误', link: '/how-to/prevent-missing-greenlet' },
39
+ { text: '长 I/O 期间释放数据库连接', link: '/how-to/release-connection-during-long-io' },
40
+ { text: '配置级联删除', link: '/how-to/configure-cascade-delete' },
41
+ { text: '给查询加 Redis 缓存', link: '/how-to/cache-queries' },
42
+ ],
43
+ },
44
+ ],
45
+ '/reference/': [
46
+ {
47
+ text: '参考',
48
+ items: [
49
+ { text: '总览', link: '/reference/' },
50
+ { text: '基础类', link: '/reference/base-classes' },
51
+ { text: 'CRUD 方法', link: '/reference/crud-methods' },
52
+ { text: '字段类型', link: '/reference/field-types' },
53
+ { text: 'Mixin 类', link: '/reference/mixins' },
54
+ { text: '装饰器与辅助函数', link: '/reference/decorators' },
55
+ { text: '分页类型', link: '/reference/pagination-types' },
56
+ ],
57
+ },
58
+ ],
59
+ '/explanation/': [
60
+ {
61
+ text: '讲解',
62
+ items: [
63
+ { text: '总览', link: '/explanation/' },
64
+ { text: '前置知识', link: '/explanation/prerequisites' },
65
+ { text: '元类与 SQLModelBase', link: '/explanation/metaclass' },
66
+ { text: 'CRUD 实现', link: '/explanation/crud-pipeline' },
67
+ { text: '多态继承机制', link: '/explanation/polymorphic-internals' },
68
+ { text: '乐观锁机制', link: '/explanation/optimistic-lock' },
69
+ { text: '关系预加载机制', link: '/explanation/relation-preload' },
70
+ { text: '级联删除语义', link: '/explanation/cascade-delete-semantics' },
71
+ { text: 'Redis 缓存机制', link: '/explanation/cached-table' },
72
+ { text: '静态分析器原理', link: '/explanation/relation-load-checker' },
73
+ ],
74
+ },
75
+ ],
76
+ },
77
+
78
+ outline: {
79
+ level: [2, 3],
80
+ label: '目录',
81
+ },
82
+
83
+ docFooter: {
84
+ prev: '上一页',
85
+ next: '下一页',
86
+ },
87
+ } satisfies DefaultTheme.Config,
88
+ }