diff --git a/clients/typescript/src/drivers/pglite/adapter.ts b/clients/typescript/src/drivers/pglite/adapter.ts index b621365e2c..d22f24dcad 100644 --- a/clients/typescript/src/drivers/pglite/adapter.ts +++ b/clients/typescript/src/drivers/pglite/adapter.ts @@ -13,18 +13,14 @@ export class DatabaseAdapter extends GenericDatabaseAdapter { } async _run(statement: Statement): Promise { - console.log('_run:', statement.sql) const res = await this.db.query(statement.sql, statement.args) - console.log('res:', res) return { rowsAffected: res.affectedRows ?? 0, } } async _query(statement: Statement): Promise { - console.log('_query:', statement.sql) const ret = (await this.db.query(statement.sql, statement.args)).rows - console.log('ret:', ret) return ret } } diff --git a/examples/web-pglite/package-lock.json b/examples/web-pglite/package-lock.json index 0fb332f3d7..5857936f6e 100644 --- a/examples/web-pglite/package-lock.json +++ b/examples/web-pglite/package-lock.json @@ -9,8 +9,8 @@ "version": "0.9.3", "license": "Apache-2.0", "dependencies": { - "@electric-sql/pglite": "^0.1.1", - "electric-sql": "file:../../clients/typescript/electric-sql-0.9.4.tgz", + "@electric-sql/pglite": "^0.1.3", + "electric-sql": "file:../../clients/typescript/electric-sql-0.9.6.tgz", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -700,9 +700,9 @@ "dev": true }, "node_modules/@electric-sql/pglite": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.1.1.tgz", - "integrity": "sha512-7tJNIJBXuiuVl6Y9ehwv9mTlQlPeQbQ7wIKn49eorToPlNnkYnBzVWpOOTkNqv6Xu4dz75vl3S/9BmlfqCqM1w==" + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.1.3.tgz", + "integrity": "sha512-f701lGIMnghtetrNRTO9a58zV3zp6PBU+xzx2l/2op9IM8BoefkdrCzqSsLfvIRDwahilgp8yxGlWLiOvCR93w==" }, "node_modules/@electric-sql/prisma-generator": { "version": "1.1.3", @@ -2917,12 +2917,12 @@ "dev": true }, "node_modules/electric-sql": { - "version": "0.9.4", - "resolved": "file:../../clients/typescript/electric-sql-0.9.4.tgz", - "integrity": "sha512-DkbWrKFjixWlroXLOGat137t00AxiBX4ILXk/Hz0OUvYrTDhOpaqmWfawlrv1aFKEDZeVJ+UBpcQgVTG4Mri5g==", + "version": "0.9.6", + "resolved": "file:../../clients/typescript/electric-sql-0.9.6.tgz", + "integrity": "sha512-fviXyqtpbOsuSYDGZhUQl6AfIFKYNuV4jMFANjGeG06sfTfq5mNEsKt+4CeBP1mHKuB09K2QyR9iZUcAggpGYg==", "license": "Apache-2.0", "dependencies": { - "@electric-sql/prisma-generator": "file:/Users/samwillis/Code/electric/generator/electric-sql-prisma-generator-1.1.3.tgz", + "@electric-sql/prisma-generator": "1.1.3", "@prisma/client": "4.8.1", "@tauri-apps/api": "^1.5.3", "async-mutex": "^0.4.0", @@ -2965,7 +2965,7 @@ }, "peerDependencies": { "@capacitor-community/sqlite": ">= 5.6.2", - "@electric-sql/pglite": ">= 0.0.2", + "@electric-sql/pglite": ">= 0.1.1", "@op-engineering/op-sqlite": ">= 2.0.16", "@tauri-apps/plugin-sql": "2.0.0-alpha.5", "embedded-postgres": "16.1.1-beta.9", diff --git a/examples/web-pglite/package.json b/examples/web-pglite/package.json index c714cf09b6..a2efa35350 100644 --- a/examples/web-pglite/package.json +++ b/examples/web-pglite/package.json @@ -20,8 +20,8 @@ "preview": "vite preview" }, "dependencies": { - "@electric-sql/pglite": "^0.1.1", - "electric-sql": "file:../../clients/typescript/electric-sql-0.9.4.tgz", + "@electric-sql/pglite": "^0.1.3", + "electric-sql": "file:../../clients/typescript/electric-sql-0.9.6.tgz", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/web-pglite/src/Example.tsx b/examples/web-pglite/src/Example.tsx index 69596b4fe0..45f4dfa325 100644 --- a/examples/web-pglite/src/Example.tsx +++ b/examples/web-pglite/src/Example.tsx @@ -13,25 +13,28 @@ import './Example.css' const { ElectricProvider, useElectric } = makeElectricContext() +// We use a global database instance to avoid reinitializing the database +// when the component re-renders under React strict mode. +let db: PGlite + export const Example = () => { const [ electric, setElectric ] = useState() useEffect(() => { let isMounted = true + let electric: Electric | undefined const init = async () => { const config = { - debug: import.meta.env.DEV, + debug: false,//import.meta.env.DEV, url: import.meta.env.ELECTRIC_SERVICE } const { tabId } = uniqueTabId() const scopedDbName = `idb://basic-${LIB_VERSION}-${tabId}.db` - const db = new PGlite(scopedDbName) - await db.waitReady; - await db.exec('SET search_path TO main, public;') // TODO: remove when schemas are fixed - const electric = await electrify(db, schema, config) + db ??= new PGlite(scopedDbName) + electric = await electrify(db, schema, config) await electric.connect(authToken()) if (!isMounted) { @@ -41,9 +44,16 @@ export const Example = () => { setElectric(electric) } + const cleanup = async () => { + if (electric) { + await electric.close() + } + } + init() return () => { + cleanup() isMounted = false } }, [])