GeneticObservationController.java

/*
 * Copyright 2026 Global Crop Diversity Trust
 * Licensed under the Apache License, Version 2.0
 * See LICENSE file in project root folder or http://www.apache.org/licenses/LICENSE-2.0
 */

package org.gringlobal.api.v2.impl;

import org.gringlobal.api.ApiBaseController;
import org.gringlobal.api.model.GeneticObservationDTO;
import org.gringlobal.api.model.GeneticObservationDataDTO;
import org.gringlobal.api.v2.FilteredCRUDController;
import org.gringlobal.api.v2.facade.GeneticObservationApiService;
import org.gringlobal.api.v2.facade.GeneticObservationDataApiService;
import org.gringlobal.model.GeneticObservation;
import org.gringlobal.model.GeneticObservationData;
import org.gringlobal.service.filter.GeneticObservationDataFilter;
import org.gringlobal.service.filter.GeneticObservationFilter;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.v3.oas.annotations.tags.Tag;

@RestController("geneticObservationApi2")
@RequestMapping(GeneticObservationController.API_URL)
@PreAuthorize("isAuthenticated()")
@Tag(name = "Genetics")
public class GeneticObservationController
		extends FilteredCRUDController<GeneticObservationDTO, GeneticObservation, GeneticObservationApiService, GeneticObservationFilter> {

	/** The Constant API_URL. */
	public static final String API_URL = ApiBaseController.APIv2_BASE + "/genetic-observation";

	@RestController("geneticObservationDataApi2")
	@RequestMapping(GeneticObservationController.GeneticObservationDataController.API_URL)
	@PreAuthorize("isAuthenticated()")
	@Tag(name = "Genetics")
	public static class GeneticObservationDataController
			extends FilteredCRUDController<GeneticObservationDataDTO, GeneticObservationData, GeneticObservationDataApiService, GeneticObservationDataFilter> {

		/** The Constant API_URL. */
		public static final String API_URL = GeneticObservationController.API_URL + "/data";

	}
}