react-native-nitro-sqlite
Version:
Fast SQLite library for React Native built using Nitro Modules
57 lines (50 loc) • 1.51 kB
text/typescript
import {
isSimpleNullHandlingEnabled,
replaceWithNativeNullValue,
} from '../nullHandling'
import { HybridNitroSQLite } from '../nitro'
import type {
NativeSQLiteQueryParams,
BatchQueryResult,
BatchQueryCommand,
NativeBatchQueryCommand,
} from '../types'
export function executeBatch(
dbName: string,
commands: BatchQueryCommand[]
): BatchQueryResult {
const transformedCommands = isSimpleNullHandlingEnabled()
? toNativeBatchQueryCommands(commands)
: (commands as NativeBatchQueryCommand[])
const result = HybridNitroSQLite.executeBatch(dbName, transformedCommands)
return result
}
export async function executeBatchAsync(
dbName: string,
commands: BatchQueryCommand[]
): Promise<BatchQueryResult> {
const transformedCommands = isSimpleNullHandlingEnabled()
? toNativeBatchQueryCommands(commands)
: (commands as NativeBatchQueryCommand[])
const result = await HybridNitroSQLite.executeBatchAsync(
dbName,
transformedCommands
)
return result
}
function toNativeBatchQueryCommands(
commands: BatchQueryCommand[]
): NativeBatchQueryCommand[] {
return commands.map((command) => {
const transformedParams = command.params?.map((param) => {
if (Array.isArray(param)) {
return param.map((p) => replaceWithNativeNullValue(p))
}
return replaceWithNativeNullValue(param)
}) as NativeSQLiteQueryParams | NativeSQLiteQueryParams[]
return {
query: command.query,
params: transformedParams,
}
})
}