import type { HttpContext } from '@adonisjs/core/http' import Computer from '#models/computer' import ComputerPublicTransformer from '#transformers/computer_public_transformer' export default class PublicComputerController { /** * Publicly display a computer via its share token. No authentication * required. Only resolves computers with sharing explicitly enabled. */ async show({ params, inertia, response }: HttpContext) { const computer = await Computer.query() .where('share_token', params.token) .andWhere('share_enabled', true) .preload('state') .preload('components', (componentsQuery) => { componentsQuery.preload('type') }) .preload('pictures', (picturesQuery) => { picturesQuery.orderBy('order') }) .first() if (!computer) { response.status(404) return inertia.render('errors/not_found', {}) } return inertia.render('share/show', { computer: ComputerPublicTransformer.transform(computer), }) } }