Simon Bruder
e83bc8316e
This architecture was started when the project still used Diesel. Now that it uses SQLx, less things are done in Rust and more are done in SQL. This commit now moves more of the query logic into SQL, which should lead to more efficient queries and less moving data around.
57 lines
2.3 KiB
JSON
57 lines
2.3 KiB
JSON
{
|
|
"db_name": "PostgreSQL",
|
|
"query": "\n WITH RECURSIVE cte AS (\n SELECT\n id,\n ARRAY[]::UUID[] AS parents,\n ARRAY[]::VARCHAR[] AS parent_names,\n ARRAY[]::VARCHAR[] AS parent_class_names\n FROM items\n WHERE parent IS NULL\n\n UNION\n\n SELECT\n items.id,\n cte.parents || items.parent,\n cte.parent_names || parent.name,\n cte.parent_class_names || parent_class.name\n FROM cte\n JOIN items\n ON items.parent = cte.id\n JOIN items AS \"parent\"\n ON parent.id = cte.id\n JOIN item_classes AS \"parent_class\"\n ON parent.class = parent_class.id\n )\n SELECT\n cte.id AS \"id!\",\n items.name,\n items.class,\n item_classes.name AS \"class_name\",\n cte.parents AS \"parents!\",\n cte.parent_names AS \"parent_names!: Vec<Option<String>>\",\n cte.parent_class_names AS \"parent_class_names!\"\n FROM cte\n JOIN items\n ON cte.id = items.id\n JOIN item_classes\n ON items.class = item_classes.id\n ORDER BY items.created_at\n ",
|
|
"describe": {
|
|
"columns": [
|
|
{
|
|
"ordinal": 0,
|
|
"name": "id!",
|
|
"type_info": "Uuid"
|
|
},
|
|
{
|
|
"ordinal": 1,
|
|
"name": "name",
|
|
"type_info": "Varchar"
|
|
},
|
|
{
|
|
"ordinal": 2,
|
|
"name": "class",
|
|
"type_info": "Uuid"
|
|
},
|
|
{
|
|
"ordinal": 3,
|
|
"name": "class_name",
|
|
"type_info": "Varchar"
|
|
},
|
|
{
|
|
"ordinal": 4,
|
|
"name": "parents!",
|
|
"type_info": "UuidArray"
|
|
},
|
|
{
|
|
"ordinal": 5,
|
|
"name": "parent_names!: Vec<Option<String>>",
|
|
"type_info": "VarcharArray"
|
|
},
|
|
{
|
|
"ordinal": 6,
|
|
"name": "parent_class_names!",
|
|
"type_info": "VarcharArray"
|
|
}
|
|
],
|
|
"parameters": {
|
|
"Left": []
|
|
},
|
|
"nullable": [
|
|
null,
|
|
true,
|
|
false,
|
|
false,
|
|
null,
|
|
null,
|
|
null
|
|
]
|
|
},
|
|
"hash": "3dedb7b184103c1d418f7b94e26c75aea0c7d22e009299d1b87443e350578171"
|
|
}
|