You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
vore-rpg/src/database/characters.ts

32 lines
1.1 KiB

import {TransactType} from "./index";
export interface CharacterTable {
clearOrCreateCharacterEditor(options: {userId: string, deleteFirst: boolean}): Promise<{inserted: number, deleted: number}>
}
export class CharacterTableImpl implements CharacterTable {
private readonly _transact: TransactType
constructor({transact}: { transact: TransactType }) {
this._transact = transact
}
async clearOrCreateCharacterEditor(
{userId, deleteFirst}: { userId: string; deleteFirst: boolean }): Promise<{ inserted: number, deleted: number }> {
const result = {
inserted: 0,
deleted: 0,
}
await this._transact({
readonly: false,
async transaction(query) {
result.deleted = deleteFirst
? (await query("DELETE FROM character_creation WHERE id = $1", [userId])).rowCount
: 0
result.inserted =
(await query("INSERT INTO character_creation (id) VALUES ($1) ON CONFLICT (id) DO NOTHING")).rowCount
}
})
return result
}
}