mirror of
				https://gitlab.com/Alamantus/Readlebee.git
				synced 2025-11-04 10:17:03 +01:00 
			
		
		
		
	Add rename shelf API endpoint
This commit is contained in:
		
							parent
							
								
									cdcaef11c1
								
							
						
					
					
						commit
						237198cd47
					
				
					 2 changed files with 66 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -73,6 +73,24 @@ class ShelfController {
 | 
			
		|||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  async renameShelf (userId, id, name) {
 | 
			
		||||
    try {
 | 
			
		||||
      return await this.model.update({
 | 
			
		||||
        name,
 | 
			
		||||
      }, {
 | 
			
		||||
        where: {
 | 
			
		||||
          id,
 | 
			
		||||
          userId,
 | 
			
		||||
          isDeletable: true,  // You can only rename shelves not created by the system
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    } catch(error) {
 | 
			
		||||
      return {
 | 
			
		||||
        error,
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async getLastUpdatedTimestamp (shelf) {
 | 
			
		||||
    const lastEditedItem = await this.itemModel.findOne({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,6 +47,54 @@ async function routes(fastify, options) {
 | 
			
		|||
      message: 'api.shelf.create.success',
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  fastify.post('/api/shelf/rename', async (request, reply) => {
 | 
			
		||||
    if (!request.isLoggedInUser) {
 | 
			
		||||
      return reply.code(400).send({
 | 
			
		||||
        error: true,
 | 
			
		||||
        message: 'api.not_logged_in',
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (typeof request.body.shelfId === 'undefined') {
 | 
			
		||||
      return reply.code(400).send({
 | 
			
		||||
        error: true,
 | 
			
		||||
        message: 'api.shelf.rename.missing_id',
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (typeof request.body.shelfName === 'undefined') {
 | 
			
		||||
      return reply.code(400).send({
 | 
			
		||||
        error: true,
 | 
			
		||||
        message: 'api.shelf.rename.missing_name',
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    request.body.shelfName = request.body.shelfName.trim();
 | 
			
		||||
    
 | 
			
		||||
    const userShelves = await request.user.getShelves({
 | 
			
		||||
      attributes: ['name'],
 | 
			
		||||
    });
 | 
			
		||||
    const shelfNameIsValid = ShelfController.newShelfNameIsValid(
 | 
			
		||||
      request.body.shelfName,
 | 
			
		||||
      userShelves.map(shelf => shelf.name)
 | 
			
		||||
    );
 | 
			
		||||
    if (shelfNameIsValid !== true) {
 | 
			
		||||
      return reply.code(400).send(shelfNameIsValid);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const shelf = new ShelfController(fastify.models.Shelf, fastify.models.ShelfItem);
 | 
			
		||||
 | 
			
		||||
    const newShelf = shelf.renameShelf(request.user, request.body.shelfId, request.body.shelfName);
 | 
			
		||||
    if (typeof newShelf.error !== 'undefined' && newShelf.error !== false) {
 | 
			
		||||
      newShelf.message = 'api.shelf.rename.fail';
 | 
			
		||||
      return reply.code(400).send(newShelf);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return reply.send({
 | 
			
		||||
      error: false,
 | 
			
		||||
      message: 'api.shelf.rename.success',
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = routes;
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue