profiler
This commit is contained in:
+32
-66
@@ -1,82 +1,24 @@
|
||||
import { TAbstractFile, TFolder, TFile, Vault } from "obsidian";
|
||||
|
||||
import type { SyncPlanType } from "./sync";
|
||||
import { readAllSyncPlanRecordTextsByVault } from "./localdb";
|
||||
import {
|
||||
readAllProfilerResultsByVault,
|
||||
readAllSyncPlanRecordTextsByVault,
|
||||
} from "./localdb";
|
||||
import type { InternalDBs } from "./localdb";
|
||||
import { mkdirpInVault } from "./misc";
|
||||
import { mkdirpInVault, unixTimeToStr } from "./misc";
|
||||
import {
|
||||
DEFAULT_DEBUG_FOLDER,
|
||||
DEFAULT_LOG_HISTORY_FILE_PREFIX,
|
||||
DEFAULT_PROFILER_RESULT_FILE_PREFIX,
|
||||
DEFAULT_SYNC_PLANS_HISTORY_FILE_PREFIX,
|
||||
FileOrFolderMixedState,
|
||||
} from "./baseTypes";
|
||||
|
||||
const turnSyncPlanToTable = (record: string) => {
|
||||
const syncPlan: SyncPlanType = JSON.parse(record);
|
||||
const { ts, tsFmt, remoteType, mixedStates } = syncPlan;
|
||||
|
||||
type allowedHeadersType = keyof FileOrFolderMixedState;
|
||||
const headers: allowedHeadersType[] = [
|
||||
"key",
|
||||
"remoteEncryptedKey",
|
||||
"existLocal",
|
||||
"sizeLocal",
|
||||
"sizeLocalEnc",
|
||||
"mtimeLocal",
|
||||
"deltimeLocal",
|
||||
"changeLocalMtimeUsingMapping",
|
||||
"existRemote",
|
||||
"sizeRemote",
|
||||
"sizeRemoteEnc",
|
||||
"mtimeRemote",
|
||||
"deltimeRemote",
|
||||
"changeRemoteMtimeUsingMapping",
|
||||
"decision",
|
||||
"decisionBranch",
|
||||
];
|
||||
|
||||
const lines = [
|
||||
`ts: ${ts}${tsFmt !== undefined ? " / " + tsFmt : ""}`,
|
||||
`remoteType: ${remoteType}`,
|
||||
`| ${headers.join(" | ")} |`,
|
||||
`| ${headers.map((x) => "---").join(" | ")} |`,
|
||||
];
|
||||
for (const [k1, v1] of Object.entries(syncPlan.mixedStates)) {
|
||||
const k = k1 as string;
|
||||
const v = v1 as FileOrFolderMixedState;
|
||||
const singleLine = [];
|
||||
for (const h of headers) {
|
||||
const field = v[h];
|
||||
if (field === undefined) {
|
||||
singleLine.push("");
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
h === "mtimeLocal" ||
|
||||
h === "deltimeLocal" ||
|
||||
h === "mtimeRemote" ||
|
||||
h === "deltimeRemote"
|
||||
) {
|
||||
const fmt = v[(h + "Fmt") as allowedHeadersType] as string;
|
||||
const s = `${field}${fmt !== undefined ? " / " + fmt : ""}`;
|
||||
singleLine.push(s);
|
||||
} else {
|
||||
singleLine.push(field);
|
||||
}
|
||||
}
|
||||
lines.push(`| ${singleLine.join(" | ")} |`);
|
||||
}
|
||||
|
||||
return lines.join("\n");
|
||||
};
|
||||
|
||||
export const exportVaultSyncPlansToFiles = async (
|
||||
db: InternalDBs,
|
||||
vault: Vault,
|
||||
vaultRandomID: string,
|
||||
howMany: number
|
||||
) => {
|
||||
console.info("exporting");
|
||||
console.info("exporting sync plans");
|
||||
await mkdirpInVault(DEFAULT_DEBUG_FOLDER, vault);
|
||||
const records = await readAllSyncPlanRecordTextsByVault(db, vaultRandomID);
|
||||
let md = "";
|
||||
@@ -101,5 +43,29 @@ export const exportVaultSyncPlansToFiles = async (
|
||||
await vault.create(filePath, md, {
|
||||
mtime: ts,
|
||||
});
|
||||
console.info("finish exporting");
|
||||
console.info("finish exporting sync plans");
|
||||
};
|
||||
|
||||
export const exportVaultProfilerResultsToFiles = async (
|
||||
db: InternalDBs,
|
||||
vault: Vault,
|
||||
vaultRandomID: string
|
||||
) => {
|
||||
console.info("exporting profiler results");
|
||||
await mkdirpInVault(DEFAULT_DEBUG_FOLDER, vault);
|
||||
const records = await readAllProfilerResultsByVault(db, vaultRandomID);
|
||||
let md = "";
|
||||
if (records.length === 0) {
|
||||
md = "No profiler results found";
|
||||
} else {
|
||||
md =
|
||||
"Profiler results found:\n\n" +
|
||||
records.map((x) => "```\n" + x + "\n```\n").join("\n");
|
||||
}
|
||||
const ts = Date.now();
|
||||
const filePath = `${DEFAULT_DEBUG_FOLDER}${DEFAULT_PROFILER_RESULT_FILE_PREFIX}${ts}.md`;
|
||||
await vault.create(filePath, md, {
|
||||
mtime: ts,
|
||||
});
|
||||
console.info("finish exporting profiler results");
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user