From 3aa5607a3a688aefac9bad4f10042eb8b5e554c7 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Wed, 20 Mar 2024 19:22:12 +0000 Subject: [PATCH] Stop storing bag and revision details as tiddler fields Instead we store them as dictionary tiddlers --- .../multiwikiclient/multiwikiclientadaptor.js | 100 +++++------------- .../routes/handlers/get-bag-tiddler.js | 15 +-- .../routes/handlers/get-recipe-tiddler.js | 15 +-- .../modules/routes/handlers/get-wiki.js | 4 +- .../routes/handlers/put-recipe-tiddler.js | 15 +-- .../modules/store/sql-tiddler-store.js | 17 +-- 6 files changed, 44 insertions(+), 122 deletions(-) diff --git a/plugins/tiddlywiki/multiwikiclient/multiwikiclientadaptor.js b/plugins/tiddlywiki/multiwikiclient/multiwikiclientadaptor.js index 596000cab..33b57ca9e 100644 --- a/plugins/tiddlywiki/multiwikiclient/multiwikiclientadaptor.js +++ b/plugins/tiddlywiki/multiwikiclient/multiwikiclientadaptor.js @@ -13,7 +13,9 @@ A sync adaptor module for synchronising with MultiWikiServer-compatible servers "use strict"; var CONFIG_HOST_TIDDLER = "$:/config/multiwikiclient/host", - DEFAULT_HOST_TIDDLER = "$protocol$//$host$/"; + DEFAULT_HOST_TIDDLER = "$protocol$//$host$/", + BAG_STATE_TIDDLER = "$:/state/federatial/xememex/tiddlers/bag", + REVISION_STATE_TIDDLER = "$:/state/federatial/xememex/tiddlers/revision"; function MultiWikiClientAdaptor(options) { this.wiki = options.wiki; @@ -52,14 +54,32 @@ MultiWikiClientAdaptor.prototype.getHost = function() { }; MultiWikiClientAdaptor.prototype.getTiddlerInfo = function(tiddler) { - return { - bag: tiddler.fields.bag - }; + var title = tiddler.fields.title, + revision = this.wiki.extractTiddlerDataItem(REVISION_STATE_TIDDLER,title), + bag = this.wiki.extractTiddlerDataItem(BAG_STATE_TIDDLER,title); + if(revision && bag) { + return { + title: title, + revision: revision, + bag: bag + }; + } else { + return undefined; + } }; MultiWikiClientAdaptor.prototype.getTiddlerRevision = function(title) { - var tiddler = this.wiki.getTiddler(title); - return tiddler.fields.revision; + return this.wiki.extractTiddlerDataItem(REVISION_STATE_TIDDLER,title); +}; + +MultiWikiClientAdaptor.prototype.setTiddlerInfo = function(title,revision,bag) { + this.wiki.setText(BAG_STATE_TIDDLER,null,title,revision,{suppressTimestamp: true}); + this.wiki.setText(REVISION_STATE_TIDDLER,null,title,bag,{suppressTimestamp: true}); +}; + +MultiWikiClientAdaptor.prototype.removeTiddlerInfo = function(title) { + this.wiki.setText(BAG_STATE_TIDDLER,null,title,undefined,{suppressTimestamp: true}); + this.wiki.setText(REVISION_STATE_TIDDLER,null,title,undefined,{suppressTimestamp: true}); }; /* @@ -157,11 +177,7 @@ MultiWikiClientAdaptor.prototype.getSkinnyTiddlers = function(callback) { if(err) { return callback(err); } - // Process the tiddlers to make sure the revision is a string - var tiddlers = JSON.parse(data); - for(var t=0; t