diff --git a/README.md b/README.md index e9925aa5..40a93725 100644 --- a/README.md +++ b/README.md @@ -145,9 +145,10 @@ Now you can use the compiled TypeScript schema to instantiate a database client. import { ZenStackClient } from '@zenstackhq/runtime'; import { schema } from './zenstack/schema'; import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; const client = new ZenStackClient(schema, { - dialectConfig: { database: new SQLite('./dev.db') }, + dialect: new SqliteDialect({ database: new SQLite('./dev.db') }), }); ``` @@ -156,13 +157,14 @@ const client = new ZenStackClient(schema, { ```ts import { ZenStackClient } from '@zenstackhq/runtime'; import { schema } from './zenstack/schema'; +import { PostgresDialect } from 'kysely'; import { Pool } from 'pg'; import { parseIntoClientConfig } from 'pg-connection-string'; const client = new ZenStackClient(schema, { - dialectConfig: { + dialect: new PostgresDialect({ pool: new Pool(parseIntoClientConfig(process.env.DATABASE_URL)), - }, + }), }); ``` diff --git a/package.json b/package.json index 1f0705c0..634deacd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zenstack-v3", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "ZenStack", "packageManager": "pnpm@10.12.1", "scripts": { diff --git a/packages/cli/package.json b/packages/cli/package.json index b49aade4..ef955248 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -3,7 +3,7 @@ "publisher": "zenstack", "displayName": "ZenStack CLI", "description": "FullStack database toolkit with built-in access control and automatic API generation.", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "type": "module", "author": { "name": "ZenStack Team" diff --git a/packages/cli/src/actions/generate.ts b/packages/cli/src/actions/generate.ts index 2a174cad..12d58d82 100644 --- a/packages/cli/src/actions/generate.ts +++ b/packages/cli/src/actions/generate.ts @@ -50,7 +50,7 @@ import { ZenStackClient } from '@zenstackhq/runtime'; import { schema } from '${outputPath}/schema'; const client = new ZenStackClient(schema, { - dialectConfig: { ... } + dialect: { ... } }); \`\`\` `); diff --git a/packages/cli/src/actions/templates.ts b/packages/cli/src/actions/templates.ts index 1909ff42..ac469224 100644 --- a/packages/cli/src/actions/templates.ts +++ b/packages/cli/src/actions/templates.ts @@ -27,14 +27,15 @@ model Post { `; export const STARTER_MAIN_TS = `import { ZenStackClient } from '@zenstackhq/runtime'; -import { schema } from './zenstack/schema'; import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; +import { schema } from './zenstack/schema'; async function main() { const client = new ZenStackClient(schema, { - dialectConfig: { + dialect: new SqliteDialect({ database: new SQLite('./zenstack/dev.db'), - }, + }), }); const user = await client.user.create({ data: { diff --git a/packages/common-helpers/package.json b/packages/common-helpers/package.json index a4a25f96..750eaa8e 100644 --- a/packages/common-helpers/package.json +++ b/packages/common-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/common-helpers", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "ZenStack Common Helpers", "type": "module", "scripts": { diff --git a/packages/create-zenstack/package.json b/packages/create-zenstack/package.json index b8ef417b..6acf0498 100644 --- a/packages/create-zenstack/package.json +++ b/packages/create-zenstack/package.json @@ -1,6 +1,6 @@ { "name": "create-zenstack", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "Create a new ZenStack project", "type": "module", "scripts": { diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 1de03230..35f52df2 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/eslint-config", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "type": "module", "private": true, "license": "MIT" diff --git a/packages/ide/vscode/package.json b/packages/ide/vscode/package.json index 645d591f..54ed250f 100644 --- a/packages/ide/vscode/package.json +++ b/packages/ide/vscode/package.json @@ -1,7 +1,7 @@ { "name": "zenstack", "publisher": "zenstack", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "displayName": "ZenStack Language Tools", "description": "VSCode extension for ZenStack ZModel language", "private": true, diff --git a/packages/language/package.json b/packages/language/package.json index eb308a16..110852e0 100644 --- a/packages/language/package.json +++ b/packages/language/package.json @@ -1,7 +1,7 @@ { "name": "@zenstackhq/language", "description": "ZenStack ZModel language specification", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "license": "MIT", "author": "ZenStack Team", "files": [ diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 3c568436..8faf7e9b 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/runtime", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "ZenStack Runtime", "type": "module", "scripts": { @@ -69,7 +69,6 @@ "@paralleldrive/cuid2": "^2.2.2", "decimal.js": "^10.4.3", "json-stable-stringify": "^1.3.0", - "kysely": "catalog:", "nanoid": "^5.0.9", "ts-pattern": "catalog:", "ulid": "^3.0.0", @@ -77,6 +76,7 @@ }, "peerDependencies": { "better-sqlite3": "^11.8.1", + "kysely": "catalog:", "pg": "^8.13.1", "zod": "catalog:" }, diff --git a/packages/runtime/src/client/client-impl.ts b/packages/runtime/src/client/client-impl.ts index 616cdd48..f8b1ee53 100644 --- a/packages/runtime/src/client/client-impl.ts +++ b/packages/runtime/src/client/client-impl.ts @@ -1,18 +1,14 @@ import { invariant, lowerCaseFirst } from '@zenstackhq/common-helpers'; -import type { QueryExecutor, SqliteDialectConfig } from 'kysely'; +import type { QueryExecutor } from 'kysely'; import { CompiledQuery, DefaultConnectionProvider, DefaultQueryExecutor, Kysely, Log, - PostgresDialect, sql, - SqliteDialect, type KyselyProps, - type PostgresDialectConfig, } from 'kysely'; -import { match } from 'ts-pattern'; import type { GetModels, ProcedureDef, SchemaDef } from '../schema'; import type { AuthType } from '../schema/auth'; import type { UnwrapTuplePromises } from '../utils/type-utils'; @@ -88,18 +84,17 @@ export class ClientImpl { this.kyselyRaw = baseClient.kyselyRaw; this.auth = baseClient.auth; } else { - const dialect = this.getKyselyDialect(); - const driver = new ZenStackDriver(dialect.createDriver(), new Log(this.$options.log ?? [])); - const compiler = dialect.createQueryCompiler(); - const adapter = dialect.createAdapter(); + const driver = new ZenStackDriver(options.dialect.createDriver(), new Log(this.$options.log ?? [])); + const compiler = options.dialect.createQueryCompiler(); + const adapter = options.dialect.createAdapter(); const connectionProvider = new DefaultConnectionProvider(driver); this.kyselyProps = { config: { - dialect, + dialect: options.dialect, log: this.$options.log, }, - dialect, + dialect: options.dialect, driver, executor: executor ?? new ZenStackQueryExecutor(this, driver, compiler, adapter, connectionProvider), }; @@ -135,21 +130,6 @@ export class ClientImpl { return new ClientImpl(this.schema, this.$options, this, executor); } - private getKyselyDialect() { - return match(this.schema.provider.type) - .with('sqlite', () => this.makeSqliteKyselyDialect()) - .with('postgresql', () => this.makePostgresKyselyDialect()) - .exhaustive(); - } - - private makePostgresKyselyDialect(): PostgresDialect { - return new PostgresDialect(this.options.dialectConfig as PostgresDialectConfig); - } - - private makeSqliteKyselyDialect(): SqliteDialect { - return new SqliteDialect(this.options.dialectConfig as SqliteDialectConfig); - } - // overload for interactive transaction $transaction( callback: (tx: ClientContract) => Promise, diff --git a/packages/runtime/src/client/options.ts b/packages/runtime/src/client/options.ts index a2603537..5e412e5b 100644 --- a/packages/runtime/src/client/options.ts +++ b/packages/runtime/src/client/options.ts @@ -1,17 +1,11 @@ -import type { Expression, ExpressionBuilder, KyselyConfig, PostgresDialectConfig, SqliteDialectConfig } from 'kysely'; -import type { DataSourceProvider, GetModel, GetModels, ProcedureDef, SchemaDef } from '../schema'; -import type { Optional, PrependParameter } from '../utils/type-utils'; +import type { Dialect, Expression, ExpressionBuilder, KyselyConfig } from 'kysely'; +import type { GetModel, GetModels, ProcedureDef, SchemaDef } from '../schema'; +import type { PrependParameter } from '../utils/type-utils'; import type { ClientContract, CRUD, ProcedureFunc } from './contract'; import type { BaseCrudDialect } from './crud/dialects/base'; import type { RuntimePlugin } from './plugin'; import type { ToKyselySchema } from './query-builder'; -type DialectConfig = Provider['type'] extends 'sqlite' - ? Optional - : Provider['type'] extends 'postgresql' - ? Optional - : never; - export type ZModelFunctionContext = { dialect: BaseCrudDialect; model: GetModels; @@ -29,9 +23,9 @@ export type ZModelFunction = ( */ export type ClientOptions = { /** - * Database dialect configuration. + * Kysely dialect. */ - dialectConfig: DialectConfig; + dialect: Dialect; /** * Custom function definitions. diff --git a/packages/runtime/test/client-api/computed-fields.test.ts b/packages/runtime/test/client-api/computed-fields.test.ts index ca7a16e5..6a28c4d3 100644 --- a/packages/runtime/test/client-api/computed-fields.test.ts +++ b/packages/runtime/test/client-api/computed-fields.test.ts @@ -55,7 +55,7 @@ import { schema } from './schema'; async function main() { const client = new ZenStackClient(schema, { - dialectConfig: {} as any, + dialect: {} as any, computedFields: { User: { upperName: (eb) => eb.fn('upper', ['name']), @@ -122,7 +122,7 @@ import { schema } from './schema'; async function main() { const client = new ZenStackClient(schema, { - dialectConfig: {} as any, + dialect: {} as any, computedFields: { User: { upperName: (eb) => eb.lit(null), diff --git a/packages/runtime/test/client-api/default-values.test.ts b/packages/runtime/test/client-api/default-values.test.ts index cafedad1..13e49177 100644 --- a/packages/runtime/test/client-api/default-values.test.ts +++ b/packages/runtime/test/client-api/default-values.test.ts @@ -1,5 +1,6 @@ import { isCuid } from '@paralleldrive/cuid2'; import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; import { isValid as isValidUlid } from 'ulid'; import { validate as isValidUuid } from 'uuid'; import { describe, expect, it } from 'vitest'; @@ -68,7 +69,7 @@ const schema = { describe('default values tests', () => { it('supports generators', async () => { const client = new ZenStackClient(schema, { - dialectConfig: { database: new SQLite(':memory:') }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), }); await client.$pushSchema(); diff --git a/packages/runtime/test/client-api/name-mapping.test.ts b/packages/runtime/test/client-api/name-mapping.test.ts index ded45ad0..4ea3e7b1 100644 --- a/packages/runtime/test/client-api/name-mapping.test.ts +++ b/packages/runtime/test/client-api/name-mapping.test.ts @@ -1,4 +1,5 @@ import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; import { describe, expect, it } from 'vitest'; import { ZenStackClient } from '../../src'; import { type SchemaDef, ExpressionUtils } from '../../src/schema'; @@ -59,7 +60,7 @@ describe('Name mapping tests', () => { it('works with model and implicit field mapping', async () => { const client = new ZenStackClient(schema, { - dialectConfig: { database: new SQLite(':memory:') }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), }); await client.$pushSchema(); const r1 = await client.foo.create({ @@ -91,7 +92,7 @@ describe('Name mapping tests', () => { it('works with explicit field mapping', async () => { const client = new ZenStackClient(schema, { - dialectConfig: { database: new SQLite(':memory:') }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), }); await client.$pushSchema(); const r1 = await client.foo.create({ diff --git a/packages/runtime/test/plugin/kysely-on-query.test.ts b/packages/runtime/test/plugin/kysely-on-query.test.ts index 2e750b6e..92d2df21 100644 --- a/packages/runtime/test/plugin/kysely-on-query.test.ts +++ b/packages/runtime/test/plugin/kysely-on-query.test.ts @@ -1,5 +1,5 @@ import SQLite from 'better-sqlite3'; -import { InsertQueryNode, Kysely, PrimitiveValueListNode, ValuesNode, type QueryResult } from 'kysely'; +import { InsertQueryNode, Kysely, PrimitiveValueListNode, SqliteDialect, ValuesNode, type QueryResult } from 'kysely'; import { beforeEach, describe, expect, it } from 'vitest'; import { ZenStackClient, type ClientContract } from '../../src/client'; import { schema } from '../schemas/basic'; @@ -9,7 +9,7 @@ describe('Kysely onQuery tests', () => { beforeEach(async () => { _client = new ZenStackClient(schema, { - dialectConfig: { database: new SQLite(':memory:') }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), }); await _client.$pushSchema(); }); diff --git a/packages/runtime/test/plugin/mutation-hooks.test.ts b/packages/runtime/test/plugin/mutation-hooks.test.ts index 557fd728..3feb595a 100644 --- a/packages/runtime/test/plugin/mutation-hooks.test.ts +++ b/packages/runtime/test/plugin/mutation-hooks.test.ts @@ -1,5 +1,5 @@ import SQLite from 'better-sqlite3'; -import { DeleteQueryNode, InsertQueryNode, UpdateQueryNode } from 'kysely'; +import { DeleteQueryNode, InsertQueryNode, SqliteDialect, UpdateQueryNode } from 'kysely'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { ZenStackClient, type ClientContract } from '../../src'; import { schema } from '../schemas/basic'; @@ -9,9 +9,7 @@ describe('Entity lifecycle tests', () => { beforeEach(async () => { _client = new ZenStackClient(schema, { - dialectConfig: { - database: new SQLite(':memory:'), - }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), }); await _client.$pushSchema(); }); diff --git a/packages/runtime/test/plugin/query-lifecycle.test.ts b/packages/runtime/test/plugin/query-lifecycle.test.ts index 106b55af..6cfcfe72 100644 --- a/packages/runtime/test/plugin/query-lifecycle.test.ts +++ b/packages/runtime/test/plugin/query-lifecycle.test.ts @@ -1,4 +1,5 @@ import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; import { beforeEach, describe, expect, it } from 'vitest'; import { definePlugin, ZenStackClient, type ClientContract } from '../../src/client'; import { schema } from '../schemas/basic'; @@ -8,9 +9,7 @@ describe('Query interception tests', () => { beforeEach(async () => { _client = new ZenStackClient(schema, { - dialectConfig: { - database: new SQLite(':memory:'), - }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), }); await _client.$pushSchema(); }); diff --git a/packages/runtime/test/query-builder/query-builder.test.ts b/packages/runtime/test/query-builder/query-builder.test.ts index 2eb3de5d..8eed03d5 100644 --- a/packages/runtime/test/query-builder/query-builder.test.ts +++ b/packages/runtime/test/query-builder/query-builder.test.ts @@ -1,5 +1,6 @@ import { createId } from '@paralleldrive/cuid2'; import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; import { describe, expect, it } from 'vitest'; import { ZenStackClient } from '../../src'; import { getSchema } from '../schemas/basic'; @@ -9,9 +10,7 @@ describe('Client API tests', () => { it('works with queries', async () => { const client = new ZenStackClient(schema, { - dialectConfig: { - database: new SQLite(':memory:'), - }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), }); await client.$pushSchema(); diff --git a/packages/runtime/test/schemas/delegate/typecheck.ts b/packages/runtime/test/schemas/delegate/typecheck.ts index 847289f2..82b3e194 100644 --- a/packages/runtime/test/schemas/delegate/typecheck.ts +++ b/packages/runtime/test/schemas/delegate/typecheck.ts @@ -1,11 +1,10 @@ import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; import { ZenStackClient } from '../../../dist'; import { schema } from './schema'; const client = new ZenStackClient(schema, { - dialectConfig: { - database: new SQLite('./zenstack/test.db'), - }, + dialect: new SqliteDialect({ database: new SQLite('./zenstack/test.db') }), }); async function find() { diff --git a/packages/runtime/test/schemas/typing/typecheck.ts b/packages/runtime/test/schemas/typing/typecheck.ts index 912486db..fe35c9a1 100644 --- a/packages/runtime/test/schemas/typing/typecheck.ts +++ b/packages/runtime/test/schemas/typing/typecheck.ts @@ -1,12 +1,11 @@ import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; import { ZenStackClient } from '../../../dist'; import { Role, type Identity, type IdentityProvider } from './models'; import { schema } from './schema'; const client = new ZenStackClient(schema, { - dialectConfig: { - database: new SQLite('./zenstack/test.db'), - }, + dialect: new SqliteDialect({ database: new SQLite('./zenstack/test.db') }), computedFields: { User: { postCount: (eb) => diff --git a/packages/runtime/test/utils.ts b/packages/runtime/test/utils.ts index 515dcaa5..6709ab57 100644 --- a/packages/runtime/test/utils.ts +++ b/packages/runtime/test/utils.ts @@ -3,6 +3,7 @@ import { loadDocument } from '@zenstackhq/language'; import { PrismaSchemaGenerator } from '@zenstackhq/sdk'; import { createTestProject, generateTsSchema } from '@zenstackhq/testtools'; import SQLite from 'better-sqlite3'; +import { PostgresDialect, SqliteDialect } from 'kysely'; import { execSync } from 'node:child_process'; import fs from 'node:fs'; import path from 'node:path'; @@ -20,7 +21,7 @@ export async function makeSqliteClient( ): Promise> { const client = new ZenStackClient(schema, { ...extraOptions, - dialectConfig: { database: new SQLite(':memory:') }, + dialect: new SqliteDialect({ database: new SQLite(':memory:') }), } as unknown as ClientOptions); await client.$pushSchema(); return client; @@ -46,18 +47,18 @@ export async function makePostgresClient( const client = new ZenStackClient(schema, { ...extraOptions, - dialectConfig: { + dialect: new PostgresDialect({ pool: new Pool({ ...TEST_PG_CONFIG, database: dbName, }), - }, + }), } as unknown as ClientOptions); await client.$pushSchema(); return client; } -export type CreateTestClientOptions = Omit, 'dialectConfig'> & { +export type CreateTestClientOptions = Omit, 'dialect'> & { provider?: 'sqlite' | 'postgresql'; dbName?: string; usePrismaPush?: boolean; @@ -166,16 +167,16 @@ export async function createTestClient( } if (provider === 'postgresql') { - _options.dialectConfig = { + _options.dialect = new PostgresDialect({ pool: new Pool({ ...TEST_PG_CONFIG, database: dbName, }), - } as unknown as ClientOptions['dialectConfig']; + }); } else { - _options.dialectConfig = { + _options.dialect = new SqliteDialect({ database: new SQLite(path.join(workDir!, dbName)), - } as unknown as ClientOptions['dialectConfig']; + }); } let client = new ZenStackClient(_schema, _options); diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1c5e15c9..200132b6 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/sdk", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "ZenStack SDK", "type": "module", "scripts": { diff --git a/packages/tanstack-query/package.json b/packages/tanstack-query/package.json index 01090a06..5732e3bc 100644 --- a/packages/tanstack-query/package.json +++ b/packages/tanstack-query/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/tanstack-query", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "", "main": "index.js", "type": "module", diff --git a/packages/testtools/package.json b/packages/testtools/package.json index fc953b67..6a111df5 100644 --- a/packages/testtools/package.json +++ b/packages/testtools/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/testtools", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "ZenStack Test Tools", "type": "module", "scripts": { diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index 9ad7fde8..1d7ae83c 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/typescript-config", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "private": true, "license": "MIT" } diff --git a/packages/zod/package.json b/packages/zod/package.json index b70489f4..33a31f94 100644 --- a/packages/zod/package.json +++ b/packages/zod/package.json @@ -1,6 +1,6 @@ { "name": "@zenstackhq/zod", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "", "type": "module", "main": "index.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6fa11704..e9f0b6f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -402,6 +402,9 @@ importers: better-sqlite3: specifier: ^11.8.1 version: 11.8.1 + kysely: + specifier: 'catalog:' + version: 0.27.6 devDependencies: '@types/better-sqlite3': specifier: ^7.6.12 diff --git a/samples/blog/README.md b/samples/blog/README.md index cdc6a49c..9001504d 100644 --- a/samples/blog/README.md +++ b/samples/blog/README.md @@ -19,14 +19,18 @@ - When you run `zenstack generate`, a TypeScript version of the schema is generated to [zenstack/schema.ts](./zenstack/schema.ts). - A Prisma schema [zenstack/schema.prisma](./zenstack/schema.prisma) is also generated. It's used for generating and running database migrations, and you can also use it for other purposes as needed. - You can create a database client with the TypeScript schema like: + ```ts import { ZenStackClient } from '@zenstackhq/runtime'; import { schema } from './zenstack/schema'; import SQLite from 'better-sqlite3'; + import { SqliteDialect } from 'kysely'; + const db = ZenStackClient(schema, { - dialectConfig: { database: new SQLite('./zenstack/dev.db') }, + dialect: new SqliteDialect({ database: new SQLite('./zenstack/dev.db') }), }); ``` + - Run `zenstack migrate dev` to generate and apply database migrations. It internally calls `prisma migrate dev`. Same for `zenstack migrate deploy`. - ZenStack v3 doesn't generate into "node_modules" anymore. The generated TypeScript schema file can be checked in to source control, and you decide how to build or bundle it with your application. - The TS schema will also serve as the foundation of inferring types of other artifacts, e.g., zod schemas, frontend hooks, etc. diff --git a/samples/blog/main.ts b/samples/blog/main.ts index 93380b94..1f126a57 100644 --- a/samples/blog/main.ts +++ b/samples/blog/main.ts @@ -1,12 +1,11 @@ import { ZenStackClient } from '@zenstackhq/runtime'; import SQLite from 'better-sqlite3'; +import { SqliteDialect } from 'kysely'; import { schema } from './zenstack/schema'; async function main() { const db = new ZenStackClient(schema, { - dialectConfig: { - database: new SQLite('./zenstack/dev.db'), - }, + dialect: new SqliteDialect({ database: new SQLite('./zenstack/dev.db') }), computedFields: { User: { postCount: (eb) => diff --git a/samples/blog/package.json b/samples/blog/package.json index 37078832..8cdb8422 100644 --- a/samples/blog/package.json +++ b/samples/blog/package.json @@ -1,6 +1,6 @@ { "name": "sample-blog", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "description": "", "main": "index.js", "scripts": { @@ -14,7 +14,8 @@ "license": "MIT", "dependencies": { "@zenstackhq/runtime": "workspace:*", - "better-sqlite3": "^11.8.1" + "better-sqlite3": "^11.8.1", + "kysely": "catalog:" }, "devDependencies": { "@types/better-sqlite3": "^7.6.12", diff --git a/tests/e2e/package.json b/tests/e2e/package.json index 41ad82f3..d3bcf2bc 100644 --- a/tests/e2e/package.json +++ b/tests/e2e/package.json @@ -1,6 +1,6 @@ { "name": "e2e", - "version": "3.0.0-alpha.15", + "version": "3.0.0-alpha.16", "private": true, "scripts": { "test": "vitest run"