Skip to content

Instantly share code, notes, and snippets.

@younes200
Created November 28, 2024 08:20
Show Gist options
  • Save younes200/59156f3692ec32d9190a3563d81e9fe0 to your computer and use it in GitHub Desktop.
Save younes200/59156f3692ec32d9190a3563d81e9fe0 to your computer and use it in GitHub Desktop.
Connect Expo Drizzle Studio with op-sqlite
import { useDevToolsPluginClient } from "expo/devtools";
import { useEffect } from "react";
import { type DB } from "@op-engineering/op-sqlite";
export function DrizzleStudio(db:DB) {
const client = useDevToolsPluginClient("expo-drizzle-studio-plugin");
const transferData = async (e: {
sql: string;
params: (string | number)[];
arrayMode: boolean;
id: string;
}) => {
if (!db) return;
try {
if (e.arrayMode) {
const data = await db.executeRaw(e.sql, e.params);
client?.sendMessage(`transferData-${e.id}`, {
from: "app",
data: data,
});
} else {
const data = await db.execute(e.sql, e.params);
client?.sendMessage(`transferData-${e.id}`, {
from: "app",
data: data.rows,
});
}
} catch (error) {
console.error(error);
}
};
useEffect(() => {
const subscriptions: any[] = [];
subscriptions.push(client?.addMessageListener("getData", transferData));
return () => {
for (const subscription of subscriptions) {
subscription?.remove();
}
};
}, [client]);
return null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment