0.0.1 • Published 9 months ago

umzug-libsql v0.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

umzug-libsql

Umzug implementation with LibSQL Client.

This package also exposes a CLI with sensible defaults for managing database migrations.

Running via CLI

Configuration reference

Environment VariableConfig PropertyDefaultDescription
TURSO_DATABASE_URLurl:memory:The database URL for LibSQL
TURSO_AUTH_TOKENauthTokenundefinedAuthentication token for the database
UMZUG_GLOBglobdb/migrations/*.sqlGlob pattern for migration files
UMZUG_CONFIRM_BEFORE_DOWNconfirmBeforeDowntrueWhether to be asked for confirmation before running down migrations. With you're running multiple down migrations in a single command, it will execute all down migrations after confirmation

Run CLI using npx

npx umzug-libsql --help

By default, db url will be set to :memory:, you can customize it via environment variables

for example:

TURSO_DATABASE_URL=http://localhost:8080/ npx umzug-libsql

or you can specify path to your env file

npx --env .env umzug-libsql

Run via custom file

you can also customize the config in a file

cli.js

import { createLibSqlUmzug } from './db/umzug.js';
const { umzug } = createLibSqlUmzug({
  url: ':memory:',
  authToken: '...',
  glob: 'db/migrations/*.sql',
  confirmBeforeDown: true
});
umzug.runAsCLI();
node cli.js

Use it from javascript code

Instead of running migrations from cli, you can also run it from javascript code. This is very useful for running migrations during tests.

For example in the code blow, you will get a fresh database with all tables but no data for each function

import { createLibSqlUmzug } from "umzug-libsql";

const umzug = createLibSqlUmzug();

beforeEach(async () => {
  await umzug.down({
    to: 0,
  });
  await umzug.up();
});

Custom umzug instance

If you want to create your own umzug instance you can do it like this:

import { Umzug } from "umzug";
import { createClient } from '@libsql/client';
import { LibSqlStorage, createLibSqlResolver } from "umzug-libsql";

const client = createClient();

const storage = new LibSqlStorage(client);
const resolver = createLibSqlResolver(client, { confirmBeforeDown: false });

const umzug = new Umzug({
  migrations: {
    glob: "migrations/*.sql",
    resolve: resolver,
  },
  storage,
  logger: console,
});

await umzug.up();
0.0.1

9 months ago