package io.delphiplatform.api.v3.view;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

import io.delphiplatform.api.v3.model.gras.Project;
import io.delphiplatform.api.v3.model.gras.Projects;
import io.delphiplatform.api.v3.rdb.service.ProjectService;
import io.delphiplatform.api.v3.view.util.Params;

@Controller
@RequestMapping("${spring.data.rest.base-path:/v3}")
public class ProjectsApiController implements ProjectsApi {


    private final ProjectService projectService;

    public ProjectsApiController(ProjectService projectService) {
        this.projectService = projectService;
    }

    @Override
    public ResponseEntity<Project> findOne(String projectId) {
        return ResponseEntity.ok(projectService.findOne(projectId));
    }

    @Override
    public ResponseEntity<Projects> getSearchData(Params params) {
        List<Project> items = projectService.find(params);
        return ResponseEntity.ok(new Projects().items(items)
            .nextCursor(params.getNextCursor())
            .count(items.size()));
    }
}
