import { optionalBoolean, type MutationFlags } from './types.ts'
export function readMutationFlags(input: Record<string, unknown>): MutationFlags {
return {
dryRun: optionalBoolean(input.dryRun, 'dryRun'),
confirm: optionalBoolean(input.confirm, 'confirm'),
}
}
export function assertMutationAllowed(
flags: MutationFlags,
label: string,
): { dryRun: boolean } {
if (flags.dryRun) return { dryRun: true }
if (flags.confirm) return { dryRun: false }
throw new Error(
`${label} is a mutation. Pass dryRun: true to preview, or confirm: true to run it live.`,
)
}
export function assertFilteredWrite(
input: {
hasFilters: boolean
allowUnfiltered?: boolean
dryRun?: boolean
confirm?: boolean
},
label: string,
) {
if (input.hasFilters) return
if (input.dryRun) return
if (input.confirm && input.allowUnfiltered) return
throw new Error(
`${label} without filters would change every row. Add filters, or pass dryRun: true, or confirm: true with allowUnfiltered: true.`,
)
}