libsql-client-hooks
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

libsql-client-hooks

NPM

DO NOT USE. Concept example.

Usage

import { createClient } from "@libsql/client";
import {
  type LibSQLPlugin,
  withLibsqlHooks,
  beforeExecute,
  afterExecute,
} from "libsql-client-hooks";

const client = createClient({ url: "file:dev.db" });

const plugins: LibSQLPlugin = {
  beforeExecute: (query) => {
    console.log(`Before executing: ${query}`);
    return query;
  },
  afterExecute: (result, query) => {
    console.log("After executing");
    return result;
  },
};

// Shorter variants
const logBeforeExecute = beforeExecute((query) => {
  console.log("Before executing");
  return result;
});

// Real world example
function isInsertForUsersTable(query: InStatement | string) {
  const insertRegex = /^INSERT\s+INTO\s+users\s+/i;
  return insertRegex.test(typeof query === "string" ? query : query.sql);
}

const sendWelcomeEmail = beforeExecute((result, query) => {
  if (!isInsertForUsersTable(query)) {
    return result;
  }

  // await addJobToQueue(result, query)

  return result;
});

const enhancedClient = withLibsqlHooks(client, [
  plugins,
  sendWelcomeEmail,
  logBeforeExecute,
]);

await enhancedClient.execute("SELECT * FROM users");

Package Sidebar

Install

npm i libsql-client-hooks

Weekly Downloads

25

Version

1.2.0

License

MIT

Unpacked Size

16.4 kB

Total Files

8

Last publish

Collaborators

  • notrab