Fix getTiddler query

This commit is contained in:
Jeremy Ruston 2024-01-18 21:47:57 +00:00
parent a16338ce11
commit 2f09c32d2d
2 changed files with 9 additions and 16 deletions

View File

@ -284,22 +284,14 @@ SqlTiddlerStore.prototype.getTiddler = function(title,recipename) {
SELECT field_name, field_value
FROM fields
WHERE tiddler_id = (
SELECT tt.tiddler_id
FROM (
SELECT bb.bag_id, t.tiddler_id
FROM (
SELECT b.bag_id
FROM bags AS b
INNER JOIN recipe_bags AS rb ON b.bag_id = rb.bag_id
INNER JOIN recipes AS r ON rb.recipe_id = r.recipe_id
WHERE r.recipe_name = $recipe_name
ORDER BY rb.position
) AS bb
INNER JOIN tiddlers AS t ON bb.bag_id = t.bag_id
WHERE t.title = $title
) AS tt
ORDER BY tt.tiddler_id DESC
LIMIT 1
SELECT t.tiddler_id
FROM bags AS b
INNER JOIN recipe_bags AS rb ON b.bag_id = rb.bag_id
INNER JOIN recipes AS r ON rb.recipe_id = r.recipe_id
INNER JOIN tiddlers AS t ON b.bag_id = t.bag_id
WHERE r.recipe_name = $recipe_name
AND t.title = $title
ORDER BY rb.position DESC
)
`,{
title: title,

View File

@ -47,6 +47,7 @@ describe("SQL tiddler store", function() {
expect(sqlTiddlerStore.getTiddler("Another Tiddler","recipe-rho")).toEqual({ title: "Another Tiddler", text: "I'm in alpha", tags: "one two three" });
expect(sqlTiddlerStore.getTiddler("Hello There","recipe-sigma")).toEqual({ title: "Hello There", text: "I'm in gamma", tags: "seven eight nine" });
expect(sqlTiddlerStore.getTiddler("Another Tiddler","recipe-sigma")).toEqual({ title: "Another Tiddler", text: "I'm in alpha", tags: "one two three" });
expect(sqlTiddlerStore.getTiddler("Hello There","recipe-upsilon")).toEqual({title: "Hello There",text: "I'm in beta",tags: "four five six"});
// Delete a tiddlers to ensure the underlying tiddler in the recipe shows through
sqlTiddlerStore.deleteTiddler("Hello There","bag-beta");
expect(sqlTiddlerStore.getRecipeTiddlers("recipe-rho")).toEqual([ "Another Tiddler", "Hello There"]);