profiler
This commit is contained in:
@@ -17,6 +17,7 @@ export const DEFAULT_TBL_VAULT_RANDOM_ID_MAPPING = "vaultrandomidmapping";
|
||||
export const DEFAULT_TBL_LOGGER_OUTPUT = "loggeroutput";
|
||||
export const DEFAULT_TBL_SIMPLE_KV_FOR_MISC = "simplekvformisc";
|
||||
export const DEFAULT_TBL_PREV_SYNC_RECORDS = "prevsyncrecords";
|
||||
export const DEFAULT_TBL_PROFILER_RESULTS = "profilerresults";
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
@@ -58,6 +59,7 @@ export interface InternalDBs {
|
||||
loggerOutputTbl: LocalForage;
|
||||
simpleKVForMiscTbl: LocalForage;
|
||||
prevSyncRecordsTbl: LocalForage;
|
||||
profilerResultsTbl: LocalForage;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
@@ -204,6 +206,10 @@ export const prepareDBs = async (
|
||||
name: DEFAULT_DB_NAME,
|
||||
storeName: DEFAULT_TBL_PREV_SYNC_RECORDS,
|
||||
}),
|
||||
profilerResultsTbl: localforage.createInstance({
|
||||
name: DEFAULT_DB_NAME,
|
||||
storeName: DEFAULT_TBL_PROFILER_RESULTS,
|
||||
}),
|
||||
|
||||
fileHistoryTbl: localforage.createInstance({
|
||||
name: DEFAULT_DB_NAME,
|
||||
@@ -524,3 +530,45 @@ export const upsertPluginVersionByVault = async (
|
||||
newVersion: newVersion,
|
||||
};
|
||||
};
|
||||
|
||||
export const insertProfilerResultByVault = async (
|
||||
db: InternalDBs,
|
||||
profilerStr: string,
|
||||
vaultRandomID: string,
|
||||
remoteType: SUPPORTED_SERVICES_TYPE
|
||||
) => {
|
||||
const now = Date.now();
|
||||
await db.profilerResultsTbl.setItem(`${vaultRandomID}\t${now}`, profilerStr);
|
||||
|
||||
// clear older one while writing
|
||||
const records = (await db.profilerResultsTbl.keys())
|
||||
.filter((x) => x.startsWith(`${vaultRandomID}\t`))
|
||||
.map((x) => parseInt(x.split("\t")[1]));
|
||||
records.sort((a, b) => -(a - b)); // descending
|
||||
while (records.length > 5) {
|
||||
const ts = records.pop()!;
|
||||
await db.profilerResultsTbl.removeItem(`${vaultRandomID}\t${ts}`);
|
||||
}
|
||||
};
|
||||
|
||||
export const readAllProfilerResultsByVault = async (
|
||||
db: InternalDBs,
|
||||
vaultRandomID: string
|
||||
) => {
|
||||
const records = [] as { val: string; ts: number }[];
|
||||
await db.profilerResultsTbl.iterate((value, key, iterationNumber) => {
|
||||
if (key.startsWith(`${vaultRandomID}\t`)) {
|
||||
records.push({
|
||||
val: value as string,
|
||||
ts: parseInt(key.split("\t")[1]),
|
||||
});
|
||||
}
|
||||
});
|
||||
records.sort((a, b) => -(a.ts - b.ts)); // descending
|
||||
|
||||
if (records === undefined) {
|
||||
return [] as string[];
|
||||
} else {
|
||||
return records.map((x) => x.val);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user