Spaces:
Paused
Paused
| /** | |
| * SQL transactions for the modlog. | |
| */ | |
| import type { TransactionEnvironment } from '../../lib/sql'; | |
| import type { TransactionArguments } from '.'; | |
| export const transactions = { | |
| insertion: (args: TransactionArguments, env: TransactionEnvironment) => { | |
| const modlogInsertion = env.statements.get(args.modlogInsertionStatement); | |
| const altsInsertion = env.statements.get(args.altsInsertionStatement); | |
| if (!modlogInsertion) { | |
| throw new Error(`Couldn't find prepared statement for provided value (args.modlogInsertionStatement=${args.modlogInsertionStatement}`); | |
| } | |
| if (!altsInsertion) { | |
| throw new Error(`Couldn't find prepared statement for provided value (args.altsInsertionStatement=${args.altsInsertionStatement}`); | |
| } | |
| for (const entry of args.entries) { | |
| // SQLite doesn't have a boolean type, so this is a workaround. | |
| entry.isGlobal = Number(entry.isGlobal) as any; | |
| const result = modlogInsertion.run(entry); | |
| const rowid = result.lastInsertRowid as number; | |
| for (const alt of entry.alts || []) { | |
| altsInsertion.run(rowid, alt); | |
| } | |
| } | |
| }, | |
| }; | |