Enumerate apps without walking all DB keys.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3768 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
Cory McWilliams 2022-01-15 21:48:04 +00:00
parent 1ae9aaf752
commit 4637509b3d

View File

@ -193,12 +193,17 @@ async function getProcessBlob(blobId, key, options) {
'getUser': getUser.bind(null, process, process),
'user': getUser(process, process),
'apps': function() {
var apps = process.credentials &&
if (process.credentials &&
process.credentials.session &&
process.credentials.session.name ?
new Database(process.credentials.session.name).getLike('path:%') :
{};
return Object.fromEntries(Object.keys(apps).map(key => [key.substring(5), apps[key]]));
process.credentials.session.name) {
var db = new Database(process.credentials.session.name);
try {
var names = JSON.parse(db.get('apps'));
return Object.fromEntries(names.map(name => [name, db.get('path:' + name)]));
} catch {
}
}
return {};
},
}
};
@ -478,7 +483,16 @@ async function blobHandler(request, response, blobId, uri) {
return;
}
var database = new Database(user);
await database.set('path:' + app, newBlobId);
var apps = new Set();
try {
apps = new Set(JSON.parse(database.get('apps')));
} catch {
}
if (!apps.has(app)) {
apps.add(app);
database.set('apps', JSON.stringify([...apps]));
}
database.set('path:' + app, newBlobId);
}
response.writeHead(200, {"Content-Type": "text/plain; charset=utf-8"});