@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.
- package/.claude/settings.local.json +9 -0
- package/.lovely-docs.yaml +11 -0
- package/LICENSE +21 -0
- package/demo/next.config.mjs +17 -0
- package/demo/package.json +26 -0
- package/demo/scripts/copy-wasm.mjs +14 -0
- package/demo/src/app/layout.tsx +16 -0
- package/demo/src/app/page.tsx +16 -0
- package/demo/src/app/todos.tsx +118 -0
- package/demo/src/db/schema.ts +7 -0
- package/demo/tsconfig.json +18 -0
- package/lovely-docs/drizzle-orm/arktype.md +113 -0
- package/lovely-docs/drizzle-orm/batch-api.md +35 -0
- package/lovely-docs/drizzle-orm/cache.md +145 -0
- package/lovely-docs/drizzle-orm/check-migrations.md +52 -0
- package/lovely-docs/drizzle-orm/column_types/mysql-column-types.md +76 -0
- package/lovely-docs/drizzle-orm/column_types/postgresql_column_types.md +314 -0
- package/lovely-docs/drizzle-orm/column_types/singlestore-column-types.md +171 -0
- package/lovely-docs/drizzle-orm/column_types/sqlite_column_types.md +132 -0
- package/lovely-docs/drizzle-orm/column_types.md +76 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/case-insensitive-unique-email.md +113 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/conditional-filters-in-query.md +69 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/count-rows.md +76 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/cursor-based-pagination.md +142 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/d1_http_api_configuration.md +49 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/decrementing-a-value.md +36 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/empty-array-default-value.md +43 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/full-text-search-with-generated-columns.md +73 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/gel-auth-extension.md +89 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/include-or-exclude-columns.md +51 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/incrementing-a-value.md +36 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/limit-offset-pagination.md +104 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/mysql-local-setup.md +55 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/point-datatype-psql.md +79 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/postgis-geometry-point.md +115 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/postgresql-full-text-search.md +150 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/postgresql-local-setup.md +55 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/seeding-with-option.md +69 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/seeding-with-partially-exposed-schema.md +60 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/select-parent-rows-with-at-least-one-related-child-row.md +74 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/timestamp-default-value.md +93 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/toggling-a-boolean-field.md +20 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/update-many-with-different-values.md +50 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/upsert.md +169 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes/vector-similarity-search.md +79 -0
- package/lovely-docs/drizzle-orm/common_patterns_&_recipes.md +787 -0
- package/lovely-docs/drizzle-orm/connect-aws-data-api-pg.md +47 -0
- package/lovely-docs/drizzle-orm/connect-bun-sql.md +35 -0
- package/lovely-docs/drizzle-orm/connect-bun-sqlite.md +42 -0
- package/lovely-docs/drizzle-orm/connect-cloudflare-d1.md +61 -0
- package/lovely-docs/drizzle-orm/connect-cloudflare-do.md +86 -0
- package/lovely-docs/drizzle-orm/connect-neon.md +72 -0
- package/lovely-docs/drizzle-orm/connect-nile.md +84 -0
- package/lovely-docs/drizzle-orm/connect-pglite.md +39 -0
- package/lovely-docs/drizzle-orm/connect-planetscale.md +37 -0
- package/lovely-docs/drizzle-orm/connect-prisma-postgres.md +48 -0
- package/lovely-docs/drizzle-orm/connect-sqlite-cloud.md +29 -0
- package/lovely-docs/drizzle-orm/connect-supabase.md +45 -0
- package/lovely-docs/drizzle-orm/connect-tidb-serverless.md +35 -0
- package/lovely-docs/drizzle-orm/connect-turso-database.md +28 -0
- package/lovely-docs/drizzle-orm/connect-turso.md +60 -0
- package/lovely-docs/drizzle-orm/connect-vercel-postgres.md +37 -0
- package/lovely-docs/drizzle-orm/connect-xata.md +29 -0
- package/lovely-docs/drizzle-orm/custom-migrations.md +40 -0
- package/lovely-docs/drizzle-orm/custom-types.md +137 -0
- package/lovely-docs/drizzle-orm/database-connection-overview.md +89 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/bun-sql-existing.md +59 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/bun-sqlite-existing.md +48 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/bun-sqlite-new.md +34 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/d1-new.md +74 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/expo-sqlite-setup.md +169 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/gel-existing-project.md +81 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/get-started-bun-sql.md +29 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/getting_started_with_gel.md +85 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/mysql-existing-project.md +32 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/mysql-setup.md +43 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/neon-existing-project.md +39 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/neon-setup.md +45 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/nile-existing-project.md +66 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/nile-setup.md +59 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/op-sqlite_setup_guide.md +135 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/pglite-existing-project.md +67 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/pglite-setup.md +33 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/planetscale-existing-project.md +70 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/planetscale-setup.md +46 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/postgresql-existing-project.md +57 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/postgresql-setup.md +44 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/singlestore-existing-project.md +22 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/singlestore-setup.md +37 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-cloud-existing-project.md +52 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-cloud-setup.md +53 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-durable-objects-setup.md +163 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-existing-project.md +36 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/sqlite-new.md +28 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/supabase-existing-project.md +32 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/tidb-existing-project.md +25 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/tidb-serverless-setup.md +41 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/turso-database-existing.md +61 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/turso-database-setup.md +60 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/turso-existing.md +74 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/turso-new.md +78 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/vercel-postgres-existing-project.md +71 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/vercel-postgres-setup.md +46 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/xata-existing-project.md +32 -0
- package/lovely-docs/drizzle-orm/database_setup_guides/xata-new.md +30 -0
- package/lovely-docs/drizzle-orm/database_setup_guides.md +144 -0
- package/lovely-docs/drizzle-orm/delete.md +57 -0
- package/lovely-docs/drizzle-orm/drizzle-config-file.md +252 -0
- package/lovely-docs/drizzle-orm/drizzle-kit-up.md +43 -0
- package/lovely-docs/drizzle-orm/dynamic-query-building.md +68 -0
- package/lovely-docs/drizzle-orm/eslint-plugin.md +76 -0
- package/lovely-docs/drizzle-orm/expo-sqlite.md +101 -0
- package/lovely-docs/drizzle-orm/export.md +88 -0
- package/lovely-docs/drizzle-orm/faq.md +28 -0
- package/lovely-docs/drizzle-orm/filter-and-conditional-operators.md +169 -0
- package/lovely-docs/drizzle-orm/gel-setup.md +37 -0
- package/lovely-docs/drizzle-orm/generate.md +119 -0
- package/lovely-docs/drizzle-orm/generated-columns.md +128 -0
- package/lovely-docs/drizzle-orm/getting_started/database_integrations/drizzle-with-turso.md +159 -0
- package/lovely-docs/drizzle-orm/getting_started/database_integrations/drizzle_with_nile_database.md +195 -0
- package/lovely-docs/drizzle-orm/getting_started/database_integrations/neon_postgres_integration.md +157 -0
- package/lovely-docs/drizzle-orm/getting_started/database_integrations/supabase_integration.md +150 -0
- package/lovely-docs/drizzle-orm/getting_started/database_integrations/vercel-postgres-setup.md +152 -0
- package/lovely-docs/drizzle-orm/getting_started/database_integrations/xata_integration.md +143 -0
- package/lovely-docs/drizzle-orm/getting_started/database_integrations.md +117 -0
- package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/drizzle_with_vercel_edge_functions.md +220 -0
- package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/netlify_edge_functions_with_neon_postgres.md +120 -0
- package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/netlify_edge_functions_with_supabase.md +94 -0
- package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration/supabase_edge_functions_integration.md +116 -0
- package/lovely-docs/drizzle-orm/getting_started/edge_functions_integration.md +63 -0
- package/lovely-docs/drizzle-orm/getting_started/todo_app_with_neon_postgres.md +323 -0
- package/lovely-docs/drizzle-orm/getting_started.md +443 -0
- package/lovely-docs/drizzle-orm/graphql.md +107 -0
- package/lovely-docs/drizzle-orm/http-proxy-driver.md +138 -0
- package/lovely-docs/drizzle-orm/indexes-constraints.md +135 -0
- package/lovely-docs/drizzle-orm/insert.mdx.md +118 -0
- package/lovely-docs/drizzle-orm/joins.md +145 -0
- package/lovely-docs/drizzle-orm/kit-overview.md +81 -0
- package/lovely-docs/drizzle-orm/migrate.md +54 -0
- package/lovely-docs/drizzle-orm/migration_guides/migrate-from-sequelize.md +335 -0
- package/lovely-docs/drizzle-orm/migration_guides/migrate-from-typeorm.md +317 -0
- package/lovely-docs/drizzle-orm/migration_guides/migrate_from_prisma_to_drizzle.md +258 -0
- package/lovely-docs/drizzle-orm/migration_guides.md +201 -0
- package/lovely-docs/drizzle-orm/migrations.md +50 -0
- package/lovely-docs/drizzle-orm/mysql-setup.md +51 -0
- package/lovely-docs/drizzle-orm/op-sqlite-setup.md +80 -0
- package/lovely-docs/drizzle-orm/overview.md +69 -0
- package/lovely-docs/drizzle-orm/postgresql-setup.md +71 -0
- package/lovely-docs/drizzle-orm/postgresql_extensions.md +93 -0
- package/lovely-docs/drizzle-orm/prepared-statements.md +77 -0
- package/lovely-docs/drizzle-orm/prisma-extension.md +46 -0
- package/lovely-docs/drizzle-orm/pull.md +134 -0
- package/lovely-docs/drizzle-orm/push.md +129 -0
- package/lovely-docs/drizzle-orm/queries-and-crud.md +72 -0
- package/lovely-docs/drizzle-orm/quick-start.md +63 -0
- package/lovely-docs/drizzle-orm/react-native-sqlite-setup.md +1 -0
- package/lovely-docs/drizzle-orm/read-replicas.md +66 -0
- package/lovely-docs/drizzle-orm/relational-queries.md +271 -0
- package/lovely-docs/drizzle-orm/relations.md +194 -0
- package/lovely-docs/drizzle-orm/release_notes/live-queries.md +27 -0
- package/lovely-docs/drizzle-orm/release_notes/pglite_driver_support.md +14 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.11.0_release.md +139 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.16.2_release_notes.md +86 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.23.2_release.md +5 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.27.2_-_unique_constraints_support.md +66 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.28.0_release_notes.md +80 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.28.1_release.md +7 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.28.2_release_notes.md +18 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.28.3_release_notes.md +48 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.28.4_release.md +8 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.28.5_release_notes.md +7 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.28.6_release_notes.md +54 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.29.0_release_notes.md +143 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.29.1_release_notes.md +72 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.29.2_release_notes.md +95 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.29.3_release.md +7 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.29.4_release_notes.md +40 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.29.5_release_notes.md +69 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.0_release_notes.md +31 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.10_release.md +18 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.1_release_notes.md +16 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.2_release_notes.md +7 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.3_release_notes.md +8 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.5_release_notes.md +20 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.7_release.md +5 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.8_release_notes.md +36 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.30.9_release.md +29 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.31.0_release_notes.md +186 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.31.2_tidb_cloud_serverless_support.md +16 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.31.3_release.md +19 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.31.4_release.md +1 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.32.0_release_notes.md +136 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.32.1_release_notes.md +15 -0
- package/lovely-docs/drizzle-orm/release_notes/v0.32.2_release.md +13 -0
- package/lovely-docs/drizzle-orm/release_notes/xata-http-driver-support.md +27 -0
- package/lovely-docs/drizzle-orm/release_notes.md +25 -0
- package/lovely-docs/drizzle-orm/rls.mdx.md +385 -0
- package/lovely-docs/drizzle-orm/schema-declaration.md +239 -0
- package/lovely-docs/drizzle-orm/schemas.md +63 -0
- package/lovely-docs/drizzle-orm/seed-generators.md +220 -0
- package/lovely-docs/drizzle-orm/seed-limitations.md +3 -0
- package/lovely-docs/drizzle-orm/seed-overview.md +155 -0
- package/lovely-docs/drizzle-orm/seed-versioning.md +85 -0
- package/lovely-docs/drizzle-orm/select.md +411 -0
- package/lovely-docs/drizzle-orm/sequences.md +62 -0
- package/lovely-docs/drizzle-orm/serverless-performance.md +21 -0
- package/lovely-docs/drizzle-orm/set-operations.md +127 -0
- package/lovely-docs/drizzle-orm/singlestore-setup.md +57 -0
- package/lovely-docs/drizzle-orm/sql-template.md +127 -0
- package/lovely-docs/drizzle-orm/sqlite-setup.md +65 -0
- package/lovely-docs/drizzle-orm/studio.md +47 -0
- package/lovely-docs/drizzle-orm/transactions.md +83 -0
- package/lovely-docs/drizzle-orm/type-helpers-and-utilities.md +160 -0
- package/lovely-docs/drizzle-orm/typebox.md +110 -0
- package/lovely-docs/drizzle-orm/update.md +79 -0
- package/lovely-docs/drizzle-orm/upgrade-to-0.21.0.md +40 -0
- package/lovely-docs/drizzle-orm/valibot.md +115 -0
- package/lovely-docs/drizzle-orm/views.md +135 -0
- package/lovely-docs/drizzle-orm/why-drizzle.md +66 -0
- package/lovely-docs/drizzle-orm/zod.md +113 -0
- package/lovely-docs/drizzle-orm.md +60 -0
- package/package.json +24 -0
- package/src/index.ts +186 -0
- 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.
|