SQL Query zu JSON aufbereiten

Garzec

Benutzer
Beiträge
7
Hallo, ich bin neu hier und auf der Suche nach Hilfe :) Es wurde eine REST API für ein Forum erstellt (Ein frei erfundenes Übungsprojekt!). Relevant sind die folgenden beiden Tabellen

Topic

id | topic_id (übergeordnetes Thema) | name | description
-------------------------------------------------------
uuid | uuid | text | text

und Thread

id | topic_id | name | created_at
-------------------------------------------------------
uuid | uuid | text | timestamp without timezone

Jetzt soll anhand der TopicID folgendes JSON Objekt an den Client zurückgeschickt werden

Code:
{
   parentTopic: {}, // kann auch null sein
   name: "",
   description: "",
   childTopics: [{}, {}, {}],
   threads: [{}, {}, {}] // sortiert nach created_at
}

Ich habe hier auch mal Testdaten für beide Tabellen angelegt

Die Topic Tabelle:

bv4Bo.png


Die Thread Tabelle:

0ulC8.png


Ich glaube nicht, dass man das Query so weit aufbereiten kann, dass man das Queryresult am Backend fast nur noch durchreichen muss. Falls doch, umso besser :).

Ich habe mal mit meinen quasi nicht vorhandenen SQL Skills versucht, ein Query dafür aufzustellen. Die ID gehört zu Thema 2.

Code:
SELECT
   currentTopic.name,
   currentTopic.description,
   parentTopic.id AS parentTopicId,
   parentTopic.name AS parentTopicName,
   parentTopic.description AS parentTopicDescription,
   childTopic.id AS childTopicId,
   childTopic.name AS childTopicName,
   childTopic.description AS childTopicDescription,
   linkedThread.id AS threadId,
   linkedThread.name AS threadName,
   linkedThread.created_at AS threadCreatedAt
FROM
   topic currentTopic
left JOIN
   topic parentTopic ON currentTopic.topic_id = parentTopic.id
left JOIN
   topic childTopic ON currentTopic.id = childTopic.topic_id
left JOIN
   thread linkedThread ON currentTopic.id = linkedThread.topic_id
WHERE
   currentTopic.id = '624aaab6-2d2d-45dc-a425-c2863f05779c'
ORDER BY
   linkedThread.created_at;

In PgAdmin bekomme ich 2 Rows zurückgeliefert. Klingt schon einmal gut. Meine Frage wäre jetzt: Gibt es eine Möglichkeit, das Query so weit aufzubereiten, dass es quasi "ready to use" von der DB kommt?

Vielen Dank schon einmal.
 
Werbung:
Zurück
Oben