Changed how data is stored quite a bit with nice query capabilities
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
import type { IndexTreeEvent } from "@silverbulletmd/web/app_event";
|
||||
import {
|
||||
batchSet,
|
||||
scanPrefixGlobal,
|
||||
queryPrefix,
|
||||
} from "@silverbulletmd/plugos-silverbullet-syscall";
|
||||
import {
|
||||
collectNodesOfType,
|
||||
@@ -102,7 +102,7 @@ export async function queryProvider({
|
||||
query,
|
||||
}: QueryProviderEvent): Promise<any[]> {
|
||||
let allData: any[] = [];
|
||||
for (let { key, page, value } of await scanPrefixGlobal("data:")) {
|
||||
for (let { key, page, value } of await queryPrefix("data:")) {
|
||||
let [, pos] = key.split("@");
|
||||
allData.push({
|
||||
...value,
|
||||
|
||||
@@ -221,7 +221,6 @@ export async function renderQuery(
|
||||
data: any[]
|
||||
): Promise<string> {
|
||||
if (parsedQuery.render) {
|
||||
console.log("Handlebars", Handlebars);
|
||||
Handlebars.registerHelper("json", (v) => JSON.stringify(v));
|
||||
Handlebars.registerHelper("niceDate", (ts) => niceDate(new Date(ts)));
|
||||
Handlebars.registerHelper("yaml", (v, prefix) => {
|
||||
|
||||
@@ -22,25 +22,24 @@ export async function updateMaterializedQueriesCommand() {
|
||||
const currentPage = await getCurrentPage();
|
||||
await save();
|
||||
await flashNotification("Updating materialized queries...");
|
||||
await invokeFunction(
|
||||
"server",
|
||||
"updateMaterializedQueriesOnPage",
|
||||
currentPage
|
||||
);
|
||||
await reloadPage();
|
||||
}
|
||||
|
||||
export async function whiteOutQueriesCommand() {
|
||||
const text = await getText();
|
||||
const parsed = await parseMarkdown(text);
|
||||
console.log(removeQueries(parsed));
|
||||
if (
|
||||
await invokeFunction(
|
||||
"server",
|
||||
"updateMaterializedQueriesOnPage",
|
||||
currentPage
|
||||
)
|
||||
) {
|
||||
await reloadPage();
|
||||
}
|
||||
}
|
||||
|
||||
// Called from client, running on server
|
||||
export async function updateMaterializedQueriesOnPage(pageName: string) {
|
||||
export async function updateMaterializedQueriesOnPage(
|
||||
pageName: string
|
||||
): Promise<boolean> {
|
||||
let { text } = await readPage(pageName);
|
||||
|
||||
text = await replaceAsync(
|
||||
let newText = await replaceAsync(
|
||||
text,
|
||||
queryRegex,
|
||||
async (fullMatch, startQuery, query, body, endQuery) => {
|
||||
@@ -68,6 +67,9 @@ export async function updateMaterializedQueriesOnPage(pageName: string) {
|
||||
}
|
||||
}
|
||||
);
|
||||
// console.log("New text", text);
|
||||
await writePage(pageName, text);
|
||||
if (text !== newText) {
|
||||
await writePage(pageName, newText);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -12,10 +12,8 @@ functions:
|
||||
key: "Alt-q"
|
||||
button:
|
||||
label: "🔄"
|
||||
whiteOutQueriesCommand:
|
||||
path: ./materialized_queries.ts:whiteOutQueriesCommand
|
||||
command:
|
||||
name: "Debug: Whiteout Queries"
|
||||
events:
|
||||
- editor:pageLoaded
|
||||
indexData:
|
||||
path: ./data.ts:indexData
|
||||
events:
|
||||
|
||||
Reference in New Issue
Block a user