@nozbe/watermelondb
Version:
Build powerful React Native and React web apps that scale from hundreds to tens of thousands of records and remain fast
54 lines (42 loc) • 1.29 kB
TypeScript
import type { $RE, $Exact } from '../../types'
import type { ColumnSchema, TableName, TableSchema, TableSchemaSpec, SchemaVersion } from '../index'
export type CreateTableMigrationStep = $RE<{
type: 'create_table'
schema: TableSchema
}>
export type AddColumnsMigrationStep = $RE<{
type: 'add_columns'
table: TableName<any>
columns: ColumnSchema[]
unsafeSql?: (_: string) => string
}>
export type SqlMigrationStep = $RE<{
type: 'sql'
sql: string
}>
export type MigrationStep = CreateTableMigrationStep | AddColumnsMigrationStep | SqlMigrationStep
type Migration = $RE<{
toVersion: SchemaVersion
steps: MigrationStep[]
}>
type SchemaMigrationsSpec = $RE<{
migrations: Migration[]
}>
export type SchemaMigrations = $RE<{
validated: true
minVersion: SchemaVersion
maxVersion: SchemaVersion
sortedMigrations: Migration[]
}>
export function schemaMigrations(migrationSpec: SchemaMigrationsSpec): SchemaMigrations
export function createTable(tableSchemaSpec: TableSchemaSpec): CreateTableMigrationStep
export function addColumns({
table,
columns,
unsafeSql,
}: $Exact<{
table: TableName<any>
columns: ColumnSchema[]
unsafeSql?: (_: string) => string
}>): AddColumnsMigrationStep
export function unsafeExecuteSql(sql: string): SqlMigrationStep