diff options
| author | Zephyrrus <[email protected]> | 2020-07-01 20:40:10 +0300 |
|---|---|---|
| committer | Zephyrrus <[email protected]> | 2020-07-01 20:40:10 +0300 |
| commit | e9ef148d7498b7068274a4141d5591cc8a64016e (patch) | |
| tree | 3d3afe519bf12b611a61e7435977925c019f33e1 /src/api/routes/albums | |
| parent | chore: add thumb generator for migration (diff) | |
| download | host.fuwn.me-e9ef148d7498b7068274a4141d5591cc8a64016e.tar.xz host.fuwn.me-e9ef148d7498b7068274a4141d5591cc8a64016e.zip | |
feat: backend pagination for albums
Diffstat (limited to 'src/api/routes/albums')
| -rw-r--r-- | src/api/routes/albums/albumFullGET.js | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/api/routes/albums/albumFullGET.js b/src/api/routes/albums/albumFullGET.js index 93b56ce..cf434e4 100644 --- a/src/api/routes/albums/albumFullGET.js +++ b/src/api/routes/albums/albumFullGET.js @@ -13,12 +13,29 @@ class albumGET extends Route { const album = await db.table('albums').where({ id, userId: user.id }).first(); if (!album) return res.status(404).json({ message: 'Album not found' }); - const files = await db.table('albumsFiles') + let count = 0; + + let files = db.table('albumsFiles') .where({ albumId: id }) .join('files', 'albumsFiles.fileId', 'files.id') .select('files.id', 'files.name') .orderBy('files.id', 'desc'); + const { page, limit = 100 } = req.query; + if (page && page >= 0) { + files = await files.offset((page - 1) * limit).limit(limit); + + const dbRes = await db.table('albumsFiles') + .count('* as count') + .where({ albumId: id }) + .first(); + + count = dbRes.count; + } else { + files = await files; // execute the query + count = files.length; + } + for (let file of files) { file = Util.constructFilePublicLink(file); } @@ -26,7 +43,8 @@ class albumGET extends Route { return res.json({ message: 'Successfully retrieved album', name: album.name, - files + files, + count }); } } |