< Summary - pva.SuperV

Information
Class: pva.SuperV.Api.Routes.Projects.ProjectEndpoints
Assembly: pva.SuperV.Api
File(s): /home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Routes/Projects/ProjectEndpoints.cs
Tag: dotnet-ubuntu_22190969454
Line coverage
100%
Covered lines: 133
Uncovered lines: 0
Coverable lines: 133
Total lines: 159
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MapProjectEndpoints(...)100%11100%

File(s)

/home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Routes/Projects/ProjectEndpoints.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Mvc;
 2using pva.SuperV.Model;
 3using pva.SuperV.Model.Projects;
 4using pva.SuperV.Model.Services;
 5using System.ComponentModel;
 6
 7namespace pva.SuperV.Api.Routes.Projects
 8{
 9    public static class ProjectEndpoints
 10    {
 11        public static WebApplication MapProjectEndpoints(this WebApplication app)
 14512        {
 14513            RouteGroupBuilder projectsApi = app.MapGroup("/projects");
 14514            projectsApi.MapGet("/",
 14515                async (IProjectService projectService)
 116                    => await GetProjects.Handle(projectService))
 14517                .WithName("GetProjects")
 14518                .WithDisplayName("GetProjects")
 14519                .WithSummary("Gets the list of available projects")
 14520                .WithDescription("Gets the list of available projects")
 14521                .Produces<List<ProjectModel>>(StatusCodes.Status200OK);
 22
 14523            projectsApi.MapPost("/search",
 14524                async (IProjectService projectService, [FromBody] ProjectPagedSearchRequest search)
 125                    => await SearchProjects.Handle(projectService, search))
 14526                .WithName("SearchProjects")
 14527                .WithDisplayName("SearchProjects")
 14528                .WithSummary("Search available projects by page")
 14529                .WithDescription("Search available projects by page")
 14530                .Produces<PagedSearchResult<ProjectModel>>(StatusCodes.Status200OK);
 31
 14532            projectsApi.MapGet("/{projectId}",
 14533                async (IProjectService projectService,
 14534                [Description("ID of project")] string projectId)
 235                    => await GetProject.Handle(projectService, projectId))
 14536                .WithName("GetProject")
 14537                .WithDisplayName("GetProject")
 14538                .WithSummary("Gets a project by its ID")
 14539                .WithDescription("Gets a project by its ID")
 14540                .Produces<ProjectModel>(StatusCodes.Status200OK)
 14541                .Produces<string>(StatusCodes.Status404NotFound);
 42
 14543            projectsApi.MapPost("/create",
 14544                async (IProjectService projectService,
 14545                [Description("Project creation request")][FromBody] CreateProjectRequest createProjectRequest)
 246                    => await CreateProject.Handle(projectService, createProjectRequest))
 14547                .WithName("CreateBlankProject")
 14548                .WithDisplayName("CreateBlankProjectFromRunnable")
 14549                .WithSummary("Creates a blank WIP project")
 14550                .WithDescription("Creates a blank WIP project")
 14551                .Produces<ProjectModel>(StatusCodes.Status201Created)
 14552                .Produces<string>(StatusCodes.Status404NotFound);
 53
 14554            projectsApi.MapPost("/create/{runnableProjectId}",
 14555                async (IProjectService projectService,
 14556                [Description(" ID of runnable project")] string runnableProjectId)
 257                    => await CreateProjectFromRunnable.Handle(projectService, runnableProjectId))
 14558                .WithName("CreateProjectFromRunnable")
 14559                .WithDisplayName("CreateProjectFromRunnable")
 14560                .WithSummary("Creates a WIP project from a runnable project")
 14561                .WithDescription("Creates a WIP project from a runnable project")
 14562                .Produces<ProjectModel>(StatusCodes.Status201Created)
 14563                .Produces<string>(StatusCodes.Status404NotFound);
 64
 14565            projectsApi.MapPut("/{projectId}",
 14566                async (IProjectService projectService,
 14567                [Description(" ID of project")] string projectId,
 14568                [Description("Project update request")][FromBody] UpdateProjectRequest updateProjectRequest)
 169                    => await UpdateProject.Handle(projectService, projectId, updateProjectRequest))
 14570                .WithName("UpdateProject")
 14571                .WithDisplayName("UpdateProject")
 14572                .WithSummary("Updates a project")
 14573                .WithDescription("Updates a project")
 14574                .Produces<ProjectModel>(StatusCodes.Status200OK)
 14575                .Produces<string>(StatusCodes.Status404NotFound);
 76
 14577            projectsApi.MapPost("/{wipProjectId}/build",
 14578                async (IProjectService projectService,
 14579                        [Description("ID of WIP project")] string wipProjectId)
 380                    => await BuildProject.Handle(projectService, wipProjectId))
 14581                .WithName("BuildProject")
 14582                .WithSummary("Build a runnable project from a WIP project")
 14583                .WithDescription("Build a runnable project from a WIP project")
 14584                .Produces<ProjectModel>(StatusCodes.Status200OK)
 14585                .Produces<string>(StatusCodes.Status404NotFound)
 14586                .Produces<string>(StatusCodes.Status400BadRequest);
 87
 14588            projectsApi.MapGet("/{projectId}/definitions",
 14589                async (IProjectService projectService,
 14590                        [Description("ID of project")] string projectId)
 291                    => await SaveProjectDefinitions.Handle(projectService, projectId))
 14592                .WithName("SaveProjectDefinitions")
 14593                .WithSummary("Saves the definitions of project")
 14594                .WithDescription("Saves the definitions of project")
 14595                .Produces<Stream>(StatusCodes.Status200OK, "application/octet-stream")
 14596                .Produces<string>(StatusCodes.Status404NotFound)
 14597                .Produces<string>(StatusCodes.Status400BadRequest);
 98
 14599            projectsApi.MapPost("/load-from-definitions",
 145100                async (IProjectService projectService,
 145101                [Description("File data containing project definitions")]
 145102                [FromBody] byte[] fileData)
 1103                    => await LoadProjectFromDefinitions.Handle(projectService, fileData))
 145104                .WithName("LoadProjectFromDefinitions")
 145105                .WithSummary("Loads a project from a definition JSON")
 145106                .WithDescription("Loads a project from a definition JSON")
 145107                .Produces<ProjectModel>(StatusCodes.Status201Created)
 145108                .Produces<string>(StatusCodes.Status400BadRequest);
 109
 145110            projectsApi.MapGet("/{runnableProjectId}/instances",
 145111                 async (IProjectService projectService,
 145112                        [Description("ID of runnable project")] string runnableProjectId)
 3113                    => await SaveProjectInstances.Handle(projectService, runnableProjectId))
 145114                .WithName("SaveProjectInstances")
 145115                .WithSummary("Saves the instances of runnable project")
 145116                .WithDescription("Saves the instances of a runnable project")
 145117                .Produces<Stream>(StatusCodes.Status200OK, "application/octet-stream")
 145118                .Produces<string>(StatusCodes.Status404NotFound)
 145119                .Produces<string>(StatusCodes.Status400BadRequest);
 120
 145121            projectsApi.MapPost("/{runnableProjectId}/instances",
 145122                async (IProjectService projectService,
 145123                [Description("ID of runnable project")]
 145124                string runnableProjectId,
 145125                [Description("File data containing the instances")]
 145126                [FromBody] byte[] fileData)
 3127                    => await LoadProjectInstances.Handle(projectService, runnableProjectId, fileData))
 145128                .WithName("LoadProjectInstances")
 145129                .WithSummary("Loads runnable project instances from a JSON file")
 145130                .WithDescription("Loads runnable project instances from a JSON file")
 145131                .Produces(StatusCodes.Status200OK)
 145132                .Produces<string>(StatusCodes.Status404NotFound)
 145133                .Produces<string>(StatusCodes.Status400BadRequest);
 134
 145135            projectsApi.MapDelete("/{projectId}",
 145136                async (IProjectService projectService,
 145137                [Description("ID of project")] string projectId)
 1138                    => await UnloadProject.Handle(projectService, projectId))
 145139                .WithName("UnloadProject")
 145140                .WithSummary("Unloads a project")
 145141                .WithDescription("Unloads a project")
 145142                .Produces(StatusCodes.Status204NoContent)
 145143                .Produces<string>(StatusCodes.Status404NotFound)
 145144                .Produces<string>(StatusCodes.Status400BadRequest);
 145
 145146            projectsApi.MapGet("/{projectId}/topics",
 145147                async (IProjectService projectService,
 145148                [Description("ID of project")] string projectId)
 1149                    => await GetTopicNames.Handle(projectService, projectId))
 145150                .WithName("GetProjectTopicNames")
 145151                .WithDisplayName("GetProjectTopicNames")
 145152                .WithSummary("Gets the list of available notification topic names of a project")
 145153                .WithDescription("Gets the list of available notification topic names of a project")
 145154                .Produces<HashSet<string>>(StatusCodes.Status200OK);
 155
 145156            return app;
 145157        }
 158    }
 159}