import type { HttpContext } from '@adonisjs/core/http'; // import Person from 'App/Models/Person'; import Dataset from '#models/dataset'; import { StatusCodes } from 'http-status-codes'; // node ace make:controller Author export default class DatasetController { public async index({}: HttpContext) { // Select datasets with server_state 'published' or 'deleted' and sort by the last published date const datasets = await Dataset.query() .where(function (query) { query.where('server_state', 'published') .orWhere('server_state', 'deleted'); }) .preload('titles') .preload('identifier') .orderBy('server_date_published', 'desc'); return datasets; } public async findAll({ response }: HttpContext) { try { const datasets = await Dataset.query() .where('server_state', 'published') .orWhere('server_state', 'deleted') .preload('descriptions') // Preload any relationships you need .orderBy('server_date_published'); return response.status(StatusCodes.OK).json(datasets); } catch (error) { return response.status(500).json({ message: error.message || 'Some error occurred while retrieving datasets.', }); } } public async findOne({ params }: HttpContext) { const datasets = await Dataset.query() .where('publish_id', params.publish_id) .preload('titles') .preload('descriptions') .preload('user') .preload('authors', (builder) => { builder.orderBy('pivot_sort_order', 'asc'); }) .preload('contributors', (builder) => { builder.orderBy('pivot_sort_order', 'asc'); }) .preload('subjects') .preload('coverage') .preload('licenses') .preload('references') .preload('project') .preload('referenced_by', (builder) => { builder.preload('dataset', (builder) => { builder.preload('identifier'); }); }) .preload('files', (builder) => { builder.preload('hashvalues'); }) .preload('identifier') .firstOrFail(); return datasets; } }