Skip to content

Commit 299bcd7

Browse files
authored
Merge pull request #975 from objectstack-ai/copilot/update-memory-driver-to-turso
2 parents 6dbcd78 + 617d8ca commit 299bcd7

5 files changed

Lines changed: 21 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Changed
11+
- **Studio Vercel deployment — switched from InMemoryDriver to TursoDriver** — The Studio serverless
12+
API entrypoint (`apps/studio/api/index.ts`) now uses `@objectstack/driver-turso` (TursoDriver)
13+
instead of `@objectstack/driver-memory` (InMemoryDriver) for Vercel deployments. In production,
14+
the driver connects to a Turso cloud database via `TURSO_DATABASE_URL` and `TURSO_AUTH_TOKEN`
15+
environment variables (remote mode). For local development without those variables, it falls back
16+
to `:memory:` (ephemeral SQLite). This ensures data persistence across serverless function
17+
invocations on Vercel. The browser MSW mock kernel remains unchanged (InMemoryDriver).
18+
1019
### Added
1120
- **`@objectstack/driver-turso` — dual transport architecture** — TursoDriver now supports three
1221
transport modes: `local`, `replica`, and `remote`. Remote mode (`url: 'libsql://...'`) enables

apps/studio/api/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import { ObjectKernel, DriverPlugin, AppPlugin } from '@objectstack/runtime';
2929
import { ObjectQLPlugin } from '@objectstack/objectql';
30-
import { InMemoryDriver } from '@objectstack/driver-memory';
30+
import { TursoDriver } from '@objectstack/driver-turso';
3131
import { createHonoApp } from '@objectstack/hono';
3232
import { AuthPlugin } from '@objectstack/plugin-auth';
3333
import { SecurityPlugin } from '@objectstack/plugin-security';
@@ -70,7 +70,10 @@ async function ensureKernel(): Promise<ObjectKernel> {
7070
const kernel = new ObjectKernel();
7171

7272
await kernel.use(new ObjectQLPlugin());
73-
await kernel.use(new DriverPlugin(new InMemoryDriver(), 'memory'));
73+
await kernel.use(new DriverPlugin(new TursoDriver({
74+
url: process.env.TURSO_DATABASE_URL ?? ':memory:',
75+
...(process.env.TURSO_AUTH_TOKEN && { authToken: process.env.TURSO_AUTH_TOKEN }),
76+
}), 'turso'));
7477
await kernel.use(new AppPlugin(studioConfig));
7578

7679
// Auth plugin — uses better-auth for real authentication

apps/studio/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"@objectstack/client": "workspace:*",
2121
"@objectstack/client-react": "workspace:*",
2222
"@objectstack/driver-memory": "workspace:*",
23+
"@objectstack/driver-turso": "workspace:*",
2324
"@objectstack/hono": "workspace:*",
2425
"@objectstack/metadata": "workspace:*",
2526
"@objectstack/objectql": "workspace:*",

apps/studio/vercel.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
"build": {
88
"env": {
99
"VITE_RUNTIME_MODE": "server",
10-
"VITE_SERVER_URL": ""
10+
"VITE_SERVER_URL": "",
11+
"TURSO_DATABASE_URL": "@turso_database_url",
12+
"TURSO_AUTH_TOKEN": "@turso_auth_token"
1113
}
1214
},
1315
"rewrites": [

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)