Update API JS docs

This commit is contained in:
advplyr 2024-08-11 17:01:25 -05:00
parent 2472b86284
commit e53ac6566b
24 changed files with 390 additions and 175 deletions

View file

@ -1,3 +1,4 @@
const { Request, Response, NextFunction } = require('express')
const Sequelize = require('sequelize')
const Logger = require('../Logger')
const SocketAuthority = require('../SocketAuthority')
@ -5,14 +6,22 @@ const Database = require('../Database')
const Collection = require('../objects/Collection')
/**
* @typedef RequestUserObject
* @property {import('../models/User')} user
*
* @typedef {Request & RequestUserObject} RequestWithUser
*/
class CollectionController {
constructor() {}
/**
* POST: /api/collections
* Create new collection
* @param {*} req
* @param {*} res
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async create(req, res) {
const newCollection = new Collection()
@ -49,6 +58,12 @@ class CollectionController {
res.json(jsonExpanded)
}
/**
* GET: /api/collections
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async findAll(req, res) {
const collectionsExpanded = await Database.collectionModel.getOldCollectionsJsonExpanded(req.user)
res.json({
@ -56,6 +71,12 @@ class CollectionController {
})
}
/**
* GET: /api/collections/:id
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async findOne(req, res) {
const includeEntities = (req.query.include || '').split(',')
@ -71,8 +92,9 @@ class CollectionController {
/**
* PATCH: /api/collections/:id
* Update collection
* @param {*} req
* @param {*} res
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async update(req, res) {
let wasUpdated = false
@ -123,6 +145,12 @@ class CollectionController {
res.json(jsonExpanded)
}
/**
* DELETE: /api/collections/:id
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async delete(req, res) {
const jsonExpanded = await req.collection.getOldJsonExpanded()
@ -139,8 +167,9 @@ class CollectionController {
* POST: /api/collections/:id/book
* Add a single book to a collection
* Req.body { id: <library item id> }
* @param {*} req
* @param {*} res
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async addBook(req, res) {
const libraryItem = await Database.libraryItemModel.getOldById(req.body.id)
@ -172,8 +201,9 @@ class CollectionController {
* DELETE: /api/collections/:id/book/:bookId
* Remove a single book from a collection. Re-order books
* TODO: bookId is actually libraryItemId. Clients need updating to use bookId
* @param {*} req
* @param {*} res
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async removeBook(req, res) {
const libraryItem = await Database.libraryItemModel.getOldById(req.params.bookId)
@ -216,8 +246,9 @@ class CollectionController {
* POST: /api/collections/:id/batch/add
* Add multiple books to collection
* Req.body { books: <Array of library item ids> }
* @param {*} req
* @param {*} res
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async addBatch(req, res) {
// filter out invalid libraryItemIds
@ -274,8 +305,9 @@ class CollectionController {
* POST: /api/collections/:id/batch/remove
* Remove multiple books from collection
* Req.body { books: <Array of library item ids> }
* @param {*} req
* @param {*} res
*
* @param {RequestWithUser} req
* @param {Response} res
*/
async removeBatch(req, res) {
// filter out invalid libraryItemIds
@ -325,6 +357,12 @@ class CollectionController {
res.json(jsonExpanded)
}
/**
*
* @param {RequestWithUser} req
* @param {Response} res
* @param {NextFunction} next
*/
async middleware(req, res, next) {
if (req.params.id) {
const collection = await Database.collectionModel.findByPk(req.params.id)