mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 15:15:36 +01:00
114 lines
5.7 KiB
JSON
114 lines
5.7 KiB
JSON
{
|
|
"db_name": "PostgreSQL",
|
|
"query": "\n SELECT\n b.id,\n b.title,\n b.lang,\n b.file_type,\n b.year,\n CASE WHEN b.file_type = 'fb2' THEN ARRAY['fb2', 'epub', 'mobi', 'fb2zip']::text[] ELSE ARRAY[b.file_type]::text[] END AS \"available_types!: Vec<String>\",\n b.uploaded,\n (\n SELECT\n JSONB_AGG(\n JSONB_BUILD_OBJECT(\n 'id', authors.id,\n 'first_name', authors.first_name,\n 'last_name', authors.last_name,\n 'middle_name', authors.middle_name,\n 'annotation_exists', EXISTS(\n SELECT * FROM author_annotations WHERE author = authors.id\n )\n )\n )\n FROM book_authors\n JOIN authors ON authors.id = book_authors.author\n WHERE book_authors.book = b.id\n ) AS \"authors!: Vec<Author>\",\n (\n SELECT\n JSONB_AGG(\n JSONB_BUILD_OBJECT(\n 'id', authors.id,\n 'first_name', authors.first_name,\n 'last_name', authors.last_name,\n 'middle_name', authors.middle_name,\n 'annotation_exists', EXISTS(\n SELECT * FROM author_annotations WHERE author = authors.id\n )\n )\n )\n FROM translations\n JOIN authors ON authors.id = translations.author\n WHERE translations.book = b.id\n ) AS \"translators!: Vec<Author>\",\n (\n SELECT\n JSONB_AGG(\n JSONB_BUILD_OBJECT(\n 'id', sequences.id,\n 'name', sequences.name\n )\n )\n FROM book_sequences\n JOIN sequences ON sequences.id = book_sequences.sequence\n WHERE book_sequences.book = b.id\n ) AS \"sequences!: Vec<Sequence>\",\n (\n SELECT\n JSONB_AGG(\n JSONB_BUILD_OBJECT(\n 'id', genres.id,\n 'code', genres.code,\n 'description', genres.description,\n 'meta', genres.meta,\n 'source', JSONB_BUILD_OBJECT(\n 'id', sources.id,\n 'name', sources.name\n )\n )\n )\n FROM book_genres\n JOIN genres ON genres.id = book_genres.genre\n JOIN sources ON sources.id = genres.source\n WHERE book_genres.book = b.id\n ) AS \"genres!: Vec<Genre>\",\n EXISTS(\n SELECT * FROM book_annotations WHERE book = b.id\n ) AS \"annotation_exists!: bool\",\n (\n SELECT\n JSONB_BUILD_OBJECT(\n 'id', sources.id,\n 'name', sources.name\n )\n FROM sources\n WHERE sources.id = b.source\n ) AS \"source!: Source\",\n b.remote_id,\n b.is_deleted,\n b.pages\n FROM books b\n WHERE b.source = $1 AND b.remote_id = $2\n ",
|
|
"describe": {
|
|
"columns": [
|
|
{
|
|
"ordinal": 0,
|
|
"name": "id",
|
|
"type_info": "Int4"
|
|
},
|
|
{
|
|
"ordinal": 1,
|
|
"name": "title",
|
|
"type_info": "Varchar"
|
|
},
|
|
{
|
|
"ordinal": 2,
|
|
"name": "lang",
|
|
"type_info": "Varchar"
|
|
},
|
|
{
|
|
"ordinal": 3,
|
|
"name": "file_type",
|
|
"type_info": "Varchar"
|
|
},
|
|
{
|
|
"ordinal": 4,
|
|
"name": "year",
|
|
"type_info": "Int2"
|
|
},
|
|
{
|
|
"ordinal": 5,
|
|
"name": "available_types!: Vec<String>",
|
|
"type_info": "TextArray"
|
|
},
|
|
{
|
|
"ordinal": 6,
|
|
"name": "uploaded",
|
|
"type_info": "Date"
|
|
},
|
|
{
|
|
"ordinal": 7,
|
|
"name": "authors!: Vec<Author>",
|
|
"type_info": "Jsonb"
|
|
},
|
|
{
|
|
"ordinal": 8,
|
|
"name": "translators!: Vec<Author>",
|
|
"type_info": "Jsonb"
|
|
},
|
|
{
|
|
"ordinal": 9,
|
|
"name": "sequences!: Vec<Sequence>",
|
|
"type_info": "Jsonb"
|
|
},
|
|
{
|
|
"ordinal": 10,
|
|
"name": "genres!: Vec<Genre>",
|
|
"type_info": "Jsonb"
|
|
},
|
|
{
|
|
"ordinal": 11,
|
|
"name": "annotation_exists!: bool",
|
|
"type_info": "Bool"
|
|
},
|
|
{
|
|
"ordinal": 12,
|
|
"name": "source!: Source",
|
|
"type_info": "Jsonb"
|
|
},
|
|
{
|
|
"ordinal": 13,
|
|
"name": "remote_id",
|
|
"type_info": "Int4"
|
|
},
|
|
{
|
|
"ordinal": 14,
|
|
"name": "is_deleted",
|
|
"type_info": "Bool"
|
|
},
|
|
{
|
|
"ordinal": 15,
|
|
"name": "pages",
|
|
"type_info": "Int4"
|
|
}
|
|
],
|
|
"parameters": {
|
|
"Left": [
|
|
"Int2",
|
|
"Int4"
|
|
]
|
|
},
|
|
"nullable": [
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
null,
|
|
false,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
false,
|
|
false,
|
|
true
|
|
]
|
|
},
|
|
"hash": "e6cf55988b86d72c594915c9e5a015d71106794415fb267d6f71d512e9831012"
|
|
}
|