'use strict'
/** @typedef {import('@adonisjs/framework/src/Request')} Request */
/** @typedef {import('@adonisjs/framework/src/Response')} Response */
/** @typedef {import('@adonisjs/framework/src/View')} View */
const Book = use('App/Models/Book');
const UserChildUtils = use('App/Utils/UserChildUtils');
class BookPageAuth {
  /**
   * @param {object} ctx
   * @param {Request} ctx.request
   * @param {Function} next
   */
  async handle(ctx, next) {
    const {request, auth, response} = ctx;
    // call next to advance the request
    const user = auth.user;
    const bookId = request.params.bookId;
    const book = await Book.find(bookId);
    if (!book) {
      response.status(404);
      response.send({code: 404, message: 'Book not found'});
      return;
    }
    ctx.book = book;
    if (book.user_id) {
      // Belongs to a user. Check if the book user has a connection with this
      // user
      if (book.user_id === user.id)
        await next();
      else {
        const ownerConnections =
            await UserChildUtils.getUserConnections(book.user_id);
        console.log(ownerConnections);
      }
    }
    await next();
  }
}

module.exports = BookPageAuth
