Ctrl K
ComunidadGuías…

scripts/turso-migration-lib.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import {
  checkedSource,
  configuredOrAsked,
  migrateDatabase,
  reportCleanupError,
  requiredAnswer,
  runMigrationTask,
  type TursoMigrationDeps,
} from "#scripts/turso-migration-steps.ts";
import { tursoDatabaseSlug } from "#shared/config.ts";

export const MIGRATE_TURSO_USAGE = "Usage: deno task migrate:turso";

export type { TursoMigrationDeps } from "#scripts/turso-migration-steps.ts";

/** Run the interactive source-to-Turso database migration. */
export const runMigrateTursoCli = (deps: TursoMigrationDeps): Promise<number> =>
  runMigrationTask(deps, MIGRATE_TURSO_USAGE, async () => {
    const dbUrl = requiredAnswer(
      deps.prompt("Source database URL:"),
      "Source database URL",
    );
    const dbToken = requiredAnswer(
      deps.promptSecret("Source database password or token (DB_TOKEN):"),
      "Source database password or token",
    );
    const requestedName = requiredAnswer(
      deps.prompt("Destination Turso database name:"),
      "Destination Turso database name",
    );
    const name = tursoDatabaseSlug(requestedName);
    const apiToken = configuredOrAsked(
      deps,
      "TURSO_API_TOKEN",
      "Destination Turso API key:",
    );
    const source = checkedSource({ dbToken, dbUrl });
    const api = deps.createApi(apiToken, deps.signal);
    const outcome = await migrateDatabase(deps, api, source, name);
    deps.stdout(
      "Keep using the source DB_ENCRYPTION_KEY. It is not stored in the database file.",
    );
    return reportCleanupError(deps, outcome) ? 1 : 0;
  });