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
		
	
| 
								 
											2 years ago
										 
									 | 
							
								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 };
							 |