@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,47 @@
|
|
|
1
|
+
## AWS Data API Postgres Connection
|
|
2
|
+
|
|
3
|
+
Connect Drizzle ORM to AWS RDS Aurora PostgreSQL using AWS Data API.
|
|
4
|
+
|
|
5
|
+
**Prerequisites:**
|
|
6
|
+
- Database connection basics with Drizzle
|
|
7
|
+
- AWS Data API (Aurora RDS)
|
|
8
|
+
- AWS SDK v3
|
|
9
|
+
|
|
10
|
+
**Installation:**
|
|
11
|
+
```
|
|
12
|
+
npm install drizzle-orm @aws-sdk/client-rds-data
|
|
13
|
+
npm install -D drizzle-kit
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Setup - Option 1 (Auto-create client):**
|
|
17
|
+
```typescript
|
|
18
|
+
import { drizzle } from 'drizzle-orm/aws-data-api/pg';
|
|
19
|
+
|
|
20
|
+
const db = drizzle({
|
|
21
|
+
connection: {
|
|
22
|
+
database: process.env['DATABASE']!,
|
|
23
|
+
secretArn: process.env['SECRET_ARN']!,
|
|
24
|
+
resourceArn: process.env['RESOURCE_ARN']!,
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
await db.select().from(...);
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Setup - Option 2 (Provide existing RDSDataClient):**
|
|
32
|
+
```typescript
|
|
33
|
+
import { drizzle } from 'drizzle-orm/aws-data-api/pg';
|
|
34
|
+
import { RDSDataClient } from '@aws-sdk/client-rds-data';
|
|
35
|
+
|
|
36
|
+
const rdsClient = new RDSDataClient({ region: 'us-east-1' });
|
|
37
|
+
|
|
38
|
+
const db = drizzle(rdsClient, {
|
|
39
|
+
database: process.env['DATABASE']!,
|
|
40
|
+
secretArn: process.env['SECRET_ARN']!,
|
|
41
|
+
resourceArn: process.env['RESOURCE_ARN']!,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
await db.select().from(...);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Three required connection properties: `database`, `secretArn`, `resourceArn`. Additional RDSDataClient properties can be specified in the connection object.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## Bun SQL Integration
|
|
2
|
+
|
|
3
|
+
Drizzle ORM natively supports Bun's SQL module for PostgreSQL database connections.
|
|
4
|
+
|
|
5
|
+
**Prerequisites:**
|
|
6
|
+
- Database connection basics with Drizzle
|
|
7
|
+
- Bun runtime (fast all-in-one JavaScript runtime)
|
|
8
|
+
- Bun SQL - native PostgreSQL bindings
|
|
9
|
+
|
|
10
|
+
**Installation:**
|
|
11
|
+
```
|
|
12
|
+
npm install drizzle-orm
|
|
13
|
+
npm install -D drizzle-kit
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Basic usage - auto-initialize driver:**
|
|
17
|
+
```typescript
|
|
18
|
+
import 'dotenv/config';
|
|
19
|
+
import { drizzle } from 'drizzle-orm/bun-sql';
|
|
20
|
+
|
|
21
|
+
const db = drizzle(process.env.DATABASE_URL);
|
|
22
|
+
const result = await db.select().from(...);
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**With existing driver:**
|
|
26
|
+
```typescript
|
|
27
|
+
import 'dotenv/config';
|
|
28
|
+
import { drizzle } from 'drizzle-orm/bun-sql';
|
|
29
|
+
import { SQL } from 'bun';
|
|
30
|
+
|
|
31
|
+
const client = new SQL(process.env.DATABASE_URL!);
|
|
32
|
+
const db = drizzle({ client });
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Bun SQL integration is noted as "crazy fast".
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
## Bun SQLite Integration
|
|
2
|
+
|
|
3
|
+
Drizzle ORM natively supports the `bun:sqlite` module with both async and sync APIs.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
```
|
|
7
|
+
npm install drizzle-orm
|
|
8
|
+
npm install -D drizzle-kit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Basic Setup
|
|
12
|
+
Initialize with default driver:
|
|
13
|
+
```typescript
|
|
14
|
+
import { drizzle } from 'drizzle-orm/bun-sqlite';
|
|
15
|
+
const db = drizzle();
|
|
16
|
+
const result = await db.select().from(...);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Or provide an existing Bun SQLite driver:
|
|
20
|
+
```typescript
|
|
21
|
+
import { drizzle } from 'drizzle-orm/bun-sqlite';
|
|
22
|
+
import { Database } from 'bun:sqlite';
|
|
23
|
+
|
|
24
|
+
const sqlite = new Database('sqlite.db');
|
|
25
|
+
const db = drizzle({ client: sqlite });
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Async API
|
|
29
|
+
```typescript
|
|
30
|
+
const result = await db.select().from(users);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Sync API
|
|
34
|
+
For synchronous operations, use the following methods:
|
|
35
|
+
```typescript
|
|
36
|
+
const result = db.select().from(users).all();
|
|
37
|
+
const result = db.select().from(users).get();
|
|
38
|
+
const result = db.select().from(users).values();
|
|
39
|
+
const result = db.select().from(users).run();
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The sync API mirrors popular SQLite methods: `all`, `get`, `values`, and `run`.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
## Cloudflare D1 Integration
|
|
2
|
+
|
|
3
|
+
D1 is Cloudflare's queryable relational database. Drizzle ORM fully supports D1 and Cloudflare Workers environment with SQLite-like query methods (`all`, `get`, `values`, `run`).
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
```
|
|
7
|
+
npm install drizzle-orm
|
|
8
|
+
npm install -D drizzle-kit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Configuration
|
|
12
|
+
Create `wrangler.json` or `wrangler.toml` with D1 database binding:
|
|
13
|
+
|
|
14
|
+
**wrangler.json:**
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"name": "YOUR_PROJECT_NAME",
|
|
18
|
+
"main": "src/index.ts",
|
|
19
|
+
"compatibility_date": "2024-09-26",
|
|
20
|
+
"compatibility_flags": ["nodejs_compat"],
|
|
21
|
+
"d1_databases": [{
|
|
22
|
+
"binding": "BINDING_NAME",
|
|
23
|
+
"database_name": "YOUR_DB_NAME",
|
|
24
|
+
"database_id": "YOUR_DB_ID",
|
|
25
|
+
"migrations_dir": "drizzle/migrations"
|
|
26
|
+
}]
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**wrangler.toml:**
|
|
31
|
+
```toml
|
|
32
|
+
name = "YOUR_PROJECT_NAME"
|
|
33
|
+
main = "src/index.ts"
|
|
34
|
+
compatibility_date = "2022-11-07"
|
|
35
|
+
node_compat = true
|
|
36
|
+
|
|
37
|
+
[[ d1_databases ]]
|
|
38
|
+
binding = "BINDING_NAME"
|
|
39
|
+
database_name = "YOUR_DB_NAME"
|
|
40
|
+
database_id = "YOUR_DB_ID"
|
|
41
|
+
migrations_dir = "drizzle/migrations"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Usage
|
|
45
|
+
```typescript
|
|
46
|
+
import { drizzle } from 'drizzle-orm/d1';
|
|
47
|
+
|
|
48
|
+
export interface Env {
|
|
49
|
+
<BINDING_NAME>: D1Database;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export default {
|
|
53
|
+
async fetch(request: Request, env: Env) {
|
|
54
|
+
const db = drizzle(env.<BINDING_NAME>);
|
|
55
|
+
const result = await db.select().from(users).all();
|
|
56
|
+
return Response.json(result);
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Initialize driver with `drizzle(env.<BINDING_NAME>)` and use standard Drizzle query syntax.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
## Cloudflare Durable Objects SQLite Setup
|
|
2
|
+
|
|
3
|
+
Drizzle ORM fully supports Cloudflare Durable Objects SQLite databases in Cloudflare Workers environment.
|
|
4
|
+
|
|
5
|
+
### Prerequisites
|
|
6
|
+
- Database connection basics with Drizzle
|
|
7
|
+
- Cloudflare SQLite Durable Objects - SQLite database embedded within a Durable Object
|
|
8
|
+
|
|
9
|
+
### Installation
|
|
10
|
+
```
|
|
11
|
+
npm install drizzle-orm
|
|
12
|
+
npm install -D drizzle-kit
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Configuration
|
|
16
|
+
|
|
17
|
+
Create `wrangler.toml` with Durable Object bindings and migrations:
|
|
18
|
+
```toml
|
|
19
|
+
name = "sqlite-durable-objects"
|
|
20
|
+
main = "src/index.ts"
|
|
21
|
+
compatibility_date = "2024-11-12"
|
|
22
|
+
compatibility_flags = [ "nodejs_compat" ]
|
|
23
|
+
|
|
24
|
+
[[durable_objects.bindings]]
|
|
25
|
+
name = "MY_DURABLE_OBJECT"
|
|
26
|
+
class_name = "MyDurableObject"
|
|
27
|
+
|
|
28
|
+
[[migrations]]
|
|
29
|
+
tag = "v1"
|
|
30
|
+
new_sqlite_classes = ["MyDurableObject"]
|
|
31
|
+
|
|
32
|
+
[[rules]]
|
|
33
|
+
type = "Text"
|
|
34
|
+
globs = ["**/*.sql"]
|
|
35
|
+
fallthrough = true
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Usage
|
|
39
|
+
|
|
40
|
+
Initialize driver and create Durable Object class:
|
|
41
|
+
```typescript
|
|
42
|
+
import { drizzle, DrizzleSqliteDODatabase } from 'drizzle-orm/durable-sqlite';
|
|
43
|
+
import { DurableObject } from 'cloudflare:workers'
|
|
44
|
+
import { migrate } from 'drizzle-orm/durable-sqlite/migrator';
|
|
45
|
+
import migrations from '../drizzle/migrations';
|
|
46
|
+
import { usersTable } from './db/schema';
|
|
47
|
+
|
|
48
|
+
export class MyDurableObject extends DurableObject {
|
|
49
|
+
storage: DurableObjectStorage;
|
|
50
|
+
db: DrizzleSqliteDODatabase<any>;
|
|
51
|
+
|
|
52
|
+
constructor(ctx: DurableObjectState, env: Env) {
|
|
53
|
+
super(ctx, env);
|
|
54
|
+
this.storage = ctx.storage;
|
|
55
|
+
this.db = drizzle(this.storage, { logger: false });
|
|
56
|
+
|
|
57
|
+
ctx.blockConcurrencyWhile(async () => {
|
|
58
|
+
await migrate(this.db, migrations);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async insertAndList(user: typeof usersTable.$inferInsert) {
|
|
63
|
+
await this.db.insert(usersTable).values(user);
|
|
64
|
+
return this.db.select().from(usersTable);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export default {
|
|
69
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
70
|
+
const id = env.MY_DURABLE_OBJECT.idFromName('durable-object');
|
|
71
|
+
const stub = env.MY_DURABLE_OBJECT.get(id);
|
|
72
|
+
|
|
73
|
+
const users = await stub.insertAndList({
|
|
74
|
+
name: 'John',
|
|
75
|
+
age: 30,
|
|
76
|
+
email: 'john@example.com',
|
|
77
|
+
});
|
|
78
|
+
return Response.json(users);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Performance Notes
|
|
84
|
+
- Bundle all database interactions within a single Durable Object call for maximum performance
|
|
85
|
+
- Each individual query call is a round-trip to the Durable Object instance
|
|
86
|
+
- Run migrations during initialization with `blockConcurrencyWhile()` to prevent concurrent access before migrations complete
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
## Neon Postgres Connection
|
|
2
|
+
|
|
3
|
+
Drizzle has native support for Neon serverless database connections using `neon-http` and `neon-websockets` drivers, which wrap the neon-serverless driver. HTTP is faster for single non-interactive transactions; WebSockets support session and interactive transactions.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
```
|
|
7
|
+
drizzle-orm @neondatabase/serverless
|
|
8
|
+
-D drizzle-kit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Neon HTTP
|
|
12
|
+
```typescript
|
|
13
|
+
import { drizzle } from 'drizzle-orm/neon-http';
|
|
14
|
+
const db = drizzle(process.env.DATABASE_URL);
|
|
15
|
+
const result = await db.execute('select 1');
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or with existing driver:
|
|
19
|
+
```typescript
|
|
20
|
+
import { neon } from '@neondatabase/serverless';
|
|
21
|
+
import { drizzle } from 'drizzle-orm/neon-http';
|
|
22
|
+
const sql = neon(process.env.DATABASE_URL!);
|
|
23
|
+
const db = drizzle({ client: sql });
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Neon WebSockets
|
|
27
|
+
```typescript
|
|
28
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
29
|
+
const db = drizzle(process.env.DATABASE_URL);
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For Node.js (requires `ws` and `bufferutil` packages):
|
|
33
|
+
```typescript
|
|
34
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
35
|
+
import ws from 'ws';
|
|
36
|
+
const db = drizzle({ connection: process.env.DATABASE_URL, ws: ws });
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Or with existing Pool:
|
|
40
|
+
```typescript
|
|
41
|
+
import { Pool } from '@neondatabase/serverless';
|
|
42
|
+
import { drizzle } from 'drizzle-orm/neon-serverless';
|
|
43
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
44
|
+
const db = drizzle({ client: pool });
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For Node.js with Pool:
|
|
48
|
+
```typescript
|
|
49
|
+
import { Pool, neonConfig } from '@neondatabase/serverless';
|
|
50
|
+
import ws from 'ws';
|
|
51
|
+
neonConfig.webSocketConstructor = ws;
|
|
52
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
53
|
+
const db = drizzle({ client: pool });
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### node-postgres
|
|
57
|
+
```typescript
|
|
58
|
+
import { drizzle } from 'drizzle-orm/node-postgres';
|
|
59
|
+
import { Pool } from 'pg';
|
|
60
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
61
|
+
const db = drizzle({ client: pool });
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### postgres.js
|
|
65
|
+
```typescript
|
|
66
|
+
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
67
|
+
import postgres from 'postgres';
|
|
68
|
+
const queryClient = postgres(process.env.DATABASE_URL);
|
|
69
|
+
const db = drizzle({ client: queryClient });
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
For serverful Node.js environments, use PostgresJS driver as described in Neon's official Node.js docs. For Cloudflare Workers example, see Drizzle's Neon Cloudflare Worker example.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
## Nile Integration
|
|
2
|
+
|
|
3
|
+
Nile is PostgreSQL re-engineered for multi-tenant apps. Use any Drizzle PostgreSQL driver (e.g., node-postgres).
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
```
|
|
7
|
+
npm install drizzle-orm postgres
|
|
8
|
+
npm install -D drizzle-kit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Basic Setup
|
|
12
|
+
```typescript
|
|
13
|
+
import { drizzle } from 'drizzle-orm/node-postgres'
|
|
14
|
+
const db = drizzle(process.env.NILEDB_URL);
|
|
15
|
+
const response = await db.select().from(...);
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or with existing driver:
|
|
19
|
+
```typescript
|
|
20
|
+
import { drizzle } from "drizzle-orm/node-postgres";
|
|
21
|
+
import { Pool } from "pg";
|
|
22
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
23
|
+
const db = drizzle({ client: pool });
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Virtual Tenant Databases
|
|
27
|
+
|
|
28
|
+
Nile provides virtual tenant databases. Set tenant context via transaction to isolate queries to that tenant:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { drizzle } from 'drizzle-orm/node-postgres';
|
|
32
|
+
import { sql } from 'drizzle-orm';
|
|
33
|
+
|
|
34
|
+
const db = drizzle(process.env.NILEDB_URL);
|
|
35
|
+
|
|
36
|
+
function tenantDB<T>(tenantId: string, cb: (tx: any) => T | Promise<T>): Promise<T> {
|
|
37
|
+
return db.transaction(async (tx) => {
|
|
38
|
+
if (tenantId) {
|
|
39
|
+
await tx.execute(sql`set local nile.tenant_id = '${sql.raw(tenantId)}'`);
|
|
40
|
+
}
|
|
41
|
+
return cb(tx);
|
|
42
|
+
}) as Promise<T>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const tenantId = '01943e56-16df-754f-a7b6-6234c368b400'
|
|
46
|
+
const response = await tenantDB(tenantId, async (tx) => {
|
|
47
|
+
return await tx.select().from(todosTable);
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### AsyncLocalStorage Pattern
|
|
52
|
+
|
|
53
|
+
For web frameworks supporting AsyncLocalStorage, populate tenant ID via middleware:
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
57
|
+
|
|
58
|
+
export const tenantContext = new AsyncLocalStorage<string | undefined>();
|
|
59
|
+
|
|
60
|
+
export function tenantDB<T>(cb: (tx: any) => T | Promise<T>): Promise<T> {
|
|
61
|
+
return db.transaction(async (tx) => {
|
|
62
|
+
const tenantId = tenantContext.getStore();
|
|
63
|
+
if (tenantId) {
|
|
64
|
+
await tx.execute(sql`set local nile.tenant_id = '${sql.raw(tenantId)}'`);
|
|
65
|
+
}
|
|
66
|
+
return cb(tx);
|
|
67
|
+
}) as Promise<T>;
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Middleware setup:
|
|
72
|
+
```typescript
|
|
73
|
+
app.use("/api/tenants/:tenantId/*", async (c, next) => {
|
|
74
|
+
const tenantId = c.req.param("tenantId");
|
|
75
|
+
return tenantContext.run(tenantId, () => next());
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
app.get("/api/tenants/:tenantId/todos", async (c) => {
|
|
79
|
+
const todos = await tenantDB(async (tx) => {
|
|
80
|
+
return await tx.select({...}).from(todoSchema);
|
|
81
|
+
});
|
|
82
|
+
return c.json(todos);
|
|
83
|
+
});
|
|
84
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
## PGlite Integration
|
|
2
|
+
|
|
3
|
+
PGlite is a WASM Postgres build packaged as a TypeScript client library that runs Postgres in the browser, Node.js, and Bun without external dependencies. It's 2.6mb gzipped and uses native WASM instead of a Linux VM. Supports ephemeral in-memory databases or persistence to the file system (Node/Bun) or indexedDB (Browser).
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
npm install drizzle-orm @electric-sql/pglite
|
|
9
|
+
npm install -D drizzle-kit
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Usage
|
|
13
|
+
|
|
14
|
+
In-memory database:
|
|
15
|
+
```typescript
|
|
16
|
+
import { drizzle } from 'drizzle-orm/pglite';
|
|
17
|
+
const db = drizzle();
|
|
18
|
+
await db.select().from(...);
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
With file system persistence:
|
|
22
|
+
```typescript
|
|
23
|
+
const db = drizzle('path-to-dir');
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
With advanced configuration:
|
|
27
|
+
```typescript
|
|
28
|
+
const db = drizzle({ connection: { dataDir: 'path-to-dir' }});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Using an existing PGlite client:
|
|
32
|
+
```typescript
|
|
33
|
+
import { PGlite } from '@electric-sql/pglite';
|
|
34
|
+
import { drizzle } from 'drizzle-orm/pglite';
|
|
35
|
+
|
|
36
|
+
const client = new PGlite();
|
|
37
|
+
const db = drizzle({ client });
|
|
38
|
+
await db.select().from(users);
|
|
39
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
## PlanetScale Integration
|
|
2
|
+
|
|
3
|
+
PlanetScale is a serverless MySQL platform. Drizzle ORM provides HTTP access to PlanetScale via the `drizzle-orm/planetscale-serverless` package (using PlanetScale's `database-js` driver), suitable for both serverless and traditional environments. TCP access via `mysql2` driver is also available.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
```
|
|
7
|
+
npm install drizzle-orm @planetscale/database
|
|
8
|
+
npm install -D drizzle-kit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Basic Usage
|
|
12
|
+
Initialize with connection credentials:
|
|
13
|
+
```typescript
|
|
14
|
+
import { drizzle } from "drizzle-orm/planetscale-serverless";
|
|
15
|
+
|
|
16
|
+
const db = drizzle({ connection: {
|
|
17
|
+
host: process.env["DATABASE_HOST"],
|
|
18
|
+
username: process.env["DATABASE_USERNAME"],
|
|
19
|
+
password: process.env["DATABASE_PASSWORD"],
|
|
20
|
+
}});
|
|
21
|
+
|
|
22
|
+
const response = await db.select().from(...)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Or provide an existing PlanetScale client:
|
|
26
|
+
```typescript
|
|
27
|
+
import { drizzle } from "drizzle-orm/planetscale-serverless";
|
|
28
|
+
import { Client } from "@planetscale/database";
|
|
29
|
+
|
|
30
|
+
const client = new Client({
|
|
31
|
+
host: process.env["DATABASE_HOST"],
|
|
32
|
+
username: process.env["DATABASE_USERNAME"],
|
|
33
|
+
password: process.env["DATABASE_PASSWORD"],
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const db = drizzle({ client });
|
|
37
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
## Connecting to Prisma Postgres
|
|
2
|
+
|
|
3
|
+
Prisma Postgres is a serverless PostgreSQL database built on unikernels with a large free tier, operation-based pricing, and no cold starts.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
|
|
7
|
+
Choose between two PostgreSQL drivers:
|
|
8
|
+
|
|
9
|
+
**node-postgres (pg):**
|
|
10
|
+
```bash
|
|
11
|
+
npm install drizzle-orm pg
|
|
12
|
+
npm install -D drizzle-kit
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**postgres.js:**
|
|
16
|
+
```bash
|
|
17
|
+
npm install drizzle-orm postgres
|
|
18
|
+
npm install -D drizzle-kit
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Setup and Query
|
|
22
|
+
|
|
23
|
+
**Using node-postgres:**
|
|
24
|
+
```typescript
|
|
25
|
+
import { drizzle } from "drizzle-orm/node-postgres";
|
|
26
|
+
import { Pool } from "pg";
|
|
27
|
+
|
|
28
|
+
const pool = new Pool({
|
|
29
|
+
connectionString: process.env.DATABASE_URL,
|
|
30
|
+
});
|
|
31
|
+
const db = drizzle({ client: pool });
|
|
32
|
+
const result = await db.execute('select 1');
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Using postgres.js:**
|
|
36
|
+
```typescript
|
|
37
|
+
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
38
|
+
import postgres from 'postgres';
|
|
39
|
+
|
|
40
|
+
const queryClient = postgres(process.env.DATABASE_URL);
|
|
41
|
+
const db = drizzle({ client: queryClient });
|
|
42
|
+
const result = await db.execute('select 1');
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Notes
|
|
46
|
+
|
|
47
|
+
- Prisma Postgres also offers a serverless driver that will be supported in Drizzle ORM in the future
|
|
48
|
+
- Prerequisites: familiarity with database connection basics, Prisma Postgres account, and PostgreSQL drivers documentation
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
## SQLite Cloud Integration
|
|
2
|
+
|
|
3
|
+
SQLite Cloud is a managed, distributed relational database system built on SQLite.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
```
|
|
7
|
+
drizzle-orm@beta @sqlitecloud/drivers
|
|
8
|
+
-D drizzle-kit@beta
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Basic Usage
|
|
12
|
+
Initialize with connection string:
|
|
13
|
+
```typescript
|
|
14
|
+
import { drizzle } from 'drizzle-orm/sqlite-cloud';
|
|
15
|
+
const db = drizzle(process.env.SQLITE_CLOUD_CONNECTION_STRING);
|
|
16
|
+
const result = await db.execute('select 1');
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Or provide your own driver instance:
|
|
20
|
+
```typescript
|
|
21
|
+
import { Database } from '@sqlitecloud/drivers';
|
|
22
|
+
import { drizzle } from 'drizzle-orm/sqlite-cloud';
|
|
23
|
+
|
|
24
|
+
const client = new Database(process.env.SQLITE_CLOUD_CONNECTION_STRING!);
|
|
25
|
+
const db = drizzle({ client });
|
|
26
|
+
const result = await db.execute('select 1');
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Two initialization patterns: pass connection string directly to `drizzle()`, or instantiate `Database` client first and pass it via `{ client }` option.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
## Supabase Integration
|
|
2
|
+
|
|
3
|
+
Supabase is an open source Firebase alternative for building secure and performant Postgres backends with minimal configuration.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
npm install drizzle-orm postgres
|
|
9
|
+
npm install -D drizzle-kit
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Basic Setup
|
|
13
|
+
|
|
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
|
+
### With Existing Driver
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { drizzle } from 'drizzle-orm/postgres-js'
|
|
25
|
+
import postgres from 'postgres'
|
|
26
|
+
|
|
27
|
+
const client = postgres(process.env.DATABASE_URL)
|
|
28
|
+
const db = drizzle({ client });
|
|
29
|
+
const allUsers = await db.select().from(...);
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Connection Pooling Configuration
|
|
33
|
+
|
|
34
|
+
When using Supabase's connection pooler in "Transaction" pool mode, disable prepared statements:
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { drizzle } from 'drizzle-orm/postgres-js'
|
|
38
|
+
import postgres from 'postgres'
|
|
39
|
+
|
|
40
|
+
const client = postgres(process.env.DATABASE_URL, { prepare: false })
|
|
41
|
+
const db = drizzle({ client });
|
|
42
|
+
const allUsers = await db.select().from(...);
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Use the Connection Pooler for serverless environments and Direct Connection for long-running servers.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## TiDB Serverless Integration
|
|
2
|
+
|
|
3
|
+
TiDB Serverless is a fully-managed, autonomous DBaaS with split-second cluster provisioning and consumption-based pricing. It's compatible with MySQL and provides an HTTP driver for edge environments, natively supported by Drizzle ORM.
|
|
4
|
+
|
|
5
|
+
### Installation
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
npm install drizzle-orm @tidbcloud/serverless
|
|
9
|
+
npm install -D drizzle-kit
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Basic Setup
|
|
13
|
+
|
|
14
|
+
Initialize with connection URL:
|
|
15
|
+
```typescript
|
|
16
|
+
import { drizzle } from 'drizzle-orm/tidb-serverless';
|
|
17
|
+
|
|
18
|
+
const db = drizzle({ connection: { url: process.env.TIDB_URL }});
|
|
19
|
+
const response = await db.select().from(...);
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Or provide your own driver instance:
|
|
23
|
+
```typescript
|
|
24
|
+
import { connect } from '@tidbcloud/serverless';
|
|
25
|
+
import { drizzle } from 'drizzle-orm/tidb-serverless';
|
|
26
|
+
|
|
27
|
+
const client = connect({ url: process.env.TIDB_URL });
|
|
28
|
+
const db = drizzle({ client });
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Prerequisites
|
|
32
|
+
- Database connection basics with Drizzle
|
|
33
|
+
- TiDB database account
|
|
34
|
+
- TiDB HTTP Driver
|
|
35
|
+
- Drizzle MySQL drivers knowledge
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Turso Database Integration
|
|
2
|
+
|
|
3
|
+
Turso is a small database designed for the AI age. To connect Drizzle ORM to Turso:
|
|
4
|
+
|
|
5
|
+
**Installation:**
|
|
6
|
+
```
|
|
7
|
+
npm install drizzle-orm@beta @tursodatabase/database
|
|
8
|
+
npm install -D drizzle-kit@beta
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Basic usage - direct connection:**
|
|
12
|
+
```typescript
|
|
13
|
+
import { drizzle } from 'drizzle-orm/tursodatabase/database';
|
|
14
|
+
const db = drizzle('sqlite.db');
|
|
15
|
+
const result = await db.execute('select 1');
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Using existing driver instance:**
|
|
19
|
+
```typescript
|
|
20
|
+
import { Database } from '@tursodatabase/drivers';
|
|
21
|
+
import { drizzle } from 'drizzle-orm/tursodatabase/database';
|
|
22
|
+
|
|
23
|
+
const client = new Database('sqlite.db');
|
|
24
|
+
const db = drizzle({ client });
|
|
25
|
+
const result = await db.execute('select 1');
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Prerequisites: familiarity with database connection basics in Drizzle, and knowledge of Turso Database and its JavaScript driver.
|