Skip to content

FluxbaseAdminMigrations

Admin Migrations manager for database migration operations Provides create, update, delete, apply, rollback, and smart sync operations

new FluxbaseAdminMigrations(fetch): FluxbaseAdminMigrations

ParameterType
fetchFluxbaseFetch

FluxbaseAdminMigrations

apply(name, namespace): Promise<object>

Apply a specific migration

ParameterTypeDefault valueDescription
namestringundefinedMigration name
namespacestring'default'Migration namespace (default: ‘default’)

Promise<object>

Promise resolving to { data, error } tuple with result message

NameType
datanull | object
errornull | Error
const { data, error } = await client.admin.migrations.apply('001_create_users', 'myapp')
if (data) {
console.log(data.message) // "Migration applied successfully"
}

applyPending(namespace): Promise<object>

Apply all pending migrations in order

ParameterTypeDefault valueDescription
namespacestring'default'Migration namespace (default: ‘default’)

Promise<object>

Promise resolving to { data, error } tuple with applied/failed counts

NameType
datanull | object
errornull | Error
const { data, error } = await client.admin.migrations.applyPending('myapp')
if (data) {
console.log(`Applied: ${data.applied.length}, Failed: ${data.failed.length}`)
}

create(request): Promise<object>

Create a new migration

ParameterTypeDescription
requestCreateMigrationRequestMigration configuration

Promise<object>

Promise resolving to { data, error } tuple with created migration

NameType
datanull | Migration
errornull | Error
const { data, error } = await client.admin.migrations.create({
namespace: 'myapp',
name: '001_create_users',
up_sql: 'CREATE TABLE app.users (id UUID PRIMARY KEY, email TEXT)',
down_sql: 'DROP TABLE app.users',
description: 'Create users table'
})

delete(name, namespace): Promise<object>

Delete a migration (only if status is pending)

ParameterTypeDefault valueDescription
namestringundefinedMigration name
namespacestring'default'Migration namespace (default: ‘default’)

Promise<object>

Promise resolving to { data, error } tuple

NameType
datanull
errornull | Error
const { data, error } = await client.admin.migrations.delete('001_create_users', 'myapp')

get(name, namespace): Promise<object>

Get details of a specific migration

ParameterTypeDefault valueDescription
namestringundefinedMigration name
namespacestring'default'Migration namespace (default: ‘default’)

Promise<object>

Promise resolving to { data, error } tuple with migration details

NameType
datanull | Migration
errornull | Error
const { data, error } = await client.admin.migrations.get('001_create_users', 'myapp')

getExecutions(name, namespace, limit): Promise<object>

Get execution history for a migration

ParameterTypeDefault valueDescription
namestringundefinedMigration name
namespacestring'default'Migration namespace (default: ‘default’)
limitnumber50Maximum number of executions to return (default: 50, max: 100)

Promise<object>

Promise resolving to { data, error } tuple with execution records

NameType
datanull | MigrationExecution[]
errornull | Error
const { data, error } = await client.admin.migrations.getExecutions(
'001_create_users',
'myapp',
10
)
if (data) {
data.forEach(exec => {
console.log(`${exec.executed_at}: ${exec.action} - ${exec.status}`)
})
}

list(namespace, status?): Promise<object>

List migrations in a namespace

ParameterTypeDefault valueDescription
namespacestring'default'Migration namespace (default: ‘default’)
status?"pending" | "failed" | "applied" | "rolled_back"undefinedFilter by status: ‘pending’, ‘applied’, ‘failed’, ‘rolled_back’

Promise<object>

Promise resolving to { data, error } tuple with migrations array

NameType
datanull | Migration[]
errornull | Error
// List all migrations
const { data, error } = await client.admin.migrations.list('myapp')
// List only pending migrations
const { data, error } = await client.admin.migrations.list('myapp', 'pending')

register(migration): object

Register a migration locally for smart sync

Call this method to register migrations in your application code. When you call sync(), only new or changed migrations will be sent to the server.

ParameterTypeDescription
migrationCreateMigrationRequestMigration definition

object

tuple (always succeeds unless validation fails)

NameType
errornull | Error
// In your app initialization
const { error: err1 } = client.admin.migrations.register({
name: '001_create_users_table',
namespace: 'myapp',
up_sql: 'CREATE TABLE app.users (...)',
down_sql: 'DROP TABLE app.users',
description: 'Initial users table'
})
const { error: err2 } = client.admin.migrations.register({
name: '002_add_posts_table',
namespace: 'myapp',
up_sql: 'CREATE TABLE app.posts (...)',
down_sql: 'DROP TABLE app.posts'
})
// Sync all registered migrations
await client.admin.migrations.sync()

rollback(name, namespace): Promise<object>

Rollback a specific migration

ParameterTypeDefault valueDescription
namestringundefinedMigration name
namespacestring'default'Migration namespace (default: ‘default’)

Promise<object>

Promise resolving to { data, error } tuple with result message

NameType
datanull | object
errornull | Error
const { data, error } = await client.admin.migrations.rollback('001_create_users', 'myapp')

sync(options): Promise<object>

Smart sync all registered migrations

Automatically determines which migrations need to be created or updated by:

  1. Fetching existing migrations from the server
  2. Comparing content hashes to detect changes
  3. Only sending new or changed migrations

After successful sync, can optionally auto-apply new migrations and refresh the server’s schema cache.

ParameterTypeDescription
optionsPartial<SyncMigrationsOptions>Sync options

Promise<object>

Promise resolving to { data, error } tuple with sync results

NameType
datanull | SyncMigrationsResult
errornull | Error
// Basic sync (idempotent - safe to call on every app startup)
const { data, error } = await client.admin.migrations.sync()
if (data) {
console.log(`Created: ${data.summary.created}, Updated: ${data.summary.updated}`)
}
// Sync with auto-apply (applies new migrations automatically)
const { data, error } = await client.admin.migrations.sync({
auto_apply: true
})
// Dry run to preview changes without applying
const { data, error } = await client.admin.migrations.sync({
dry_run: true
})

update(name, updates, namespace): Promise<object>

Update a migration (only if status is pending)

ParameterTypeDefault valueDescription
namestringundefinedMigration name
updatesUpdateMigrationRequestundefinedFields to update
namespacestring'default'Migration namespace (default: ‘default’)

Promise<object>

Promise resolving to { data, error } tuple with updated migration

NameType
datanull | Migration
errornull | Error
const { data, error } = await client.admin.migrations.update(
'001_create_users',
{ description: 'Updated description' },
'myapp'
)