fix: add return types for libsession wrapper functions
parent
90804491d6
commit
4bfcf91193
@ -1,41 +1,31 @@
|
||||
import {
|
||||
AsyncWrapper,
|
||||
AsyncObjectWrapper,
|
||||
ConfigDumpDataNode,
|
||||
ConfigDumpRow,
|
||||
GetAllDumps,
|
||||
GetByPubkeyConfigDump,
|
||||
GetByVariantAndPubkeyConfigDump,
|
||||
SaveConfigDump,
|
||||
ConfigDumpRowWithoutData,
|
||||
} from '../../types/sqlSharedTypes';
|
||||
import { ConfigWrapperObjectTypes } from '../../webworker/workers/browser/libsession_worker_functions';
|
||||
import { channels } from '../channels';
|
||||
|
||||
const getByVariantAndPubkey: AsyncWrapper<GetByVariantAndPubkeyConfigDump> = (
|
||||
variant: ConfigWrapperObjectTypes,
|
||||
pubkey: string
|
||||
) => {
|
||||
return channels.getConfigDumpByVariantAndPubkey(variant, pubkey);
|
||||
};
|
||||
|
||||
const getByPubkey: AsyncWrapper<GetByPubkeyConfigDump> = (pubkey: string) => {
|
||||
return channels.getConfigDumpsByPk(pubkey);
|
||||
};
|
||||
|
||||
const saveConfigDump: AsyncWrapper<SaveConfigDump> = (dump: ConfigDumpRow) => {
|
||||
return channels.saveConfigDump(dump);
|
||||
};
|
||||
|
||||
const getAllDumpsWithData: AsyncWrapper<GetAllDumps> = () => {
|
||||
return channels.getAllDumpsWithData();
|
||||
};
|
||||
|
||||
const getAllDumpsWithoutData: AsyncWrapper<GetAllDumps> = () => {
|
||||
return channels.getAllDumpsWithoutData();
|
||||
};
|
||||
|
||||
export const ConfigDumpData = {
|
||||
getByVariantAndPubkey,
|
||||
getByPubkey,
|
||||
saveConfigDump,
|
||||
getAllDumpsWithData,
|
||||
getAllDumpsWithoutData,
|
||||
export const ConfigDumpData: AsyncObjectWrapper<ConfigDumpDataNode> = {
|
||||
getByVariantAndPubkey: (variant: ConfigWrapperObjectTypes, pubkey: string) => {
|
||||
return channels.getByVariantAndPubkey(variant, pubkey);
|
||||
},
|
||||
getMessageHashesByVariantAndPubkey: (variant: ConfigWrapperObjectTypes, pubkey: string) => {
|
||||
return channels.getMessageHashesByVariantAndPubkey(variant, pubkey);
|
||||
},
|
||||
saveConfigDump: (dump: ConfigDumpRow) => {
|
||||
console.warn('saveConfigDump', dump);
|
||||
return channels.saveConfigDump(dump);
|
||||
},
|
||||
saveCombinedMessageHashesForMatching: (dump: ConfigDumpRowWithoutData) => {
|
||||
console.warn('saveCombinedMessageHashesForMatching', dump);
|
||||
return channels.saveCombinedMessageHashesForMatching(dump);
|
||||
},
|
||||
getAllDumpsWithData: () => {
|
||||
return channels.getAllDumpsWithData();
|
||||
},
|
||||
getAllDumpsWithoutData: () => {
|
||||
return channels.getAllDumpsWithoutData();
|
||||
},
|
||||
};
|
||||
|
@ -0,0 +1,147 @@
|
||||
/**
|
||||
* Config dumps sql calls
|
||||
*/
|
||||
|
||||
import { compact, flatten, isEmpty, uniq } from 'lodash';
|
||||
import {
|
||||
ConfigDumpDataNode,
|
||||
ConfigDumpRow,
|
||||
ConfigDumpRowWithoutData,
|
||||
} from '../../types/sqlSharedTypes';
|
||||
import { ConfigWrapperObjectTypes } from '../../webworker/workers/browser/libsession_worker_functions';
|
||||
import { assertGlobalInstance } from '../sqlInstance';
|
||||
|
||||
type CombinedMessageHashes = { combinedMessageHashes?: string };
|
||||
|
||||
function parseRow(
|
||||
row: Pick<ConfigDumpRow, 'data' | 'publicKey' | 'variant'> & CombinedMessageHashes
|
||||
): ConfigDumpRow | null {
|
||||
const parsedNoData = parseRowNoData(row);
|
||||
if (!parsedNoData) {
|
||||
return null;
|
||||
}
|
||||
return { ...parsedNoData, data: row.data };
|
||||
}
|
||||
|
||||
function parseRowNoData(
|
||||
row: Pick<ConfigDumpRow, 'data' | 'publicKey' | 'variant'> & CombinedMessageHashes
|
||||
): ConfigDumpRowWithoutData | null {
|
||||
const toRet: ConfigDumpRowWithoutData = {
|
||||
publicKey: row.publicKey,
|
||||
variant: row.variant,
|
||||
combinedMessageHashes: [],
|
||||
};
|
||||
toRet.combinedMessageHashes = parseRowMessageHashes(row);
|
||||
|
||||
return toRet;
|
||||
}
|
||||
|
||||
function parseRowMessageHashes(row: CombinedMessageHashes): Array<string> {
|
||||
if (!isEmpty(row.combinedMessageHashes) && row.combinedMessageHashes) {
|
||||
try {
|
||||
return JSON.parse(row.combinedMessageHashes) || [];
|
||||
} catch (e) {
|
||||
console.warn('parseRowMessageHashes row failed');
|
||||
}
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
export const configDumpData: ConfigDumpDataNode = {
|
||||
getByVariantAndPubkey: (variant: ConfigWrapperObjectTypes, publicKey: string) => {
|
||||
const rows = assertGlobalInstance()
|
||||
.prepare(
|
||||
'SELECT publicKey, variant, combinedMessageHashes, data from configDump WHERE variant = $variant AND publicKey = $publicKey;'
|
||||
)
|
||||
.all({
|
||||
publicKey,
|
||||
variant,
|
||||
});
|
||||
|
||||
if (!rows) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return compact(rows.map(parseRow));
|
||||
},
|
||||
|
||||
getMessageHashesByVariantAndPubkey: (variant: ConfigWrapperObjectTypes, publicKey: string) => {
|
||||
const rows = assertGlobalInstance()
|
||||
.prepare(
|
||||
'SELECT combinedMessageHashes from configDump WHERE variant = $variant AND publicKey = $publicKey;'
|
||||
)
|
||||
.all({
|
||||
publicKey,
|
||||
variant,
|
||||
});
|
||||
|
||||
if (!rows) {
|
||||
return [];
|
||||
}
|
||||
return uniq(flatten(rows.map(parseRowMessageHashes)));
|
||||
},
|
||||
|
||||
getAllDumpsWithData: () => {
|
||||
const rows = assertGlobalInstance()
|
||||
.prepare('SELECT variant, publicKey, combinedMessageHashes, data from configDump;')
|
||||
.all();
|
||||
|
||||
if (!rows) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return compact(rows.map(parseRow));
|
||||
},
|
||||
|
||||
getAllDumpsWithoutData: () => {
|
||||
const rows = assertGlobalInstance()
|
||||
.prepare('SELECT variant, publicKey, combinedMessageHashes from configDump;')
|
||||
.all();
|
||||
|
||||
if (!rows) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return compact(rows.map(parseRowNoData));
|
||||
},
|
||||
|
||||
saveConfigDump: ({ data, publicKey, variant, combinedMessageHashes }: ConfigDumpRow) => {
|
||||
assertGlobalInstance()
|
||||
.prepare(
|
||||
`INSERT OR REPLACE INTO configDump (
|
||||
publicKey,
|
||||
variant,
|
||||
combinedMessageHashes,
|
||||
data
|
||||
) values (
|
||||
$publicKey,
|
||||
$variant,
|
||||
$combinedMessageHashes,
|
||||
$data
|
||||
);`
|
||||
)
|
||||
.run({
|
||||
publicKey,
|
||||
variant,
|
||||
combinedMessageHashes: JSON.stringify(combinedMessageHashes || []),
|
||||
data,
|
||||
});
|
||||
},
|
||||
saveCombinedMessageHashesForMatching: ({
|
||||
publicKey,
|
||||
variant,
|
||||
combinedMessageHashes,
|
||||
}: ConfigDumpRowWithoutData) => {
|
||||
assertGlobalInstance()
|
||||
.prepare(
|
||||
`UPDATE configDump SET
|
||||
combinedMessageHashes = $combinedMessageHashes
|
||||
WHERE publicKey=$publicKey AND variant=$variant;`
|
||||
)
|
||||
.run({
|
||||
publicKey,
|
||||
variant,
|
||||
combinedMessageHashes: JSON.stringify(combinedMessageHashes || []),
|
||||
});
|
||||
},
|
||||
};
|
Loading…
Reference in New Issue