fix: add return types for libsession wrapper functions
parent
90804491d6
commit
4bfcf91193
@ -1,41 +1,31 @@
|
|||||||
import {
|
import {
|
||||||
AsyncWrapper,
|
AsyncObjectWrapper,
|
||||||
|
ConfigDumpDataNode,
|
||||||
ConfigDumpRow,
|
ConfigDumpRow,
|
||||||
GetAllDumps,
|
ConfigDumpRowWithoutData,
|
||||||
GetByPubkeyConfigDump,
|
|
||||||
GetByVariantAndPubkeyConfigDump,
|
|
||||||
SaveConfigDump,
|
|
||||||
} from '../../types/sqlSharedTypes';
|
} from '../../types/sqlSharedTypes';
|
||||||
import { ConfigWrapperObjectTypes } from '../../webworker/workers/browser/libsession_worker_functions';
|
import { ConfigWrapperObjectTypes } from '../../webworker/workers/browser/libsession_worker_functions';
|
||||||
import { channels } from '../channels';
|
import { channels } from '../channels';
|
||||||
|
|
||||||
const getByVariantAndPubkey: AsyncWrapper<GetByVariantAndPubkeyConfigDump> = (
|
export const ConfigDumpData: AsyncObjectWrapper<ConfigDumpDataNode> = {
|
||||||
variant: ConfigWrapperObjectTypes,
|
getByVariantAndPubkey: (variant: ConfigWrapperObjectTypes, pubkey: string) => {
|
||||||
pubkey: string
|
return channels.getByVariantAndPubkey(variant, pubkey);
|
||||||
) => {
|
},
|
||||||
return channels.getConfigDumpByVariantAndPubkey(variant, pubkey);
|
getMessageHashesByVariantAndPubkey: (variant: ConfigWrapperObjectTypes, pubkey: string) => {
|
||||||
};
|
return channels.getMessageHashesByVariantAndPubkey(variant, pubkey);
|
||||||
|
},
|
||||||
const getByPubkey: AsyncWrapper<GetByPubkeyConfigDump> = (pubkey: string) => {
|
saveConfigDump: (dump: ConfigDumpRow) => {
|
||||||
return channels.getConfigDumpsByPk(pubkey);
|
console.warn('saveConfigDump', dump);
|
||||||
};
|
return channels.saveConfigDump(dump);
|
||||||
|
},
|
||||||
const saveConfigDump: AsyncWrapper<SaveConfigDump> = (dump: ConfigDumpRow) => {
|
saveCombinedMessageHashesForMatching: (dump: ConfigDumpRowWithoutData) => {
|
||||||
return channels.saveConfigDump(dump);
|
console.warn('saveCombinedMessageHashesForMatching', dump);
|
||||||
};
|
return channels.saveCombinedMessageHashesForMatching(dump);
|
||||||
|
},
|
||||||
const getAllDumpsWithData: AsyncWrapper<GetAllDumps> = () => {
|
getAllDumpsWithData: () => {
|
||||||
return channels.getAllDumpsWithData();
|
return channels.getAllDumpsWithData();
|
||||||
};
|
},
|
||||||
|
getAllDumpsWithoutData: () => {
|
||||||
const getAllDumpsWithoutData: AsyncWrapper<GetAllDumps> = () => {
|
return channels.getAllDumpsWithoutData();
|
||||||
return channels.getAllDumpsWithoutData();
|
},
|
||||||
};
|
|
||||||
|
|
||||||
export const ConfigDumpData = {
|
|
||||||
getByVariantAndPubkey,
|
|
||||||
getByPubkey,
|
|
||||||
saveConfigDump,
|
|
||||||
getAllDumpsWithData,
|
|
||||||
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