You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import * as BetterSqlite3 from '@signalapp/better-sqlite3';
|
|
import { CONFIG_DUMP_TABLE, ConfigDumpRow } from '../../../types/sqlSharedTypes';
|
|
import { checkTargetMigration } from '../utils';
|
|
|
|
const targetVersion = 33;
|
|
|
|
function fetchUserConfigDump(
|
|
db: BetterSqlite3.Database,
|
|
version: number,
|
|
userPubkeyhex: string
|
|
): ConfigDumpRow | null {
|
|
checkTargetMigration(version, targetVersion);
|
|
|
|
const userConfigWrapperDumps = db
|
|
.prepare(
|
|
`SELECT * FROM ${CONFIG_DUMP_TABLE} WHERE variant = $variant AND publicKey = $publicKey;`
|
|
)
|
|
.all({ variant: 'UserConfig', publicKey: userPubkeyhex }) as Array<ConfigDumpRow>;
|
|
|
|
if (!userConfigWrapperDumps || !userConfigWrapperDumps.length) {
|
|
return null;
|
|
}
|
|
// we can only have one dump with the "UserConfig" variant and our pubkey
|
|
return userConfigWrapperDumps[0];
|
|
}
|
|
|
|
function writeUserConfigDump(
|
|
db: BetterSqlite3.Database,
|
|
version: number,
|
|
userPubkeyhex: string,
|
|
dump: Uint8Array
|
|
) {
|
|
checkTargetMigration(version, targetVersion);
|
|
|
|
db.prepare(
|
|
`INSERT OR REPLACE INTO ${CONFIG_DUMP_TABLE} (
|
|
publicKey,
|
|
variant,
|
|
data
|
|
) values (
|
|
$publicKey,
|
|
$variant,
|
|
$data
|
|
);`
|
|
).run({
|
|
publicKey: userPubkeyhex,
|
|
variant: 'UserConfig',
|
|
data: dump,
|
|
});
|
|
}
|
|
|
|
export const V33 = { fetchUserConfigDump, writeUserConfigDump };
|