Skip to content

Commit

Permalink
Added the maintainers controller and database migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
davewalker5 committed Mar 11, 2024
1 parent b29a503 commit 1c6f3a1
Show file tree
Hide file tree
Showing 16 changed files with 726 additions and 55 deletions.
116 changes: 116 additions & 0 deletions src/DroneFlightLog.Api/Controllers/MaintainersController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
using DroneFlightLog.Data.Entities;
using DroneFlightLog.Data.Exceptions;
using DroneFlightLog.Data.Interfaces;
using DroneFlightLog.Data.Sqlite;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;

namespace DroneFlightLog.Api.Controllers
{
[Authorize]
[ApiController]
[ApiConventionType(typeof(DefaultApiConventions))]
[Route("[controller]")]
public class MaintainersController : Controller
{
private readonly IDroneFlightLogFactory<DroneFlightLogDbContext> _factory;

public MaintainersController(IDroneFlightLogFactory<DroneFlightLogDbContext> factory)
{
_factory = factory;
}

[HttpGet]
[Route("{id}")]
public async Task<ActionResult<Maintainer>> GetMaintainerAsync(int id)
{
Maintainer maintainer;

try
{
maintainer = await _factory.Maintainers.GetMaintainerAsync(id);
}
catch (MaintainerNotFoundException)
{
return NotFound();
}

return maintainer;
}

[HttpGet]
[Route("")]
public async Task<ActionResult<List<Maintainer>>> GetMaintainersAsync()
{
List<Maintainer> maintainers = await _factory.Maintainers.GetMaintainersAsync().ToListAsync();

if (!maintainers.Any())
{
return NoContent();
}

return maintainers;
}

[HttpGet]
[Route("{firstNames}/{surname}")]
public async Task<ActionResult<Maintainer>> FindMaintainerAsync(string firstNames, string surname)
{
string decodedFirstNames = HttpUtility.UrlDecode(firstNames);
string decodedSurname = HttpUtility.UrlDecode(surname);
Maintainer maintainer = await _factory.Maintainers.FindMaintainerAsync(decodedFirstNames, decodedSurname);

if (maintainer == null)
{
return NotFound();
}

return maintainer;
}

[HttpPut]
[Route("")]
public async Task<ActionResult<Maintainer>> UpdateMaintainerAsync([FromBody] Maintainer template)
{
Maintainer maintainer;

try
{
maintainer = await _factory.Maintainers.UpdateMaintainerAsync(template.Id,
template.FirstNames,
template.Surname);
await _factory.Context.SaveChangesAsync();
}
catch (MaintainerNotFoundException)
{
return NotFound();
}

return maintainer;
}

[HttpPost]
[Route("")]
public async Task<ActionResult<Maintainer>> CreateMaintainerAsync([FromBody] Maintainer template)
{
Maintainer maintainer;

try
{
maintainer = await _factory.Maintainers.AddMaintainerAsync(template.FirstNames,
template.Surname);
await _factory.Context.SaveChangesAsync();
}
catch (MaintainerExistsException)
{
return BadRequest();
}

return maintainer;
}
}
}
2 changes: 1 addition & 1 deletion src/DroneFlightLog.Api/Controllers/OperatorsController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public async Task<ActionResult<Operator>> GetOperatorAsync(int id)
{
op = await _factory.Operators.GetOperatorAsync(id);
}
catch (LocationNotFoundException)
catch (OperatorNotFoundException)
{
return NotFound();
}
Expand Down
10 changes: 5 additions & 5 deletions src/DroneFlightLog.Api/DroneFlightLog.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.2.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.1" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.4.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.2" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<PackageId>DroneFlightLog.Data.InMemory</PackageId>
<PackageVersion>1.1.1.0</PackageVersion>
<PackageVersion>1.1.2.0</PackageVersion>
<PackOnBuild>true</PackOnBuild>
<Authors>Dave Walker</Authors>
<Copyright>Copyright (c) 2020, 2021, 2022, 2023 Dave Walker</Copyright>
<Copyright>Copyright (c) 2020, 2021, 2022, 2023, 2024 Dave Walker</Copyright>
<Owners>Dave Walker</Owners>
<PackageReleaseNotes>NuGet package and framework updates</PackageReleaseNotes>
<Summary>Drone Flight Logging In Memory Database Layer</Summary>
Expand All @@ -16,16 +16,16 @@
<PackageProjectUrl>https://github.com/davewalker5/DroneFlightLogDb</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<ReleaseVersion>1.1.1.0</ReleaseVersion>
<ReleaseVersion>1.1.2.0</ReleaseVersion>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\DroneFlightLog.Data\DroneFlightLog.Data.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.1">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Expand Down
12 changes: 6 additions & 6 deletions src/DroneFlightLog.Data.Sqlite/DroneFlightLog.Data.Sqlite.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<PackageId>DroneFlightLog.Data.Sqlite</PackageId>
<PackageVersion>1.1.1.0</PackageVersion>
<PackageVersion>1.1.2.0</PackageVersion>
<PackOnBuild>true</PackOnBuild>
<Authors>Dave Walker</Authors>
<Copyright>Copyright (c) 2020, 2021, 2022, 2023 Dave Walker</Copyright>
<Copyright>Copyright (c) 2020, 2021, 2022, 2023, 2024 Dave Walker</Copyright>
<Owners>Dave Walker</Owners>
<PackageReleaseNotes>NuGet package and framework updates</PackageReleaseNotes>
<Summary>Drone Flight Logging SQLite Database Layer</Summary>
Expand All @@ -16,19 +16,19 @@
<PackageProjectUrl>https://github.com/davewalker5/DroneFlightLogDb</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<ReleaseVersion>1.1.1.0</ReleaseVersion>
<ReleaseVersion>1.1.2.0</ReleaseVersion>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\DroneFlightLog.Data\DroneFlightLog.Data.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.1">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
</ItemGroup>
Expand Down

0 comments on commit 1c6f3a1

Please sign in to comment.