From c58f6fe36441d58d27f572799e9788d7fd571b1c Mon Sep 17 00:00:00 2001 From: ThompsonNye Date: Sun, 22 Jun 2025 11:07:02 +0200 Subject: [PATCH] Drop IgnoreInCalculation property --- .../Consumptions/Consumption.cs | 5 - .../Consumptions/CreateConsumption.cs | 9 +- .../Consumptions/GetConsumption.cs | 10 +- .../Consumptions/GetConsumptions.cs | 3 +- .../Consumptions/UpdateConsumption.cs | 7 +- ...085121_DropIgnoreInCalculation.Designer.cs | 117 ++++++++++++++++++ .../20250622085121_DropIgnoreInCalculation.cs | 29 +++++ .../ApplicationDbContextModelSnapshot.cs | 6 +- .../migrations/migration.sql | 15 +++ .../ConsumptionFaker.cs | 4 +- .../CreateConsumptionRequestValidatorTests.cs | 1 - .../UpdateConsumptionRequestValidatorTests.cs | 3 +- 12 files changed, 179 insertions(+), 30 deletions(-) create mode 100644 src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.Designer.cs create mode 100644 src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.cs diff --git a/src/Vegasco.Server.Api/Consumptions/Consumption.cs b/src/Vegasco.Server.Api/Consumptions/Consumption.cs index 869b6af..ae2024f 100644 --- a/src/Vegasco.Server.Api/Consumptions/Consumption.cs +++ b/src/Vegasco.Server.Api/Consumptions/Consumption.cs @@ -14,8 +14,6 @@ public class Consumption public double Amount { get; set; } - public bool IgnoreInCalculation { get; set; } - public CarId CarId { get; set; } public virtual Car Car { get; set; } = null!; @@ -39,9 +37,6 @@ public class ConsumptionTableConfiguration : IEntityTypeConfiguration x.Amount) .IsRequired(); - builder.Property(x => x.IgnoreInCalculation) - .IsRequired(); - builder.Property(x => x.CarId) .IsRequired() .HasConversion(); diff --git a/src/Vegasco.Server.Api/Consumptions/CreateConsumption.cs b/src/Vegasco.Server.Api/Consumptions/CreateConsumption.cs index b33a610..4f2fb53 100644 --- a/src/Vegasco.Server.Api/Consumptions/CreateConsumption.cs +++ b/src/Vegasco.Server.Api/Consumptions/CreateConsumption.cs @@ -8,9 +8,9 @@ namespace Vegasco.Server.Api.Consumptions; public static class CreateConsumption { - public record Request(DateTimeOffset DateTime, double Distance, double Amount, bool IgnoreInCalculation, Guid CarId); + public record Request(DateTimeOffset DateTime, double Distance, double Amount, Guid CarId); - public record Response(Guid Id, DateTimeOffset DateTime, double Distance, double Amount, bool IgnoreInCalculation, Guid CarId); + public record Response(Guid Id, DateTimeOffset DateTime, double Distance, double Amount, Guid CarId); public static RouteHandlerBuilder MapEndpoint(IEndpointRouteBuilder builder) { @@ -58,12 +58,11 @@ public static class CreateConsumption return TypedResults.NotFound(); } - var consumption = new Consumption + Consumption consumption = new() { DateTime = request.DateTime.ToUniversalTime(), Distance = request.Distance, Amount = request.Amount, - IgnoreInCalculation = request.IgnoreInCalculation, CarId = new CarId(request.CarId) }; @@ -71,6 +70,6 @@ public static class CreateConsumption await dbContext.SaveChangesAsync(cancellationToken); return TypedResults.Created($"consumptions/{consumption.Id.Value}", - new Response(consumption.Id.Value, consumption.DateTime, consumption.Distance, consumption.Amount, consumption.IgnoreInCalculation, consumption.CarId.Value)); + new Response(consumption.Id.Value, consumption.DateTime, consumption.Distance, consumption.Amount, consumption.CarId.Value)); } } \ No newline at end of file diff --git a/src/Vegasco.Server.Api/Consumptions/GetConsumption.cs b/src/Vegasco.Server.Api/Consumptions/GetConsumption.cs index a8684dd..82b8dc7 100644 --- a/src/Vegasco.Server.Api/Consumptions/GetConsumption.cs +++ b/src/Vegasco.Server.Api/Consumptions/GetConsumption.cs @@ -4,7 +4,7 @@ namespace Vegasco.Server.Api.Consumptions; public static class GetConsumption { - public record Response(Guid Id, DateTimeOffset DateTime, double Distance, double Amount, bool IgnoreInCalculation, Guid CarId); + public record Response(Guid Id, DateTimeOffset DateTime, double Distance, double Amount, Guid CarId); public static RouteHandlerBuilder MapEndpoint(IEndpointRouteBuilder builder) { @@ -28,8 +28,12 @@ public static class GetConsumption return TypedResults.NotFound(); } - var response = new Response(consumption.Id.Value, consumption.DateTime, consumption.Distance, - consumption.Amount, consumption.IgnoreInCalculation, consumption.CarId.Value); + Response response = new( + consumption.Id.Value, + consumption.DateTime, + consumption.Distance, + consumption.Amount, + consumption.CarId.Value); return TypedResults.Ok(response); } } \ No newline at end of file diff --git a/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs b/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs index a472df0..1e07449 100644 --- a/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs +++ b/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs @@ -17,7 +17,6 @@ public static class GetConsumptions DateTimeOffset DateTime, double Distance, double Amount, - bool IgnoreInCalculation, Guid CarId); public class Request @@ -43,7 +42,7 @@ public static class GetConsumptions List consumptions = await dbContext.Consumptions .OrderByDescending(x => x.DateTime) .Select(x => - new ResponseDto(x.Id.Value, x.DateTime, x.Distance, x.Amount, x.IgnoreInCalculation, x.CarId.Value)) + new ResponseDto(x.Id.Value, x.DateTime, x.Distance, x.Amount, x.CarId.Value)) .ToListAsync(cancellationToken); ApiResponse apiResponse = new() diff --git a/src/Vegasco.Server.Api/Consumptions/UpdateConsumption.cs b/src/Vegasco.Server.Api/Consumptions/UpdateConsumption.cs index cb07f24..c598779 100644 --- a/src/Vegasco.Server.Api/Consumptions/UpdateConsumption.cs +++ b/src/Vegasco.Server.Api/Consumptions/UpdateConsumption.cs @@ -7,9 +7,9 @@ namespace Vegasco.Server.Api.Consumptions; public static class UpdateConsumption { - public record Request(DateTimeOffset DateTime, double Distance, double Amount, bool IgnoreInCalculation); + public record Request(DateTimeOffset DateTime, double Distance, double Amount); - public record Response(Guid Id, DateTimeOffset DateTime, double Distance, double Amount, bool IgnoreInCalculation, Guid CarId); + public record Response(Guid Id, DateTimeOffset DateTime, double Distance, double Amount, Guid CarId); public static RouteHandlerBuilder MapEndpoint(IEndpointRouteBuilder builder) { @@ -60,10 +60,9 @@ public static class UpdateConsumption consumption.DateTime = request.DateTime.ToUniversalTime(); consumption.Distance = request.Distance; consumption.Amount = request.Amount; - consumption.IgnoreInCalculation = request.IgnoreInCalculation; await dbContext.SaveChangesAsync(cancellationToken); - return TypedResults.Ok(new Response(consumption.Id.Value, consumption.DateTime, consumption.Distance, consumption.Amount, consumption.IgnoreInCalculation, consumption.CarId.Value)); + return TypedResults.Ok(new Response(consumption.Id.Value, consumption.DateTime, consumption.Distance, consumption.Amount, consumption.CarId.Value)); } } \ No newline at end of file diff --git a/src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.Designer.cs b/src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.Designer.cs new file mode 100644 index 0000000..0fefbc7 --- /dev/null +++ b/src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.Designer.cs @@ -0,0 +1,117 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Vegasco.Server.Api.Persistence; + +#nullable disable + +namespace Vegasco.Server.Api.Persistence.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20250622085121_DropIgnoreInCalculation")] + partial class DropIgnoreInCalculation + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Vegasco.Server.Api.Cars.Car", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Cars"); + }); + + modelBuilder.Entity("Vegasco.Server.Api.Consumptions.Consumption", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("double precision"); + + b.Property("CarId") + .HasColumnType("uuid"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Distance") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.HasIndex("CarId"); + + b.ToTable("Consumptions"); + }); + + modelBuilder.Entity("Vegasco.Server.Api.Users.User", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Vegasco.Server.Api.Cars.Car", b => + { + b.HasOne("Vegasco.Server.Api.Users.User", "User") + .WithMany("Cars") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Vegasco.Server.Api.Consumptions.Consumption", b => + { + b.HasOne("Vegasco.Server.Api.Cars.Car", "Car") + .WithMany("Consumptions") + .HasForeignKey("CarId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Car"); + }); + + modelBuilder.Entity("Vegasco.Server.Api.Cars.Car", b => + { + b.Navigation("Consumptions"); + }); + + modelBuilder.Entity("Vegasco.Server.Api.Users.User", b => + { + b.Navigation("Cars"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.cs b/src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.cs new file mode 100644 index 0000000..0a82444 --- /dev/null +++ b/src/Vegasco.Server.Api/Persistence/Migrations/20250622085121_DropIgnoreInCalculation.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Vegasco.Server.Api.Persistence.Migrations +{ + /// + public partial class DropIgnoreInCalculation : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "IgnoreInCalculation", + table: "Consumptions"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "IgnoreInCalculation", + table: "Consumptions", + type: "boolean", + nullable: false, + defaultValue: false); + } + } +} diff --git a/src/Vegasco.Server.Api/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs b/src/Vegasco.Server.Api/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs index c29dadd..6c23abf 100644 --- a/src/Vegasco.Server.Api/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/src/Vegasco.Server.Api/Persistence/Migrations/ApplicationDbContextModelSnapshot.cs @@ -6,7 +6,6 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using Vegasco.Server.Api.Persistence; - #nullable disable namespace Vegasco.Server.Api.Persistence.Migrations @@ -18,7 +17,7 @@ namespace Vegasco.Server.Api.Persistence.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("ProductVersion", "9.0.5") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -61,9 +60,6 @@ namespace Vegasco.Server.Api.Persistence.Migrations b.Property("Distance") .HasColumnType("double precision"); - b.Property("IgnoreInCalculation") - .HasColumnType("boolean"); - b.HasKey("Id"); b.HasIndex("CarId"); diff --git a/src/Vegasco.Server.Api/migrations/migration.sql b/src/Vegasco.Server.Api/migrations/migration.sql index da5b1ad..545aaff 100644 --- a/src/Vegasco.Server.Api/migrations/migration.sql +++ b/src/Vegasco.Server.Api/migrations/migration.sql @@ -66,5 +66,20 @@ BEGIN VALUES ('20240818105918_Initial', '9.0.5'); END IF; END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20250622085121_DropIgnoreInCalculation') THEN + ALTER TABLE "Consumptions" DROP COLUMN "IgnoreInCalculation"; + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20250622085121_DropIgnoreInCalculation') THEN + INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") + VALUES ('20250622085121_DropIgnoreInCalculation', '9.0.5'); + END IF; +END $EF$; COMMIT; diff --git a/tests/Vegasco.Server.Api.Tests.Integration/ConsumptionFaker.cs b/tests/Vegasco.Server.Api.Tests.Integration/ConsumptionFaker.cs index 681ea4a..36aece2 100644 --- a/tests/Vegasco.Server.Api.Tests.Integration/ConsumptionFaker.cs +++ b/tests/Vegasco.Server.Api.Tests.Integration/ConsumptionFaker.cs @@ -13,7 +13,6 @@ internal class ConsumptionFaker _faker.Date.RecentOffset(), _faker.Random.Int(1, 1_000), _faker.Random.Int(20, 70), - _faker.Random.Bool(), carId); } @@ -23,7 +22,6 @@ internal class ConsumptionFaker return new UpdateConsumption.Request( createRequest.DateTime, createRequest.Distance, - createRequest.Amount, - createRequest.IgnoreInCalculation); + createRequest.Amount); } } \ No newline at end of file diff --git a/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/CreateConsumptionRequestValidatorTests.cs b/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/CreateConsumptionRequestValidatorTests.cs index 2c7c3ab..0ede696 100644 --- a/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/CreateConsumptionRequestValidatorTests.cs +++ b/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/CreateConsumptionRequestValidatorTests.cs @@ -22,7 +22,6 @@ public class CreateConsumptionRequestValidatorTests _utcNow.AddDays(-1), 1, 1, - false, Guid.NewGuid()); } diff --git a/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/UpdateConsumptionRequestValidatorTests.cs b/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/UpdateConsumptionRequestValidatorTests.cs index fd34167..ef8d571 100644 --- a/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/UpdateConsumptionRequestValidatorTests.cs +++ b/tests/Vegasco.Server.Api.Tests.Unit/Consumptions/UpdateConsumptionRequestValidatorTests.cs @@ -22,8 +22,7 @@ public class UpdateConsumptionRequestValidatorTests _validRequest = new UpdateConsumption.Request( _utcNow.AddDays(-1), 1, - 1, - false); + 1); } [Fact]