diff --git a/.github/workflows/wasm-benchmarks.yml b/.github/workflows/wasm-benchmarks.yml index 695a2c1a3829..f049f094a8d2 100644 --- a/.github/workflows/wasm-benchmarks.yml +++ b/.github/workflows/wasm-benchmarks.yml @@ -34,7 +34,7 @@ jobs: - name: "Setup pnpm" uses: pnpm/action-setup@v4.0.0 with: - version: 9 + version: 9.15.1 - name: "Login to Docker Hub" uses: docker/login-action@v3 diff --git a/Cargo.toml b/Cargo.toml index b78f4801fd56..46976d038981 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,6 @@ members = [ "query-engine/core-tests", "query-engine/black-box-tests", "query-engine/dmmf", - "query-engine/driver-adapters", "query-engine/query-structure", "query-engine/query-engine", "query-engine/query-engine-node-api", diff --git a/Makefile b/Makefile index 7358317bb00c..34d5e72fc010 100644 --- a/Makefile +++ b/Makefile @@ -218,13 +218,13 @@ test-driver-adapter-pg: test-pg-js test-driver-adapter-pg-wasm: test-pg-wasm start-pg-bench: - docker compose -f query-engine/driver-adapters/executor/bench/docker-compose.yml up --wait -d --remove-orphans postgres + docker compose -f libs/driver-adapters/executor/bench/docker-compose.yml up --wait -d --remove-orphans postgres setup-pg-bench: start-pg-bench build-qe-napi build-qe-wasm build-driver-adapters-kit run-bench: DATABASE_URL="postgresql://postgres:postgres@localhost:5432/bench?schema=imdb_bench&sslmode=disable" \ - node --experimental-wasm-modules query-engine/driver-adapters/executor/dist/bench.mjs + node --experimental-wasm-modules libs/driver-adapters/executor/dist/bench.mjs bench-pg-js: setup-pg-bench run-bench @@ -409,7 +409,7 @@ measure-qe-wasm: build-qe-wasm-gz done; build-driver-adapters-kit: build-driver-adapters - cd query-engine/driver-adapters && pnpm i && pnpm build + cd libs/driver-adapters && pnpm i && pnpm build build-driver-adapters: ensure-prisma-present @echo "Building driver adapters..." diff --git a/query-engine/driver-adapters/.gitignore b/libs/driver-adapters/.gitignore similarity index 100% rename from query-engine/driver-adapters/.gitignore rename to libs/driver-adapters/.gitignore diff --git a/query-engine/driver-adapters/.npmrc b/libs/driver-adapters/.npmrc similarity index 100% rename from query-engine/driver-adapters/.npmrc rename to libs/driver-adapters/.npmrc diff --git a/query-engine/driver-adapters/Cargo.toml b/libs/driver-adapters/Cargo.toml similarity index 100% rename from query-engine/driver-adapters/Cargo.toml rename to libs/driver-adapters/Cargo.toml diff --git a/query-engine/driver-adapters/executor/.gitignore b/libs/driver-adapters/executor/.gitignore similarity index 100% rename from query-engine/driver-adapters/executor/.gitignore rename to libs/driver-adapters/executor/.gitignore diff --git a/query-engine/driver-adapters/executor/bench/Dockerfile b/libs/driver-adapters/executor/bench/Dockerfile similarity index 100% rename from query-engine/driver-adapters/executor/bench/Dockerfile rename to libs/driver-adapters/executor/bench/Dockerfile diff --git a/query-engine/driver-adapters/executor/bench/docker-compose.yml b/libs/driver-adapters/executor/bench/docker-compose.yml similarity index 100% rename from query-engine/driver-adapters/executor/bench/docker-compose.yml rename to libs/driver-adapters/executor/bench/docker-compose.yml diff --git a/query-engine/driver-adapters/executor/bench/queries.json b/libs/driver-adapters/executor/bench/queries.json similarity index 100% rename from query-engine/driver-adapters/executor/bench/queries.json rename to libs/driver-adapters/executor/bench/queries.json diff --git a/query-engine/driver-adapters/executor/bench/schema.prisma b/libs/driver-adapters/executor/bench/schema.prisma similarity index 100% rename from query-engine/driver-adapters/executor/bench/schema.prisma rename to libs/driver-adapters/executor/bench/schema.prisma diff --git a/query-engine/driver-adapters/executor/bench/seed.sql.gz b/libs/driver-adapters/executor/bench/seed.sql.gz similarity index 100% rename from query-engine/driver-adapters/executor/bench/seed.sql.gz rename to libs/driver-adapters/executor/bench/seed.sql.gz diff --git a/query-engine/driver-adapters/executor/package.json b/libs/driver-adapters/executor/package.json similarity index 69% rename from query-engine/driver-adapters/executor/package.json rename to libs/driver-adapters/executor/package.json index 185797bfea2b..f98e39885557 100644 --- a/query-engine/driver-adapters/executor/package.json +++ b/libs/driver-adapters/executor/package.json @@ -4,25 +4,16 @@ "pnpm": "^9.14.2" }, "name": "executor", + "type": "module", "version": "0.0.1", "description": "", "private": true, "scripts": { - "build": "tsup ./src/testd-qe.ts ./src/bench.ts --format esm --dts", + "build": "tsup ./src/testd-qe.ts ./src/demo-se.ts ./src/bench.ts --format esm --dts", "test:qe": "node --import tsx ./src/testd-qe.ts", "demo:se": "node --import tsx ./src/demo-se.ts", "clean:d1": "rm -rf ../../connector-test-kit-rs/query-engine-tests/.wrangler" }, - "tsup": { - "external": [ - "../../../query-engine-wasm/pkg/postgresql/query_engine_bg.js", - "../../../query-engine-wasm/pkg/mysql/query_engine_bg.js", - "../../../query-engine-wasm/pkg/sqlite/query_engine_bg.js", - "../../../schema-engine-wasm/pkg/postgresql/schema_engine_bg.js", - "../../../schema-engine-wasm/pkg/mysql/schema_engine_bg.js", - "../../../schema-engine-wasm/pkg/sqlite/schema_engine_bg.js" - ] - }, "keywords": [], "author": "", "sideEffects": false, @@ -47,7 +38,7 @@ "devDependencies": { "@cloudflare/workers-types": "4.20240405.0", "@types/node": "20.12.7", - "tsup": "8.0.2", + "tsup": "8.3.5", "tsx": "4.7.2", "typescript": "5.4.5" } diff --git a/libs/driver-adapters/executor/script/testd-qe.sh b/libs/driver-adapters/executor/script/testd-qe.sh new file mode 100755 index 000000000000..a78c08cc7169 --- /dev/null +++ b/libs/driver-adapters/executor/script/testd-qe.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +node "$(dirname "${BASH_SOURCE[0]}")/../dist/testd-qe.js" diff --git a/query-engine/driver-adapters/executor/src/bench.ts b/libs/driver-adapters/executor/src/bench.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/bench.ts rename to libs/driver-adapters/executor/src/bench.ts diff --git a/query-engine/driver-adapters/executor/src/demo-se.ts b/libs/driver-adapters/executor/src/demo-se.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/demo-se.ts rename to libs/driver-adapters/executor/src/demo-se.ts diff --git a/query-engine/driver-adapters/executor/src/driver-adapters-manager/d1.ts b/libs/driver-adapters/executor/src/driver-adapters-manager/d1.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/driver-adapters-manager/d1.ts rename to libs/driver-adapters/executor/src/driver-adapters-manager/d1.ts diff --git a/query-engine/driver-adapters/executor/src/driver-adapters-manager/index.ts b/libs/driver-adapters/executor/src/driver-adapters-manager/index.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/driver-adapters-manager/index.ts rename to libs/driver-adapters/executor/src/driver-adapters-manager/index.ts diff --git a/query-engine/driver-adapters/executor/src/driver-adapters-manager/libsql.ts b/libs/driver-adapters/executor/src/driver-adapters-manager/libsql.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/driver-adapters-manager/libsql.ts rename to libs/driver-adapters/executor/src/driver-adapters-manager/libsql.ts diff --git a/query-engine/driver-adapters/executor/src/driver-adapters-manager/neon.ws.ts b/libs/driver-adapters/executor/src/driver-adapters-manager/neon.ws.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/driver-adapters-manager/neon.ws.ts rename to libs/driver-adapters/executor/src/driver-adapters-manager/neon.ws.ts diff --git a/query-engine/driver-adapters/executor/src/driver-adapters-manager/pg.ts b/libs/driver-adapters/executor/src/driver-adapters-manager/pg.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/driver-adapters-manager/pg.ts rename to libs/driver-adapters/executor/src/driver-adapters-manager/pg.ts diff --git a/query-engine/driver-adapters/executor/src/driver-adapters-manager/planetscale.ts b/libs/driver-adapters/executor/src/driver-adapters-manager/planetscale.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/driver-adapters-manager/planetscale.ts rename to libs/driver-adapters/executor/src/driver-adapters-manager/planetscale.ts diff --git a/query-engine/driver-adapters/executor/src/engines/JsonProtocol.ts b/libs/driver-adapters/executor/src/engines/JsonProtocol.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/engines/JsonProtocol.ts rename to libs/driver-adapters/executor/src/engines/JsonProtocol.ts diff --git a/query-engine/driver-adapters/executor/src/engines/Library.ts b/libs/driver-adapters/executor/src/engines/Library.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/engines/Library.ts rename to libs/driver-adapters/executor/src/engines/Library.ts diff --git a/query-engine/driver-adapters/executor/src/engines/QueryEngine.ts b/libs/driver-adapters/executor/src/engines/QueryEngine.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/engines/QueryEngine.ts rename to libs/driver-adapters/executor/src/engines/QueryEngine.ts diff --git a/query-engine/driver-adapters/executor/src/engines/Transaction.ts b/libs/driver-adapters/executor/src/engines/Transaction.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/engines/Transaction.ts rename to libs/driver-adapters/executor/src/engines/Transaction.ts diff --git a/libs/driver-adapters/executor/src/query-engine-wasm.ts b/libs/driver-adapters/executor/src/query-engine-wasm.ts new file mode 100644 index 000000000000..044e9f58ece3 --- /dev/null +++ b/libs/driver-adapters/executor/src/query-engine-wasm.ts @@ -0,0 +1,33 @@ +import fs from 'node:fs/promises' +import path from 'node:path' +import { __dirname, normaliseProvider } from './utils' +import type { Queryable } from '@prisma/driver-adapter-utils' + +const relativePath = '../../../../query-engine/query-engine-wasm/pkg' + +const initializedModules = new Set() + +export async function getQueryEngineForProvider(provider: Queryable['provider']) { + const normalisedProvider = normaliseProvider(provider) + const engine = await import(`${relativePath}/${normalisedProvider}/query_engine_bg.js`) + + if (!initializedModules.has(provider)) { + const bytes = await fs.readFile( + path.resolve( + __dirname, + relativePath, + normalisedProvider, + 'query_engine_bg.wasm', + ), + ) + + const module = new WebAssembly.Module(bytes) + const instance = new WebAssembly.Instance(module, { + './query_engine_bg.js': engine, + }) + engine.__wbg_set_wasm(instance.exports) + initializedModules.add(provider) + } + + return engine.QueryEngine +} diff --git a/query-engine/driver-adapters/executor/src/query-engine.ts b/libs/driver-adapters/executor/src/query-engine.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/query-engine.ts rename to libs/driver-adapters/executor/src/query-engine.ts diff --git a/query-engine/driver-adapters/executor/src/recording.ts b/libs/driver-adapters/executor/src/recording.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/recording.ts rename to libs/driver-adapters/executor/src/recording.ts diff --git a/query-engine/driver-adapters/executor/src/requestId.ts b/libs/driver-adapters/executor/src/requestId.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/requestId.ts rename to libs/driver-adapters/executor/src/requestId.ts diff --git a/query-engine/driver-adapters/executor/src/rn.ts b/libs/driver-adapters/executor/src/rn.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/rn.ts rename to libs/driver-adapters/executor/src/rn.ts diff --git a/libs/driver-adapters/executor/src/schema-engine-wasm.ts b/libs/driver-adapters/executor/src/schema-engine-wasm.ts new file mode 100644 index 000000000000..572eaaf85d36 --- /dev/null +++ b/libs/driver-adapters/executor/src/schema-engine-wasm.ts @@ -0,0 +1,31 @@ +import fs from 'node:fs/promises' +import path from 'node:path' +import { __dirname, normaliseProvider } from './utils.js' +import type { Queryable } from '@prisma/driver-adapter-utils' + +const relativePath = '../../../../schema-engine/schema-engine-wasm/pkg' + +const initializedModules = new Set() + +export async function getSchemaEngineForProvider(provider: Queryable['provider']) { + const normalisedProvider = normaliseProvider(provider) + const engine = await import(`${relativePath}/${normalisedProvider}/schema_engine_bg.js`) + + if (!initializedModules.has(provider)) { + const bytes = await fs.readFile( + path.resolve( + __dirname, + relativePath, + normalisedProvider, + 'schema_engine_bg.wasm', + ), + ) + + const module = new WebAssembly.Module(bytes) + const instance = new WebAssembly.Instance(module, { './schema_engine_bg.js': engine }) + engine.__wbg_set_wasm(instance.exports) + initializedModules.add(provider) + } + + return engine.SchemaEngine +} diff --git a/query-engine/driver-adapters/executor/src/schema-engine.ts b/libs/driver-adapters/executor/src/schema-engine.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/schema-engine.ts rename to libs/driver-adapters/executor/src/schema-engine.ts diff --git a/query-engine/driver-adapters/executor/src/setup.ts b/libs/driver-adapters/executor/src/setup.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/setup.ts rename to libs/driver-adapters/executor/src/setup.ts diff --git a/query-engine/driver-adapters/executor/src/testd-qe.ts b/libs/driver-adapters/executor/src/testd-qe.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/testd-qe.ts rename to libs/driver-adapters/executor/src/testd-qe.ts diff --git a/query-engine/driver-adapters/executor/src/types/d1.ts b/libs/driver-adapters/executor/src/types/d1.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/types/d1.ts rename to libs/driver-adapters/executor/src/types/d1.ts diff --git a/query-engine/driver-adapters/executor/src/types/env.ts b/libs/driver-adapters/executor/src/types/env.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/types/env.ts rename to libs/driver-adapters/executor/src/types/env.ts diff --git a/query-engine/driver-adapters/executor/src/types/index.ts b/libs/driver-adapters/executor/src/types/index.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/types/index.ts rename to libs/driver-adapters/executor/src/types/index.ts diff --git a/query-engine/driver-adapters/executor/src/types/jsonRpc.ts b/libs/driver-adapters/executor/src/types/jsonRpc.ts similarity index 100% rename from query-engine/driver-adapters/executor/src/types/jsonRpc.ts rename to libs/driver-adapters/executor/src/types/jsonRpc.ts diff --git a/query-engine/driver-adapters/executor/src/utils.ts b/libs/driver-adapters/executor/src/utils.ts similarity index 89% rename from query-engine/driver-adapters/executor/src/utils.ts rename to libs/driver-adapters/executor/src/utils.ts index 994960b47287..ecd1ca6ac40d 100644 --- a/query-engine/driver-adapters/executor/src/utils.ts +++ b/libs/driver-adapters/executor/src/utils.ts @@ -1,4 +1,5 @@ import type { D1Database, D1PreparedStatement, D1Result } from '@cloudflare/workers-types' +import type { Queryable } from '@prisma/driver-adapter-utils' import path from 'node:path' import { fileURLToPath } from 'node:url' @@ -11,6 +12,10 @@ export function copyPathName({ fromURL, toURL }: { fromURL: string; toURL: strin return toObj.toString() } +export function normaliseProvider(provider: Queryable['provider']) { + return provider === 'postgres' ? 'postgresql' : provider +} + export function postgresSchemaName(url: string) { return new URL(url).searchParams.get('schema') ?? undefined } diff --git a/query-engine/driver-adapters/executor/tsconfig.json b/libs/driver-adapters/executor/tsconfig.json similarity index 100% rename from query-engine/driver-adapters/executor/tsconfig.json rename to libs/driver-adapters/executor/tsconfig.json diff --git a/query-engine/driver-adapters/executor/wrangler.toml b/libs/driver-adapters/executor/wrangler.toml similarity index 100% rename from query-engine/driver-adapters/executor/wrangler.toml rename to libs/driver-adapters/executor/wrangler.toml diff --git a/query-engine/driver-adapters/package.json b/libs/driver-adapters/package.json similarity index 90% rename from query-engine/driver-adapters/package.json rename to libs/driver-adapters/package.json index 4a52a6ceb45a..afa19bcd9af1 100644 --- a/query-engine/driver-adapters/package.json +++ b/libs/driver-adapters/package.json @@ -13,7 +13,7 @@ "build:prisma": "pnpm -r --parallel dev", "build:executor": "pnpm -r --filter executor build", "lint": "pnpm -r run lint", - "clean": "git clean -dXf -e !query-engine/driver-adapters" + "clean": "git clean -dXf -e !libs/driver-adapters" }, "keywords": [], "author": "", diff --git a/query-engine/driver-adapters/pnpm-workspace.yaml b/libs/driver-adapters/pnpm-workspace.yaml similarity index 100% rename from query-engine/driver-adapters/pnpm-workspace.yaml rename to libs/driver-adapters/pnpm-workspace.yaml diff --git a/query-engine/driver-adapters/src/conversion/js_arg.rs b/libs/driver-adapters/src/conversion/js_arg.rs similarity index 100% rename from query-engine/driver-adapters/src/conversion/js_arg.rs rename to libs/driver-adapters/src/conversion/js_arg.rs diff --git a/query-engine/driver-adapters/src/conversion/js_arg_type.rs b/libs/driver-adapters/src/conversion/js_arg_type.rs similarity index 100% rename from query-engine/driver-adapters/src/conversion/js_arg_type.rs rename to libs/driver-adapters/src/conversion/js_arg_type.rs diff --git a/query-engine/driver-adapters/src/conversion/js_to_quaint.rs b/libs/driver-adapters/src/conversion/js_to_quaint.rs similarity index 100% rename from query-engine/driver-adapters/src/conversion/js_to_quaint.rs rename to libs/driver-adapters/src/conversion/js_to_quaint.rs diff --git a/query-engine/driver-adapters/src/conversion/mod.rs b/libs/driver-adapters/src/conversion/mod.rs similarity index 100% rename from query-engine/driver-adapters/src/conversion/mod.rs rename to libs/driver-adapters/src/conversion/mod.rs diff --git a/query-engine/driver-adapters/src/conversion/mysql.rs b/libs/driver-adapters/src/conversion/mysql.rs similarity index 100% rename from query-engine/driver-adapters/src/conversion/mysql.rs rename to libs/driver-adapters/src/conversion/mysql.rs diff --git a/query-engine/driver-adapters/src/conversion/postgres.rs b/libs/driver-adapters/src/conversion/postgres.rs similarity index 100% rename from query-engine/driver-adapters/src/conversion/postgres.rs rename to libs/driver-adapters/src/conversion/postgres.rs diff --git a/query-engine/driver-adapters/src/conversion/sqlite.rs b/libs/driver-adapters/src/conversion/sqlite.rs similarity index 100% rename from query-engine/driver-adapters/src/conversion/sqlite.rs rename to libs/driver-adapters/src/conversion/sqlite.rs diff --git a/query-engine/driver-adapters/src/error.rs b/libs/driver-adapters/src/error.rs similarity index 100% rename from query-engine/driver-adapters/src/error.rs rename to libs/driver-adapters/src/error.rs diff --git a/query-engine/driver-adapters/src/lib.rs b/libs/driver-adapters/src/lib.rs similarity index 100% rename from query-engine/driver-adapters/src/lib.rs rename to libs/driver-adapters/src/lib.rs diff --git a/query-engine/driver-adapters/src/napi/adapter_method.rs b/libs/driver-adapters/src/napi/adapter_method.rs similarity index 100% rename from query-engine/driver-adapters/src/napi/adapter_method.rs rename to libs/driver-adapters/src/napi/adapter_method.rs diff --git a/query-engine/driver-adapters/src/napi/conversion.rs b/libs/driver-adapters/src/napi/conversion.rs similarity index 100% rename from query-engine/driver-adapters/src/napi/conversion.rs rename to libs/driver-adapters/src/napi/conversion.rs diff --git a/query-engine/driver-adapters/src/napi/error.rs b/libs/driver-adapters/src/napi/error.rs similarity index 100% rename from query-engine/driver-adapters/src/napi/error.rs rename to libs/driver-adapters/src/napi/error.rs diff --git a/query-engine/driver-adapters/src/napi/mod.rs b/libs/driver-adapters/src/napi/mod.rs similarity index 100% rename from query-engine/driver-adapters/src/napi/mod.rs rename to libs/driver-adapters/src/napi/mod.rs diff --git a/query-engine/driver-adapters/src/napi/result.rs b/libs/driver-adapters/src/napi/result.rs similarity index 100% rename from query-engine/driver-adapters/src/napi/result.rs rename to libs/driver-adapters/src/napi/result.rs diff --git a/query-engine/driver-adapters/src/proxy.rs b/libs/driver-adapters/src/proxy.rs similarity index 100% rename from query-engine/driver-adapters/src/proxy.rs rename to libs/driver-adapters/src/proxy.rs diff --git a/query-engine/driver-adapters/src/queryable.rs b/libs/driver-adapters/src/queryable.rs similarity index 100% rename from query-engine/driver-adapters/src/queryable.rs rename to libs/driver-adapters/src/queryable.rs diff --git a/query-engine/driver-adapters/src/send_future.rs b/libs/driver-adapters/src/send_future.rs similarity index 100% rename from query-engine/driver-adapters/src/send_future.rs rename to libs/driver-adapters/src/send_future.rs diff --git a/query-engine/driver-adapters/src/transaction.rs b/libs/driver-adapters/src/transaction.rs similarity index 100% rename from query-engine/driver-adapters/src/transaction.rs rename to libs/driver-adapters/src/transaction.rs diff --git a/query-engine/driver-adapters/src/types.rs b/libs/driver-adapters/src/types.rs similarity index 100% rename from query-engine/driver-adapters/src/types.rs rename to libs/driver-adapters/src/types.rs diff --git a/query-engine/driver-adapters/src/wasm/adapter_method.rs b/libs/driver-adapters/src/wasm/adapter_method.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/adapter_method.rs rename to libs/driver-adapters/src/wasm/adapter_method.rs diff --git a/query-engine/driver-adapters/src/wasm/conversion.rs b/libs/driver-adapters/src/wasm/conversion.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/conversion.rs rename to libs/driver-adapters/src/wasm/conversion.rs diff --git a/query-engine/driver-adapters/src/wasm/error.rs b/libs/driver-adapters/src/wasm/error.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/error.rs rename to libs/driver-adapters/src/wasm/error.rs diff --git a/query-engine/driver-adapters/src/wasm/from_js.rs b/libs/driver-adapters/src/wasm/from_js.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/from_js.rs rename to libs/driver-adapters/src/wasm/from_js.rs diff --git a/query-engine/driver-adapters/src/wasm/js_object_extern.rs b/libs/driver-adapters/src/wasm/js_object_extern.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/js_object_extern.rs rename to libs/driver-adapters/src/wasm/js_object_extern.rs diff --git a/query-engine/driver-adapters/src/wasm/mod.rs b/libs/driver-adapters/src/wasm/mod.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/mod.rs rename to libs/driver-adapters/src/wasm/mod.rs diff --git a/query-engine/driver-adapters/src/wasm/result.rs b/libs/driver-adapters/src/wasm/result.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/result.rs rename to libs/driver-adapters/src/wasm/result.rs diff --git a/query-engine/driver-adapters/src/wasm/to_js.rs b/libs/driver-adapters/src/wasm/to_js.rs similarity index 100% rename from query-engine/driver-adapters/src/wasm/to_js.rs rename to libs/driver-adapters/src/wasm/to_js.rs diff --git a/query-engine/connector-test-kit-rs/README.md b/query-engine/connector-test-kit-rs/README.md index 440445cf5398..362de51d55e4 100644 --- a/query-engine/connector-test-kit-rs/README.md +++ b/query-engine/connector-test-kit-rs/README.md @@ -89,7 +89,7 @@ To run tests through a driver adapters, you should also configure the following Example: ```shell -export EXTERNAL_TEST_EXECUTOR="$WORKSPACE_ROOT/query-engine/driver-adapters/executor/script/testd-qe.sh" +export EXTERNAL_TEST_EXECUTOR="$WORKSPACE_ROOT/libs/driver-adapters/executor/script/testd-qe.sh" export DRIVER_ADAPTER=neon export ENGINE=wasm export DRIVER_ADAPTER_CONFIG ='{ "proxyUrl": "127.0.0.1:5488/v1" }' diff --git a/query-engine/connector-test-kit-rs/query-tests-setup/src/config.rs b/query-engine/connector-test-kit-rs/query-tests-setup/src/config.rs index df4ac0a32437..9b2b1db84892 100644 --- a/query-engine/connector-test-kit-rs/query-tests-setup/src/config.rs +++ b/query-engine/connector-test-kit-rs/query-tests-setup/src/config.rs @@ -365,7 +365,7 @@ impl TestConfig { } pub fn external_test_executor_path(&self) -> Option { - const DEFAULT_TEST_EXECUTOR: &str = "query-engine/driver-adapters/executor/script/testd-qe.sh"; + const DEFAULT_TEST_EXECUTOR: &str = "libs/driver-adapters/executor/script/testd-qe.sh"; self.with_driver_adapter() .and_then(|_| { Self::workspace_root().or_else(|| { diff --git a/query-engine/driver-adapters/executor/script/testd-qe.sh b/query-engine/driver-adapters/executor/script/testd-qe.sh deleted file mode 100755 index a5b1a27faa96..000000000000 --- a/query-engine/driver-adapters/executor/script/testd-qe.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -node "$(dirname "${BASH_SOURCE[0]}")/../dist/testd-qe.mjs" diff --git a/query-engine/driver-adapters/executor/src/query-engine-wasm.ts b/query-engine/driver-adapters/executor/src/query-engine-wasm.ts deleted file mode 100644 index b690de0a8650..000000000000 --- a/query-engine/driver-adapters/executor/src/query-engine-wasm.ts +++ /dev/null @@ -1,43 +0,0 @@ -import * as wasmPostgres from '../../../query-engine-wasm/pkg/postgresql/query_engine_bg.js' -import * as wasmMysql from '../../../query-engine-wasm/pkg/mysql/query_engine_bg.js' -import * as wasmSqlite from '../../../query-engine-wasm/pkg/sqlite/query_engine_bg.js' -import fs from 'node:fs/promises' -import path from 'node:path' -import { __dirname } from './utils' - -const wasm = { - postgres: wasmPostgres, - mysql: wasmMysql, - sqlite: wasmSqlite, -} - -type EngineName = keyof typeof wasm - -const initializedModules = new Set() - -export async function getQueryEngineForProvider(provider: EngineName) { - const engine = wasm[provider] - if (!initializedModules.has(provider)) { - const subDir = provider === 'postgres' ? 'postgresql' : provider - const bytes = await fs.readFile( - path.resolve( - __dirname, - '..', - '..', - '..', - 'query-engine-wasm', - 'pkg', - subDir, - 'query_engine_bg.wasm', - ), - ) - const module = new WebAssembly.Module(bytes) - const instance = new WebAssembly.Instance(module, { - './query_engine_bg.js': engine, - }) - engine.__wbg_set_wasm(instance.exports) - initializedModules.add(provider) - } - - return engine.QueryEngine -} diff --git a/query-engine/driver-adapters/executor/src/schema-engine-wasm.ts b/query-engine/driver-adapters/executor/src/schema-engine-wasm.ts deleted file mode 100644 index d589ce26bd6a..000000000000 --- a/query-engine/driver-adapters/executor/src/schema-engine-wasm.ts +++ /dev/null @@ -1,30 +0,0 @@ -import * as wasmPostgres from '../../../../schema-engine/schema-engine-wasm/pkg/postgresql/schema_engine_bg.js' -import * as wasmMysql from '../../../../schema-engine/schema-engine-wasm/pkg/mysql/schema_engine_bg.js' -import * as wasmSqlite from '../../../../schema-engine/schema-engine-wasm/pkg/sqlite/schema_engine_bg.js' -import fs from 'node:fs/promises' -import path from 'node:path' -import { __dirname } from './utils.js' - -const wasm = { - postgres: wasmPostgres, - mysql: wasmMysql, - sqlite: wasmSqlite -} - -type EngineName = keyof typeof wasm - -const initializedModules = new Set() - -export async function getSchemaEngineForProvider(provider: EngineName) { - const engine = wasm[provider] - if (!initializedModules.has(provider)) { - const subDir = provider === 'postgres' ? 'postgresql' : provider - const bytes = await fs.readFile(path.resolve(__dirname, '..', '..', '..', '..', 'schema-engine', 'schema-engine-wasm', 'pkg', subDir, 'schema_engine_bg.wasm')) - const module = new WebAssembly.Module(bytes) - const instance = new WebAssembly.Instance(module, { './schema_engine_bg.js': engine }) - engine.__wbg_set_wasm(instance.exports) - initializedModules.add(provider) - } - - return engine.SchemaEngine -} diff --git a/query-engine/query-engine-node-api/Cargo.toml b/query-engine/query-engine-node-api/Cargo.toml index a12e7a28675e..c8103641f148 100644 --- a/query-engine/query-engine-node-api/Cargo.toml +++ b/query-engine/query-engine-node-api/Cargo.toml @@ -30,7 +30,7 @@ sql-connector = { path = "../connectors/sql-query-connector", package = "sql-que "all-native", ] } query-structure = { path = "../query-structure" } -driver-adapters = { path = "../driver-adapters", features = [ +driver-adapters = { path = "../../libs/driver-adapters", features = [ "postgresql", "sqlite", "mysql", diff --git a/query-engine/query-engine-wasm/Cargo.toml b/query-engine/query-engine-wasm/Cargo.toml index 26bf2cd79df9..0668d8d0d41e 100644 --- a/query-engine/query-engine-wasm/Cargo.toml +++ b/query-engine/query-engine-wasm/Cargo.toml @@ -43,7 +43,7 @@ request-handlers = { path = "../request-handlers", default-features = false, fea "driver-adapters", ] } query-core = { path = "../core" } -driver-adapters = { path = "../driver-adapters" } +driver-adapters = { path = "../../libs/driver-adapters" } telemetry = { path = "../../libs/telemetry" } quaint.workspace = true connection-string.workspace = true diff --git a/renovate.json b/renovate.json index 90593261a64a..16c4f7e0ab60 100644 --- a/renovate.json +++ b/renovate.json @@ -56,7 +56,7 @@ { "groupName": "Driver Adapters directory", "matchFileNames": [ - "query-engine/driver-adapters/**" + "libs/driver-adapters/**" ] }, { diff --git a/schema-engine/schema-engine-wasm/Cargo.toml b/schema-engine/schema-engine-wasm/Cargo.toml index 70444bb52e35..759a46b46172 100644 --- a/schema-engine/schema-engine-wasm/Cargo.toml +++ b/schema-engine/schema-engine-wasm/Cargo.toml @@ -24,7 +24,7 @@ tsify.workspace = true wasm-bindgen.workspace = true wasm-bindgen-futures.workspace = true wasm-rs-dbg.workspace = true -driver-adapters = { path = "../../query-engine/driver-adapters" } +driver-adapters = { path = "../../libs/driver-adapters" } [build-dependencies] build-utils.path = "../../libs/build-utils"