Changed how data is stored quite a bit with nice query capabilities

This commit is contained in:
Zef Hemel
2022-05-17 15:54:55 +02:00
parent 9a6a86f8b5
commit dfd820cc25
21 changed files with 256 additions and 132 deletions
-1
View File
@@ -422,7 +422,6 @@ function $9072202279b76d33$export$5884dae03c64f759(parsedQuery, records) {
}
async function $9072202279b76d33$export$b3c659c1456e61b0(parsedQuery, data) {
if (parsedQuery.render) {
console.log("Handlebars", ($parcel$interopDefault($hVExJ$handlebars)));
($parcel$interopDefault($hVExJ$handlebars)).registerHelper("json", (v)=>JSON.stringify(v)
);
($parcel$interopDefault($hVExJ$handlebars)).registerHelper("niceDate", (ts)=>$c3893eec0c49ec96$export$5dc1410f87262ed6(new Date(ts))
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -2,7 +2,7 @@ import type { IndexTreeEvent } from "@silverbulletmd/web/app_event";
import {
batchSet,
scanPrefixGlobal,
queryPrefix,
} from "@silverbulletmd/plugos-silverbullet-syscall/index";
import {
collectNodesOfType,
@@ -61,7 +61,7 @@ export async function queryProvider({
query,
}: QueryProviderEvent): Promise<any[]> {
let allItems: Item[] = [];
for (let { key, page, value } of await scanPrefixGlobal("it:")) {
for (let { key, page, value } of await queryPrefix("it:")) {
let [, pos] = key.split(":");
allItems.push({
...value,
+4 -4
View File
@@ -3,7 +3,7 @@ import {
batchSet,
clearPageIndex as clearPageIndexSyscall,
clearPageIndexForPage,
scanPrefixGlobal,
queryPrefix,
set,
} from "@silverbulletmd/plugos-silverbullet-syscall/index";
import {
@@ -73,7 +73,7 @@ export async function pageQueryProvider({
let allPageMap: Map<string, any> = new Map(
allPages.map((pm) => [pm.name, pm])
);
for (let { page, value } of await scanPrefixGlobal("meta:")) {
for (let { page, value } of await queryPrefix("meta:")) {
let p = allPageMap.get(page);
if (p) {
for (let [k, v] of Object.entries(value)) {
@@ -90,7 +90,7 @@ export async function linkQueryProvider({
pageName,
}: QueryProviderEvent): Promise<any[]> {
let uniqueLinks = new Set<string>();
for (let { value: name } of await scanPrefixGlobal(`pl:${pageName}:`)) {
for (let { value: name } of await queryPrefix(`pl:${pageName}:`)) {
uniqueLinks.add(name);
}
return applyQuery(
@@ -176,7 +176,7 @@ type BackLink = {
};
async function getBackLinks(pageName: string): Promise<BackLink[]> {
let allBackLinks = await scanPrefixGlobal(`pl:${pageName}:`);
let allBackLinks = await queryPrefix(`pl:${pageName}:`);
let pagesToUpdate: BackLink[] = [];
for (let { key, value } of allBackLinks) {
let keyParts = key.split(":");
+2 -2
View File
@@ -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,
-1
View File
@@ -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) => {
+18 -16
View File
@@ -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;
}
+2 -4
View File
@@ -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:
+2 -2
View File
@@ -1,7 +1,7 @@
import { fullTextIndex, fullTextSearch } from "@plugos/plugos-syscall/fulltext";
import { renderToText } from "@silverbulletmd/common/tree";
import { PageMeta } from "@silverbulletmd/common/types";
import { scanPrefixGlobal } from "@silverbulletmd/plugos-silverbullet-syscall";
import { queryPrefix } from "@silverbulletmd/plugos-silverbullet-syscall";
import {
navigate,
prompt,
@@ -28,7 +28,7 @@ export async function queryProvider({
let allPageMap: Map<string, any> = new Map(
results.map((r: any) => [r.name, r])
);
for (let { page, value } of await scanPrefixGlobal("meta:")) {
for (let { page, value } of await queryPrefix("meta:")) {
let p = allPageMap.get(page);
if (p) {
for (let [k, v] of Object.entries(value)) {
+2 -2
View File
@@ -2,7 +2,7 @@ import type { ClickEvent, IndexTreeEvent } from "@silverbulletmd/web/app_event";
import {
batchSet,
scanPrefixGlobal,
queryPrefix,
} from "@silverbulletmd/plugos-silverbullet-syscall/index";
import {
readPage,
@@ -197,7 +197,7 @@ export async function queryProvider({
query,
}: QueryProviderEvent): Promise<Task[]> {
let allTasks: Task[] = [];
for (let { key, page, value } of await scanPrefixGlobal("task:")) {
for (let { key, page, value } of await queryPrefix("task:")) {
let [, pos] = key.split(":");
allTasks.push({
...value,