@lunarhue/expo-wa-sqlite 0.0.1

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 (224) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.lovely-docs.yaml +11 -0
  3. package/LICENSE +21 -0
  4. package/demo/next.config.mjs +17 -0
  5. package/demo/package.json +26 -0
  6. package/demo/scripts/copy-wasm.mjs +14 -0
  7. package/demo/src/app/layout.tsx +16 -0
  8. package/demo/src/app/page.tsx +16 -0
  9. package/demo/src/app/todos.tsx +118 -0
  10. package/demo/src/db/schema.ts +7 -0
  11. package/demo/tsconfig.json +18 -0
  12. package/lovely-docs/drizzle-orm/arktype.md +113 -0
  13. package/lovely-docs/drizzle-orm/batch-api.md +35 -0
  14. package/lovely-docs/drizzle-orm/cache.md +145 -0
  15. package/lovely-docs/drizzle-orm/check-migrations.md +52 -0
  16. package/lovely-docs/drizzle-orm/column_types/mysql-column-types.md +76 -0
  17. package/lovely-docs/drizzle-orm/column_types/postgresql_column_types.md +314 -0
  18. package/lovely-docs/drizzle-orm/column_types/singlestore-column-types.md +171 -0
  19. package/lovely-docs/drizzle-orm/column_types/sqlite_column_types.md +132 -0
  20. package/lovely-docs/drizzle-orm/column_types.md +76 -0
  21. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/case-insensitive-unique-email.md +113 -0
  22. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/conditional-filters-in-query.md +69 -0
  23. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/count-rows.md +76 -0
  24. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/cursor-based-pagination.md +142 -0
  25. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/d1_http_api_configuration.md +49 -0
  26. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/decrementing-a-value.md +36 -0
  27. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/empty-array-default-value.md +43 -0
  28. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/full-text-search-with-generated-columns.md +73 -0
  29. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/gel-auth-extension.md +89 -0
  30. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/include-or-exclude-columns.md +51 -0
  31. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/incrementing-a-value.md +36 -0
  32. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/limit-offset-pagination.md +104 -0
  33. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/mysql-local-setup.md +55 -0
  34. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/point-datatype-psql.md +79 -0
  35. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/postgis-geometry-point.md +115 -0
  36. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/postgresql-full-text-search.md +150 -0
  37. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/postgresql-local-setup.md +55 -0
  38. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/seeding-with-option.md +69 -0
  39. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/seeding-with-partially-exposed-schema.md +60 -0
  40. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/select-parent-rows-with-at-least-one-related-child-row.md +74 -0
  41. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/timestamp-default-value.md +93 -0
  42. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/toggling-a-boolean-field.md +20 -0
  43. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/update-many-with-different-values.md +50 -0
  44. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/upsert.md +169 -0
  45. package/lovely-docs/drizzle-orm/common_patterns_&_recipes/vector-similarity-search.md +79 -0
  46. package/lovely-docs/drizzle-orm/common_patterns_&_recipes.md +787 -0
  47. package/lovely-docs/drizzle-orm/connect-aws-data-api-pg.md +47 -0
  48. package/lovely-docs/drizzle-orm/connect-bun-sql.md +35 -0
  49. package/lovely-docs/drizzle-orm/connect-bun-sqlite.md +42 -0
  50. package/lovely-docs/drizzle-orm/connect-cloudflare-d1.md +61 -0
  51. package/lovely-docs/drizzle-orm/connect-cloudflare-do.md +86 -0
  52. package/lovely-docs/drizzle-orm/connect-neon.md +72 -0
  53. package/lovely-docs/drizzle-orm/connect-nile.md +84 -0
  54. package/lovely-docs/drizzle-orm/connect-pglite.md +39 -0
  55. package/lovely-docs/drizzle-orm/connect-planetscale.md +37 -0
  56. package/lovely-docs/drizzle-orm/connect-prisma-postgres.md +48 -0
  57. package/lovely-docs/drizzle-orm/connect-sqlite-cloud.md +29 -0
  58. package/lovely-docs/drizzle-orm/connect-supabase.md +45 -0
  59. package/lovely-docs/drizzle-orm/connect-tidb-serverless.md +35 -0
  60. package/lovely-docs/drizzle-orm/connect-turso-database.md +28 -0
  61. package/lovely-docs/drizzle-orm/connect-turso.md +60 -0
  62. package/lovely-docs/drizzle-orm/connect-vercel-postgres.md +37 -0
  63. package/lovely-docs/drizzle-orm/connect-xata.md +29 -0
  64. package/lovely-docs/drizzle-orm/custom-migrations.md +40 -0
  65. package/lovely-docs/drizzle-orm/custom-types.md +137 -0
  66. package/lovely-docs/drizzle-orm/database-connection-overview.md +89 -0
  67. package/lovely-docs/drizzle-orm/database_setup_guides/bun-sql-existing.md +59 -0
  68. package/lovely-docs/drizzle-orm/database_setup_guides/bun-sqlite-existing.md +48 -0
  69. package/lovely-docs/drizzle-orm/database_setup_guides/bun-sqlite-new.md +34 -0
  70. package/lovely-docs/drizzle-orm/database_setup_guides/d1-new.md +74 -0
  71. package/lovely-docs/drizzle-orm/database_setup_guides/expo-sqlite-setup.md +169 -0
  72. package/lovely-docs/drizzle-orm/database_setup_guides/gel-existing-project.md +81 -0
  73. package/lovely-docs/drizzle-orm/database_setup_guides/get-started-bun-sql.md +29 -0
  74. package/lovely-docs/drizzle-orm/database_setup_guides/getting_started_with_gel.md +85 -0
  75. package/lovely-docs/drizzle-orm/database_setup_guides/mysql-existing-project.md +32 -0
  76. package/lovely-docs/drizzle-orm/database_setup_guides/mysql-setup.md +43 -0
  77. package/lovely-docs/drizzle-orm/database_setup_guides/neon-existing-project.md +39 -0
  78. package/lovely-docs/drizzle-orm/database_setup_guides/neon-setup.md +45 -0
  79. package/lovely-docs/drizzle-orm/database_setup_guides/nile-existing-project.md +66 -0
  80. package/lovely-docs/drizzle-orm/database_setup_guides/nile-setup.md +59 -0
  81. package/lovely-docs/drizzle-orm/database_setup_guides/op-sqlite_setup_guide.md +135 -0
  82. package/lovely-docs/drizzle-orm/database_setup_guides/pglite-existing-project.md +67 -0
  83. package/lovely-docs/drizzle-orm/database_setup_guides/pglite-setup.md +33 -0
  84. package/lovely-docs/drizzle-orm/database_setup_guides/planetscale-existing-project.md +70 -0
  85. package/lovely-docs/drizzle-orm/database_setup_guides/planetscale-setup.md +46 -0
  86. package/lovely-docs/drizzle-orm/database_setup_guides/postgresql-existing-project.md +57 -0
  87. package/lovely-docs/drizzle-orm/database_setup_guides/postgresql-setup.md +44 -0
  88. package/lovely-docs/drizzle-orm/database_setup_guides/singlestore-existing-project.md +22 -0
  89. package/lovely-docs/drizzle-orm/database_setup_guides/singlestore-setup.md +37 -0
  90. package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-cloud-existing-project.md +52 -0
  91. package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-cloud-setup.md +53 -0
  92. package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-durable-objects-setup.md +163 -0
  93. package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-existing-project.md +36 -0
  94. package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-new.md +28 -0
  95. package/lovely-docs/drizzle-orm/database_setup_guides/supabase-existing-project.md +32 -0
  96. package/lovely-docs/drizzle-orm/database_setup_guides/tidb-existing-project.md +25 -0
  97. package/lovely-docs/drizzle-orm/database_setup_guides/tidb-serverless-setup.md +41 -0
  98. package/lovely-docs/drizzle-orm/database_setup_guides/turso-database-existing.md +61 -0
  99. package/lovely-docs/drizzle-orm/database_setup_guides/turso-database-setup.md +60 -0
  100. package/lovely-docs/drizzle-orm/database_setup_guides/turso-existing.md +74 -0
  101. package/lovely-docs/drizzle-orm/database_setup_guides/turso-new.md +78 -0
  102. package/lovely-docs/drizzle-orm/database_setup_guides/vercel-postgres-existing-project.md +71 -0
  103. package/lovely-docs/drizzle-orm/database_setup_guides/vercel-postgres-setup.md +46 -0
  104. package/lovely-docs/drizzle-orm/database_setup_guides/xata-existing-project.md +32 -0
  105. package/lovely-docs/drizzle-orm/database_setup_guides/xata-new.md +30 -0
  106. package/lovely-docs/drizzle-orm/database_setup_guides.md +144 -0
  107. package/lovely-docs/drizzle-orm/delete.md +57 -0
  108. package/lovely-docs/drizzle-orm/drizzle-config-file.md +252 -0
  109. package/lovely-docs/drizzle-orm/drizzle-kit-up.md +43 -0
  110. package/lovely-docs/drizzle-orm/dynamic-query-building.md +68 -0
  111. package/lovely-docs/drizzle-orm/eslint-plugin.md +76 -0
  112. package/lovely-docs/drizzle-orm/expo-sqlite.md +101 -0
  113. package/lovely-docs/drizzle-orm/export.md +88 -0
  114. package/lovely-docs/drizzle-orm/faq.md +28 -0
  115. package/lovely-docs/drizzle-orm/filter-and-conditional-operators.md +169 -0
  116. package/lovely-docs/drizzle-orm/gel-setup.md +37 -0
  117. package/lovely-docs/drizzle-orm/generate.md +119 -0
  118. package/lovely-docs/drizzle-orm/generated-columns.md +128 -0
  119. package/lovely-docs/drizzle-orm/getting_started/database_integrations/drizzle-with-turso.md +159 -0
  120. package/lovely-docs/drizzle-orm/getting_started/database_integrations/drizzle_with_nile_database.md +195 -0
  121. package/lovely-docs/drizzle-orm/getting_started/database_integrations/neon_postgres_integration.md +157 -0
  122. package/lovely-docs/drizzle-orm/getting_started/database_integrations/supabase_integration.md +150 -0
  123. package/lovely-docs/drizzle-orm/getting_started/database_integrations/vercel-postgres-setup.md +152 -0
  124. package/lovely-docs/drizzle-orm/getting_started/database_integrations/xata_integration.md +143 -0
  125. package/lovely-docs/drizzle-orm/getting_started/database_integrations.md +117 -0
  126. package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/drizzle_with_vercel_edge_functions.md +220 -0
  127. package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/netlify_edge_functions_with_neon_postgres.md +120 -0
  128. package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/netlify_edge_functions_with_supabase.md +94 -0
  129. package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/supabase_edge_functions_integration.md +116 -0
  130. package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration.md +63 -0
  131. package/lovely-docs/drizzle-orm/getting_started/todo_app_with_neon_postgres.md +323 -0
  132. package/lovely-docs/drizzle-orm/getting_started.md +443 -0
  133. package/lovely-docs/drizzle-orm/graphql.md +107 -0
  134. package/lovely-docs/drizzle-orm/http-proxy-driver.md +138 -0
  135. package/lovely-docs/drizzle-orm/indexes-constraints.md +135 -0
  136. package/lovely-docs/drizzle-orm/insert.mdx.md +118 -0
  137. package/lovely-docs/drizzle-orm/joins.md +145 -0
  138. package/lovely-docs/drizzle-orm/kit-overview.md +81 -0
  139. package/lovely-docs/drizzle-orm/migrate.md +54 -0
  140. package/lovely-docs/drizzle-orm/migration_guides/migrate-from-sequelize.md +335 -0
  141. package/lovely-docs/drizzle-orm/migration_guides/migrate-from-typeorm.md +317 -0
  142. package/lovely-docs/drizzle-orm/migration_guides/migrate_from_prisma_to_drizzle.md +258 -0
  143. package/lovely-docs/drizzle-orm/migration_guides.md +201 -0
  144. package/lovely-docs/drizzle-orm/migrations.md +50 -0
  145. package/lovely-docs/drizzle-orm/mysql-setup.md +51 -0
  146. package/lovely-docs/drizzle-orm/op-sqlite-setup.md +80 -0
  147. package/lovely-docs/drizzle-orm/overview.md +69 -0
  148. package/lovely-docs/drizzle-orm/postgresql-setup.md +71 -0
  149. package/lovely-docs/drizzle-orm/postgresql_extensions.md +93 -0
  150. package/lovely-docs/drizzle-orm/prepared-statements.md +77 -0
  151. package/lovely-docs/drizzle-orm/prisma-extension.md +46 -0
  152. package/lovely-docs/drizzle-orm/pull.md +134 -0
  153. package/lovely-docs/drizzle-orm/push.md +129 -0
  154. package/lovely-docs/drizzle-orm/queries-and-crud.md +72 -0
  155. package/lovely-docs/drizzle-orm/quick-start.md +63 -0
  156. package/lovely-docs/drizzle-orm/react-native-sqlite-setup.md +1 -0
  157. package/lovely-docs/drizzle-orm/read-replicas.md +66 -0
  158. package/lovely-docs/drizzle-orm/relational-queries.md +271 -0
  159. package/lovely-docs/drizzle-orm/relations.md +194 -0
  160. package/lovely-docs/drizzle-orm/release_notes/live-queries.md +27 -0
  161. package/lovely-docs/drizzle-orm/release_notes/pglite_driver_support.md +14 -0
  162. package/lovely-docs/drizzle-orm/release_notes/v0.11.0_release.md +139 -0
  163. package/lovely-docs/drizzle-orm/release_notes/v0.16.2_release_notes.md +86 -0
  164. package/lovely-docs/drizzle-orm/release_notes/v0.23.2_release.md +5 -0
  165. package/lovely-docs/drizzle-orm/release_notes/v0.27.2_-_unique_constraints_support.md +66 -0
  166. package/lovely-docs/drizzle-orm/release_notes/v0.28.0_release_notes.md +80 -0
  167. package/lovely-docs/drizzle-orm/release_notes/v0.28.1_release.md +7 -0
  168. package/lovely-docs/drizzle-orm/release_notes/v0.28.2_release_notes.md +18 -0
  169. package/lovely-docs/drizzle-orm/release_notes/v0.28.3_release_notes.md +48 -0
  170. package/lovely-docs/drizzle-orm/release_notes/v0.28.4_release.md +8 -0
  171. package/lovely-docs/drizzle-orm/release_notes/v0.28.5_release_notes.md +7 -0
  172. package/lovely-docs/drizzle-orm/release_notes/v0.28.6_release_notes.md +54 -0
  173. package/lovely-docs/drizzle-orm/release_notes/v0.29.0_release_notes.md +143 -0
  174. package/lovely-docs/drizzle-orm/release_notes/v0.29.1_release_notes.md +72 -0
  175. package/lovely-docs/drizzle-orm/release_notes/v0.29.2_release_notes.md +95 -0
  176. package/lovely-docs/drizzle-orm/release_notes/v0.29.3_release.md +7 -0
  177. package/lovely-docs/drizzle-orm/release_notes/v0.29.4_release_notes.md +40 -0
  178. package/lovely-docs/drizzle-orm/release_notes/v0.29.5_release_notes.md +69 -0
  179. package/lovely-docs/drizzle-orm/release_notes/v0.30.0_release_notes.md +31 -0
  180. package/lovely-docs/drizzle-orm/release_notes/v0.30.10_release.md +18 -0
  181. package/lovely-docs/drizzle-orm/release_notes/v0.30.1_release_notes.md +16 -0
  182. package/lovely-docs/drizzle-orm/release_notes/v0.30.2_release_notes.md +7 -0
  183. package/lovely-docs/drizzle-orm/release_notes/v0.30.3_release_notes.md +8 -0
  184. package/lovely-docs/drizzle-orm/release_notes/v0.30.5_release_notes.md +20 -0
  185. package/lovely-docs/drizzle-orm/release_notes/v0.30.7_release.md +5 -0
  186. package/lovely-docs/drizzle-orm/release_notes/v0.30.8_release_notes.md +36 -0
  187. package/lovely-docs/drizzle-orm/release_notes/v0.30.9_release.md +29 -0
  188. package/lovely-docs/drizzle-orm/release_notes/v0.31.0_release_notes.md +186 -0
  189. package/lovely-docs/drizzle-orm/release_notes/v0.31.2_tidb_cloud_serverless_support.md +16 -0
  190. package/lovely-docs/drizzle-orm/release_notes/v0.31.3_release.md +19 -0
  191. package/lovely-docs/drizzle-orm/release_notes/v0.31.4_release.md +1 -0
  192. package/lovely-docs/drizzle-orm/release_notes/v0.32.0_release_notes.md +136 -0
  193. package/lovely-docs/drizzle-orm/release_notes/v0.32.1_release_notes.md +15 -0
  194. package/lovely-docs/drizzle-orm/release_notes/v0.32.2_release.md +13 -0
  195. package/lovely-docs/drizzle-orm/release_notes/xata-http-driver-support.md +27 -0
  196. package/lovely-docs/drizzle-orm/release_notes.md +25 -0
  197. package/lovely-docs/drizzle-orm/rls.mdx.md +385 -0
  198. package/lovely-docs/drizzle-orm/schema-declaration.md +239 -0
  199. package/lovely-docs/drizzle-orm/schemas.md +63 -0
  200. package/lovely-docs/drizzle-orm/seed-generators.md +220 -0
  201. package/lovely-docs/drizzle-orm/seed-limitations.md +3 -0
  202. package/lovely-docs/drizzle-orm/seed-overview.md +155 -0
  203. package/lovely-docs/drizzle-orm/seed-versioning.md +85 -0
  204. package/lovely-docs/drizzle-orm/select.md +411 -0
  205. package/lovely-docs/drizzle-orm/sequences.md +62 -0
  206. package/lovely-docs/drizzle-orm/serverless-performance.md +21 -0
  207. package/lovely-docs/drizzle-orm/set-operations.md +127 -0
  208. package/lovely-docs/drizzle-orm/singlestore-setup.md +57 -0
  209. package/lovely-docs/drizzle-orm/sql-template.md +127 -0
  210. package/lovely-docs/drizzle-orm/sqlite-setup.md +65 -0
  211. package/lovely-docs/drizzle-orm/studio.md +47 -0
  212. package/lovely-docs/drizzle-orm/transactions.md +83 -0
  213. package/lovely-docs/drizzle-orm/type-helpers-and-utilities.md +160 -0
  214. package/lovely-docs/drizzle-orm/typebox.md +110 -0
  215. package/lovely-docs/drizzle-orm/update.md +79 -0
  216. package/lovely-docs/drizzle-orm/upgrade-to-0.21.0.md +40 -0
  217. package/lovely-docs/drizzle-orm/valibot.md +115 -0
  218. package/lovely-docs/drizzle-orm/views.md +135 -0
  219. package/lovely-docs/drizzle-orm/why-drizzle.md +66 -0
  220. package/lovely-docs/drizzle-orm/zod.md +113 -0
  221. package/lovely-docs/drizzle-orm.md +60 -0
  222. package/package.json +24 -0
  223. package/src/index.ts +186 -0
  224. package/tsconfig.json +14 -0
@@ -0,0 +1,60 @@
1
+ ## Turso Cloud Integration
2
+
3
+ Turso is a libSQL-powered edge SQLite database as a service. Drizzle ORM natively supports the libSQL driver.
4
+
5
+ ### Installation
6
+ ```
7
+ npm install drizzle-orm @libsql/client
8
+ npm install -D drizzle-kit
9
+ ```
10
+
11
+ ### Driver Initialization
12
+ Drizzle supports all `@libsql/client` driver variations. Initialize with:
13
+
14
+ **Node.js:**
15
+ ```typescript
16
+ import { drizzle } from 'drizzle-orm/libsql';
17
+ import { createClient } from '@libsql/client';
18
+
19
+ const client = createClient({
20
+ url: process.env.DATABASE_URL,
21
+ authToken: process.env.DATABASE_AUTH_TOKEN
22
+ });
23
+
24
+ const db = drizzle({ client });
25
+ ```
26
+
27
+ **Web:**
28
+ ```typescript
29
+ import { drizzle } from 'drizzle-orm/libsql/web';
30
+ import { createClient } from '@libsql/client/web';
31
+
32
+ const client = createClient({
33
+ url: process.env.DATABASE_URL,
34
+ authToken: process.env.DATABASE_AUTH_TOKEN
35
+ });
36
+
37
+ const db = drizzle({ client });
38
+ ```
39
+
40
+ Alternatively, pass connection config directly:
41
+ ```typescript
42
+ const db = drizzle({ connection: {
43
+ url: process.env.DATABASE_URL,
44
+ authToken: process.env.DATABASE_AUTH_TOKEN
45
+ }});
46
+ ```
47
+
48
+ ### Querying
49
+ ```typescript
50
+ import * as s from 'drizzle-orm/sqlite-core';
51
+
52
+ const users = s.sqliteTable("users", {
53
+ id: s.integer(),
54
+ name: s.text(),
55
+ });
56
+
57
+ const result = await db.select().from(users);
58
+ ```
59
+
60
+ Drizzle mirrors SQLite query methods: `all()`, `get()`, `values()`, `run()`.
@@ -0,0 +1,37 @@
1
+ ## Vercel Postgres Integration
2
+
3
+ Vercel Postgres is a serverless SQL database designed to integrate with Vercel Functions. Drizzle ORM natively supports both the `@vercel/postgres` serverless driver and standard PostgreSQL drivers (`postgres` or `pg`) for accessing Vercel Postgres.
4
+
5
+ ### Installation
6
+
7
+ ```
8
+ drizzle-orm @vercel/postgres
9
+ -D drizzle-kit
10
+ ```
11
+
12
+ ### Setup
13
+
14
+ 1. Set up a Vercel Postgres project according to official Vercel docs
15
+ 2. Initialize the driver and execute queries
16
+
17
+ ### Usage
18
+
19
+ With default client:
20
+ ```typescript
21
+ import { drizzle } from 'drizzle-orm/vercel-postgres';
22
+ const db = drizzle();
23
+ const result = await db.execute('select 1');
24
+ ```
25
+
26
+ With existing driver:
27
+ ```typescript
28
+ import { sql } from '@vercel/postgres';
29
+ import { drizzle } from 'drizzle-orm/vercel-postgres';
30
+ const db = drizzle({ client: sql });
31
+ const result = await db.execute('select 1');
32
+ ```
33
+
34
+ ### Key Features
35
+
36
+ - `@vercel/postgres` works in both serverful and serverless environments (including Cloudflare Workers) via websockets
37
+ - For serverful environments, can use `@vercel/postgres` or direct `postgresql://` connection with `postgres` or `pg` drivers
@@ -0,0 +1,29 @@
1
+ ## Xata Integration
2
+
3
+ Xata is a PostgreSQL database platform with features like instant copy-on-write branches, zero-downtime schema changes, data anonymization, and AI-powered performance monitoring.
4
+
5
+ ### Setup
6
+
7
+ Install packages:
8
+ ```
9
+ drizzle-orm postgres
10
+ -D drizzle-kit
11
+ ```
12
+
13
+ Initialize driver and query:
14
+ ```typescript
15
+ import { drizzle } from 'drizzle-orm/postgres-js'
16
+
17
+ const db = drizzle(process.env.DATABASE_URL);
18
+ const allUsers = await db.select().from(...);
19
+ ```
20
+
21
+ Or with existing postgres driver:
22
+ ```typescript
23
+ import { drizzle } from 'drizzle-orm/postgres-js'
24
+ import postgres from 'postgres'
25
+
26
+ const client = postgres(process.env.DATABASE_URL)
27
+ const db = drizzle({ client });
28
+ const allUsers = await db.select().from(...);
29
+ ```
@@ -0,0 +1,40 @@
1
+ ## Custom SQL Migrations
2
+
3
+ Drizzle Kit allows you to generate empty migration files for writing custom SQL migrations that handle DDL alterations not yet supported by Drizzle Kit, or for data seeding operations.
4
+
5
+ ### Generating Custom Migrations
6
+
7
+ Use the `--custom` flag with the generate command:
8
+
9
+ ```shell
10
+ drizzle-kit generate --custom --name=seed-users
11
+ ```
12
+
13
+ This creates a new migration file in the `drizzle` directory with a sequential number prefix:
14
+
15
+ ```plaintext
16
+ 📦 <project root>
17
+ ├ 📂 drizzle
18
+ │ ├ 📂 _meta
19
+ │ ├ 📜 0000_init.sql
20
+ │ └ 📜 0001_seed-users.sql
21
+ ├ 📂 src
22
+ └ …
23
+ ```
24
+
25
+ ### Writing Custom SQL
26
+
27
+ Write your custom SQL directly in the generated migration file:
28
+
29
+ ```sql
30
+ -- ./drizzle/0001_seed-users.sql
31
+ INSERT INTO "users" ("name") VALUES('Dan');
32
+ INSERT INTO "users" ("name") VALUES('Andrew');
33
+ INSERT INTO "users" ("name") VALUES('Dandrew');
34
+ ```
35
+
36
+ Custom migrations are executed using the `drizzle-kit migrate` command.
37
+
38
+ ### Future: JavaScript and TypeScript Migrations
39
+
40
+ Support for running custom JavaScript and TypeScript migration/seeding scripts is planned for an upcoming release.
@@ -0,0 +1,137 @@
1
+ ## Defining Custom Types
2
+
3
+ Custom types in Drizzle ORM are created using the `customType` function, which allows you to define database-specific data types with TypeScript type safety.
4
+
5
+ ### Core Concept
6
+
7
+ The `customType` function accepts a generic type parameter with the following properties:
8
+ - `data`: The TypeScript type for the column (e.g., `string`, `number`, `Date`)
9
+ - `driverData`: (optional) The type the database driver uses internally
10
+ - `config`: (optional) Configuration object type for the data type definition
11
+ - `notNull`: (optional) Whether the type is not null by default
12
+ - `default`: (optional) Whether the type has a default value
13
+
14
+ ### CustomTypeParams Interface
15
+
16
+ The function receives a configuration object with:
17
+ - `dataType(config?)`: Returns the SQL data type string (e.g., `'text'`, `'serial'`, `'varchar(256)'`)
18
+ - `toDriver(value)`: (optional) Maps TypeScript value to driver format
19
+ - `fromDriver(value)`: (optional) Maps driver value back to TypeScript format
20
+
21
+ ### Postgres Examples
22
+
23
+ **Serial**
24
+ ```typescript
25
+ import { customType } from 'drizzle-orm/pg-core';
26
+
27
+ const customSerial = customType<{ data: number; notNull: true; default: true }>({
28
+ dataType() { return 'serial'; },
29
+ });
30
+ ```
31
+
32
+ **Text**
33
+ ```typescript
34
+ const customText = customType<{ data: string }>({
35
+ dataType() { return 'text'; },
36
+ });
37
+ ```
38
+
39
+ **Boolean**
40
+ ```typescript
41
+ const customBoolean = customType<{ data: boolean }>({
42
+ dataType() { return 'boolean'; },
43
+ });
44
+ ```
45
+
46
+ **JSONB with generic type**
47
+ ```typescript
48
+ const customJsonb = <TData>(name: string) =>
49
+ customType<{ data: TData; driverData: string }>({
50
+ dataType() { return 'jsonb'; },
51
+ toDriver(value: TData): string { return JSON.stringify(value); },
52
+ })(name);
53
+ ```
54
+
55
+ **Timestamp with config**
56
+ ```typescript
57
+ const customTimestamp = customType<{
58
+ data: Date;
59
+ driverData: string;
60
+ config: { withTimezone: boolean; precision?: number };
61
+ }>({
62
+ dataType(config) {
63
+ const precision = typeof config.precision !== 'undefined' ? ` (${config.precision})` : '';
64
+ return `timestamp${precision}${config.withTimezone ? ' with time zone' : ''}`;
65
+ },
66
+ fromDriver(value: string): Date { return new Date(value); },
67
+ });
68
+ ```
69
+
70
+ ### MySQL Examples
71
+
72
+ **Int**
73
+ ```typescript
74
+ import { customType } from 'drizzle-orm/mysql-core';
75
+
76
+ const customInt = customType<{ data: number; notNull: false; default: false }>({
77
+ dataType() { return 'int'; },
78
+ });
79
+ ```
80
+
81
+ **Text** (same as Postgres)
82
+
83
+ **Boolean with driver mapping**
84
+ ```typescript
85
+ const customBoolean = customType<{ data: boolean }>({
86
+ dataType() { return 'boolean'; },
87
+ fromDriver(value) { return typeof value === 'boolean' ? value : value === 1; },
88
+ });
89
+ ```
90
+
91
+ **JSON with generic type**
92
+ ```typescript
93
+ const customJson = <TData>(name: string) =>
94
+ customType<{ data: TData; driverData: string }>({
95
+ dataType() { return 'json'; },
96
+ toDriver(value: TData): string { return JSON.stringify(value); },
97
+ })(name);
98
+ ```
99
+
100
+ **Timestamp with fsp config**
101
+ ```typescript
102
+ const customTimestamp = customType<{
103
+ data: Date;
104
+ driverData: string;
105
+ config: { fsp: number };
106
+ }>({
107
+ dataType(config) {
108
+ const precision = typeof config.fsp !== 'undefined' ? ` (${config.fsp})` : '';
109
+ return `timestamp${precision}`;
110
+ },
111
+ fromDriver(value: string): Date { return new Date(value); },
112
+ });
113
+ ```
114
+
115
+ ### Usage in Table Definition
116
+
117
+ ```typescript
118
+ // Postgres
119
+ const usersTable = pgTable('users', {
120
+ id: customSerial('id').primaryKey(),
121
+ name: customText('name').notNull(),
122
+ verified: customBoolean('verified').notNull().default(false),
123
+ jsonb: customJsonb<string[]>('jsonb'),
124
+ createdAt: customTimestamp('created_at', { withTimezone: true }).notNull().default(sql`now()`),
125
+ });
126
+
127
+ // MySQL
128
+ const usersTable = mysqlTable('userstest', {
129
+ id: customInt('id').primaryKey(),
130
+ name: customText('name').notNull(),
131
+ verified: customBoolean('verified').notNull().default(false),
132
+ jsonb: customJson<string[]>('jsonb'),
133
+ createdAt: customTimestamp('created_at', { fsp: 2 }).notNull().default(sql`now()`),
134
+ });
135
+ ```
136
+
137
+ Custom types are used identically to built-in Drizzle ORM types once defined.
@@ -0,0 +1,89 @@
1
+ ## Database Connection with Drizzle
2
+
3
+ Drizzle ORM executes SQL queries through database drivers. The ORM creates a database instance that translates high-level queries into SQL and communicates with the database via the driver.
4
+
5
+ ### Basic Connection
6
+
7
+ ```ts
8
+ import { drizzle } from "drizzle-orm/node-postgres"
9
+ import { users } from "./schema"
10
+
11
+ const db = drizzle(process.env.DATABASE_URL);
12
+ const usersCount = await db.$count(users);
13
+ ```
14
+
15
+ The query `db.$count(users)` translates to `select count(*) from users` and is executed through the node-postgres driver, returning `[{ count: 0 }]`.
16
+
17
+ ### Accessing the Driver Client
18
+
19
+ Drizzle creates a driver instance internally, accessible via `db.$client`:
20
+
21
+ ```ts
22
+ const db = drizzle(process.env.DATABASE_URL);
23
+ const pool = db.$client;
24
+
25
+ // Equivalent to manually creating:
26
+ import { Pool } from "pg";
27
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
28
+ const db = drizzle({ client: pool });
29
+ ```
30
+
31
+ ### Edge and Serverless Runtimes
32
+
33
+ Drizzle supports multiple serverless database drivers:
34
+
35
+ ```ts
36
+ // Neon HTTP
37
+ import { drizzle } from "drizzle-orm/neon-http";
38
+ const db = drizzle(process.env.DATABASE_URL);
39
+
40
+ // Neon with websockets
41
+ import { drizzle } from "drizzle-orm/neon-serverless";
42
+ const db = drizzle(process.env.DATABASE_URL);
43
+
44
+ // Vercel Postgres
45
+ import { drizzle } from "drizzle-orm/vercel-postgres";
46
+ const db = drizzle();
47
+
48
+ // PlanetScale HTTP
49
+ import { drizzle } from "drizzle-orm/planetscale";
50
+ const db = drizzle(process.env.DATABASE_URL);
51
+
52
+ // Cloudflare D1
53
+ import { drizzle } from "drizzle-orm/d1";
54
+ const db = drizzle({ connection: env.DB });
55
+ ```
56
+
57
+ ### Runtime-Specific Drivers
58
+
59
+ ```ts
60
+ // Bun SQLite
61
+ import { drizzle } from "drizzle-orm/bun-sqlite"
62
+ const db = drizzle(); // in-memory
63
+ const db = drizzle("./sqlite.db");
64
+
65
+ // Expo SQLite
66
+ import { drizzle } from "drizzle-orm/expo-sqlite";
67
+ import { openDatabaseSync } from "expo-sqlite";
68
+ const expo = openDatabaseSync("db.db");
69
+ const db = drizzle(expo);
70
+ ```
71
+
72
+ ### Database Connection URL Format
73
+
74
+ ```
75
+ postgresql://alex:AbC123dEf@ep-cool-darkness-123456.us-east-2.aws.neon.tech/dbname
76
+ └──┘ └───────┘ └─────────────────────────────────────────────┘ └────┘
77
+ ʌ ʌ ʌ ʌ
78
+ role -│ │ │- hostname │- database
79
+
80
+ │- password
81
+ ```
82
+
83
+ ### Available Drivers
84
+
85
+ PostgreSQL: PostgreSQL, Neon, Vercel Postgres, Supabase, Xata, PGLite
86
+ MySQL: MySQL, PlanetScale, TiDB
87
+ SQLite: SQLite, Turso Cloud, Turso Database, Cloudflare D1, Bun SQLite, SQLite Cloud
88
+ Native SQLite: Expo SQLite, OP SQLite, React Native SQLite
89
+ Others: Drizzle Proxy
@@ -0,0 +1,59 @@
1
+ ## Setup Drizzle ORM with Bun SQL in an existing project
2
+
3
+ **Prerequisites:**
4
+ - dotenv for environment variables
5
+ - Bun JavaScript toolkit
6
+ - Bun SQL native bindings for PostgreSQL
7
+
8
+ **Known Issue:** Bun v1.2.0 has concurrent statement execution issues that may cause errors when running multiple queries simultaneously.
9
+
10
+ **Installation:**
11
+ ```bash
12
+ npm install drizzle-orm dotenv
13
+ npm install -D drizzle-kit @types/bun
14
+ ```
15
+
16
+ **Setup Steps:**
17
+
18
+ 1. Create `.env` file with `DATABASE_URL` variable pointing to your PostgreSQL database
19
+
20
+ 2. Create `drizzle.config.ts`:
21
+ ```typescript
22
+ import { defineConfig } from 'drizzle-kit';
23
+
24
+ export default defineConfig({
25
+ dialect: 'postgresql',
26
+ dbCredentials: {
27
+ url: process.env.DATABASE_URL!,
28
+ },
29
+ });
30
+ ```
31
+
32
+ 3. Introspect existing database to generate schema:
33
+ ```bash
34
+ drizzle-kit introspect:pg
35
+ ```
36
+
37
+ 4. Transfer generated schema to your actual schema file
38
+
39
+ 5. Connect to database in `src/index.ts`:
40
+ ```typescript
41
+ import { drizzle } from 'drizzle-orm/bun';
42
+ import { sql } from 'bun:sql';
43
+
44
+ const db = drizzle(sql);
45
+ ```
46
+
47
+ 6. Query the database:
48
+ ```typescript
49
+ const result = await db.query.users.findMany();
50
+ ```
51
+
52
+ 7. Run with Bun:
53
+ ```bash
54
+ bun src/index.ts
55
+ ```
56
+
57
+ 8. (Optional) Update table schema and apply migrations with `drizzle-kit push:pg`
58
+
59
+ 9. (Optional) Query with new fields after schema updates
@@ -0,0 +1,48 @@
1
+ ## Setup Drizzle ORM with Bun:SQLite in an existing project
2
+
3
+ **Prerequisites:**
4
+ - dotenv - for environment variables
5
+ - tsx - for running TypeScript files
6
+ - bun - JavaScript all-in-one toolkit
7
+ - bun:sqlite - native SQLite3 driver
8
+
9
+ **Step 1: Install packages**
10
+ ```bash
11
+ npm install drizzle-orm dotenv
12
+ npm install -D drizzle-kit tsx @types/bun
13
+ ```
14
+
15
+ **Step 2: Setup environment variables**
16
+ Create a `.env` file with:
17
+ ```plaintext
18
+ DB_FILE_NAME=mydb.sqlite
19
+ ```
20
+
21
+ **Step 3: Setup Drizzle config file**
22
+ Create `drizzle.config.ts` with SQLite dialect and reference the `DB_FILE_NAME` environment variable.
23
+
24
+ **Step 4: Introspect your database**
25
+ Run introspection to generate schema from existing SQLite database.
26
+
27
+ **Step 5: Transfer introspected code to schema file**
28
+ Move the generated schema code to your actual schema file.
29
+
30
+ **Step 6: Connect Drizzle ORM to the database**
31
+ Use bun:sqlite to establish connection in your application.
32
+
33
+ **Step 7: Query the database**
34
+ Write queries using the generated schema with bun-sqlite dialect.
35
+
36
+ **Step 8: Run the script**
37
+ ```bash
38
+ bun src/index.ts
39
+ ```
40
+
41
+ **Step 9 (optional): Update table schema**
42
+ Modify your schema definitions as needed.
43
+
44
+ **Step 10 (optional): Apply changes to database**
45
+ Run migrations to apply schema changes to the database.
46
+
47
+ **Step 11 (optional): Query with new fields**
48
+ Test queries with newly added schema fields.
@@ -0,0 +1,34 @@
1
+ ## Setup Drizzle ORM with Bun and SQLite
2
+
3
+ **Prerequisites:**
4
+ - bun - JavaScript all-in-one toolkit
5
+ - bun:sqlite - native high-performance SQLite3 driver
6
+
7
+ **Step 1 - Install packages:**
8
+ ```bash
9
+ npm install drizzle-orm
10
+ npm install -D drizzle-kit @types/bun
11
+ ```
12
+
13
+ **Step 2 - Setup connection variables:**
14
+ Create environment variable `DB_FILE_NAME` with value like `mydb.sqlite`
15
+
16
+ **Step 3 - Connect to database:**
17
+ Use bun:sqlite to establish connection to the database file
18
+
19
+ **Step 4 - Create a table:**
20
+ Define schema using Drizzle ORM table definitions
21
+
22
+ **Step 5 - Setup Drizzle config file:**
23
+ Configure drizzle.config.ts with dialect set to 'sqlite' and reference the DB_FILE_NAME environment variable
24
+
25
+ **Step 6 - Apply changes:**
26
+ Run migrations to apply schema changes to the database
27
+
28
+ **Step 7 - Seed and Query:**
29
+ Write queries using Drizzle ORM to insert and retrieve data from the database
30
+
31
+ **Step 8 - Run the script:**
32
+ ```bash
33
+ bun src/index.ts
34
+ ```
@@ -0,0 +1,74 @@
1
+ ## Getting Started with Cloudflare D1
2
+
3
+ Setup guide for using Drizzle ORM with Cloudflare D1 serverless SQL database.
4
+
5
+ **Prerequisites:**
6
+ - dotenv - environment variable management
7
+ - tsx - TypeScript file runner
8
+ - Cloudflare D1 - serverless SQL database
9
+ - wrangler - Cloudflare CLI
10
+
11
+ **Step 1: Install packages**
12
+ Install drizzle-orm and required dependencies.
13
+
14
+ **Step 2: Configure wrangler.toml**
15
+ ```toml
16
+ name = "YOUR PROJECT NAME"
17
+ main = "src/index.ts"
18
+ compatibility_date = "2022-11-07"
19
+ node_compat = true
20
+
21
+ [[ d1_databases ]]
22
+ binding = "DB"
23
+ database_name = "YOUR DB NAME"
24
+ database_id = "YOUR DB ID"
25
+ migrations_dir = "drizzle"
26
+ ```
27
+
28
+ **Step 3: Connect to database**
29
+ ```typescript
30
+ import { drizzle } from 'drizzle-orm/d1';
31
+
32
+ export interface Env {
33
+ <BINDING_NAME>: D1Database;
34
+ }
35
+ export default {
36
+ async fetch(request: Request, env: Env) {
37
+ const db = drizzle(env.<BINDING_NAME>);
38
+ },
39
+ };
40
+ ```
41
+
42
+ **Step 4: Create a table**
43
+ Define your schema (referenced from separate component).
44
+
45
+ **Step 5: Setup drizzle.config.ts**
46
+ ```typescript
47
+ import 'dotenv/config';
48
+ import { defineConfig } from 'drizzle-kit';
49
+
50
+ export default defineConfig({
51
+ out: './drizzle',
52
+ schema: './src/db/schema.ts',
53
+ dialect: 'sqlite',
54
+ driver: 'd1-http',
55
+ dbCredentials: {
56
+ accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
57
+ databaseId: process.env.CLOUDFLARE_DATABASE_ID!,
58
+ token: process.env.CLOUDFLARE_D1_TOKEN!,
59
+ },
60
+ });
61
+ ```
62
+
63
+ **Step 6: Apply migrations**
64
+ Run migrations to update database schema.
65
+
66
+ **Step 7: Query the database**
67
+ ```typescript
68
+ const db = drizzle(env.<BINDING_NAME>);
69
+ const result = await db.select().from(users).all()
70
+ return Response.json(result);
71
+ ```
72
+
73
+ **Step 8: Run the application**
74
+ Execute the index.ts file.