@hasna/domains
Version:
Domain portfolio, registrar, marketplace, and DNS management for AI agents — CLI + MCP + HTTP API + SDK, shared account API and PostgreSQL
69 lines • 3.12 kB
TypeScript
import type { TypedQueryClient } from "./query.js";
/** Default ledger table name. Override per app if a legacy name exists. */
export declare const DEFAULT_MIGRATION_LEDGER_TABLE = "schema_migrations";
export interface Migration {
readonly id: string;
readonly sql: string;
readonly checksum: string;
}
export type MigrationState = "already_applied" | "pending";
export interface MigrationPlanItem {
readonly migration: Migration;
readonly state: MigrationState;
}
export interface AppliedMigration {
readonly id: string;
readonly checksum: string;
readonly appliedAt: string;
}
export interface MigrationResult {
readonly dryRun: boolean;
readonly applied: AppliedMigration[];
readonly plan: MigrationPlanItem[];
}
/** Stable sha256 checksum for a migration's SQL text. */
export declare function checksumSql(sql: string): string;
/** Freeze a migration definition, computing its checksum from the SQL. */
export declare function defineMigration(id: string, sql: string): Migration;
export interface MigrationRunnerOptions {
ledgerTable?: string;
/**
* Applied-ledger rows whose ids the build ACKNOWLEDGES as non-reproducible
* history: a migration that was applied to the ledger by an out-of-band
* operation or by a build whose id scheme no longer exists, so no current
* source can reproduce its id or its SQL.
*
* An acknowledged id:
* - passes the downgrade guard (it IS recognized — as history),
* - is never checksum-compared (its SQL is gone, so no checksum can be
* computed for it; storing an arbitrary placeholder in `checksum` is
* what the prod ledger already holds for such rows),
* - is never re-applied and never re-inserted (it is already in the
* ledger; the plan covers declared migrations only).
*
* The list is EXPLICIT and OPT-IN: an acknowledged id may not also be a
* declared migration (enforced at construction), and any OTHER applied row
* unknown to the build still fails the downgrade guard. Every declared
* migration keeps its checksum bind unchanged.
*/
acknowledgedLegacyIds?: readonly string[];
}
export declare class MigrationLedger {
private readonly client;
private readonly migrations;
private readonly ledgerTable;
private readonly acknowledgedLegacyIds;
constructor(client: TypedQueryClient, migrations: readonly Migration[], options?: MigrationRunnerOptions);
ensureLedger(): Promise<void>;
listApplied(): Promise<AppliedMigration[]>;
private readApplied;
/** Compute the migration plan and guard against drift/downgrade. */
private buildPlan;
/** Apply all pending migrations. With `dryRun`, report the plan only. */
migrate(opts?: {
dryRun?: boolean;
}): Promise<MigrationResult>;
}
/** Convenience: build a ledger and run all pending migrations. */
export declare function createMigrationLedger(client: TypedQueryClient, migrations: readonly Migration[], options?: MigrationRunnerOptions): MigrationLedger;
//# sourceMappingURL=migrations.d.ts.map