From d9b077d3b21446396efc6f3f2d75a2521ab1e390 Mon Sep 17 00:00:00 2001 From: RobinTTY Date: Fri, 1 Nov 2024 19:03:06 +0100 Subject: [PATCH] Add AuthenticationRequests table --- .../Models/AuthenticationRequest.cs | 36 ++- .../Models/ThirdPartyDataType.cs | 3 +- .../ApplicationDbContext.cs | 6 +- ...yDataRetrievalMetadataTypeConfiguration.cs | 17 -- ...yDataRetrievalMetadataTypeConfiguration.cs | 22 ++ ..._AddAuthenticationRequestTable.Designer.cs | 259 ++++++++++++++++++ ...101152247_AddAuthenticationRequestTable.cs | 46 ++++ .../ApplicationDbContextModelSnapshot.cs | 95 ++++--- ...irdPartyDataRetrievalMetadataRepository.cs | 1 - ...onalFinanceDashboard.Infrastructure.csproj | 4 - 10 files changed, 424 insertions(+), 65 deletions(-) delete mode 100644 src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Entities/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs create mode 100644 src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/EntityConfigurations/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs create mode 100644 src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.Designer.cs create mode 100644 src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.cs diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/AuthenticationRequest.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/AuthenticationRequest.cs index d987e12..d9e256f 100644 --- a/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/AuthenticationRequest.cs +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/AuthenticationRequest.cs @@ -7,10 +7,6 @@ public class AuthenticationRequest /// public string Id { get; set; } /// - /// The ids of the accounts associated with this authentication request. - /// - public IEnumerable AssociatedAccounts { get; set; } - /// /// The status of this authentication request. /// public AuthenticationStatus Status { get; set; } @@ -18,20 +14,40 @@ public class AuthenticationRequest /// A which can be used to start the authentication via the third party provider. /// public Uri AuthenticationLink { get; set; } + /// + /// The ids of the accounts associated with this authentication request. + /// + public List AssociatedAccounts { get; set; } + + /// + /// Creates a new instance of . + /// Required constructor for Ef Core. + /// + /// The id of this authentication request. + /// The status of this authentication request. + /// A which can be used to start the authentication via the third party provider. + public AuthenticationRequest(string id, AuthenticationStatus status, Uri authenticationLink) + { + Id = id; + Status = status; + AuthenticationLink = authenticationLink; + AssociatedAccounts = []; + } /// /// Creates a new instance of . /// /// The id of this authentication request. - /// The ids of the accounts associated with this authentication request. /// The status of this authentication request. /// A which can be used to start the authentication via the third party provider. - public AuthenticationRequest(string id, IEnumerable associatedAccounts, AuthenticationStatus status, Uri authenticationLink) + /// The ids of the accounts associated with this authentication request. + public AuthenticationRequest(string id, AuthenticationStatus status, Uri authenticationLink, + List associatedAccounts) { Id = id; - AssociatedAccounts = associatedAccounts; Status = status; AuthenticationLink = authenticationLink; + AssociatedAccounts = associatedAccounts; } } @@ -44,20 +60,24 @@ public enum AuthenticationStatus /// A user action is required for the authentication to proceed. /// RequiresUserAction, + /// /// The authentication is currently pending. /// Pending, + /// /// The authentication was successful and associated accounts can be used. /// Successful, + /// /// The authentication failed. /// Failed, + /// /// The authentication has expired and is no longer valid. /// Expired -} \ No newline at end of file +} diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/ThirdPartyDataType.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/ThirdPartyDataType.cs index 9755cc4..f94e7c4 100644 --- a/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/ThirdPartyDataType.cs +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Core/Models/ThirdPartyDataType.cs @@ -3,5 +3,6 @@ public enum ThirdPartyDataType { Undefined, - BankingInstitutions + BankingInstitutions, + AuthenticationRequests } diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/ApplicationDbContext.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/ApplicationDbContext.cs index d5e6365..6260614 100644 --- a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/ApplicationDbContext.cs +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/ApplicationDbContext.cs @@ -1,6 +1,5 @@ using Microsoft.EntityFrameworkCore; using RobinTTY.PersonalFinanceDashboard.Core.Models; -using RobinTTY.PersonalFinanceDashboard.Infrastructure.Entities; namespace RobinTTY.PersonalFinanceDashboard.Infrastructure; @@ -29,6 +28,11 @@ public sealed class ApplicationDbContext : DbContext public DbSet BankAccounts => Set(); + /// + /// holding authentication requests of the application. + /// + public DbSet AuthenticationRequests => Set(); + /// /// Creates a new instance of . /// diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Entities/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Entities/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs deleted file mode 100644 index 2ba62b5..0000000 --- a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Entities/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using RobinTTY.PersonalFinanceDashboard.Core.Models; -using RobinTTY.PersonalFinanceDashboard.ThirdPartyDataProviders.Models; - -namespace RobinTTY.PersonalFinanceDashboard.Infrastructure.Entities.Configurations; - -public class - ThirdPartyDataRetrievalMetadataTypeConfiguration : IEntityTypeConfiguration -{ - public void Configure(EntityTypeBuilder builder) - { - builder.HasData(new ThirdPartyDataRetrievalMetadata(new Guid("f948e52f-ad17-44b8-9cdf-e0b952f139b3"), - ThirdPartyDataType.BankingInstitutions, ThirdPartyDataSource.GoCardless, DateTime.MinValue, - TimeSpan.FromDays(7))); - } -} diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/EntityConfigurations/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/EntityConfigurations/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs new file mode 100644 index 0000000..2947be3 --- /dev/null +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/EntityConfigurations/ThirdPartyDataRetrievalMetadataTypeConfiguration.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using RobinTTY.PersonalFinanceDashboard.Core.Models; +using RobinTTY.PersonalFinanceDashboard.ThirdPartyDataProviders.Models; + +namespace RobinTTY.PersonalFinanceDashboard.Infrastructure.EntityConfigurations; + +public class + ThirdPartyDataRetrievalMetadataTypeConfiguration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasData( + new ThirdPartyDataRetrievalMetadata(new Guid("f948e52f-ad17-44b8-9cdf-e0b952f139b3"), + ThirdPartyDataType.BankingInstitutions, ThirdPartyDataSource.GoCardless, DateTime.MinValue, + TimeSpan.FromDays(7)), + new ThirdPartyDataRetrievalMetadata(new Guid("0b53ec13-5a8c-4910-bfff-1ba06c3f3859"), + ThirdPartyDataType.AuthenticationRequests, ThirdPartyDataSource.GoCardless, DateTime.MinValue, + TimeSpan.FromDays(7)) + ); + } +} diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.Designer.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.Designer.cs new file mode 100644 index 0000000..ea7e4f3 --- /dev/null +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.Designer.cs @@ -0,0 +1,259 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using RobinTTY.PersonalFinanceDashboard.Infrastructure; + +#nullable disable + +namespace RobinTTY.PersonalFinanceDashboard.Infrastructure.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20241101152247_AddAuthenticationRequestTable")] + partial class AddAuthenticationRequestTable + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.8"); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.AuthenticationRequest", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AssociatedAccounts") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AuthenticationLink") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationRequests"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.BankAccount", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AccountType") + .HasColumnType("TEXT"); + + b.Property("AssociatedInstitutionId") + .HasColumnType("TEXT"); + + b.Property("Balance") + .HasColumnType("TEXT"); + + b.Property("Bban") + .HasColumnType("TEXT"); + + b.Property("Bic") + .HasColumnType("TEXT"); + + b.Property("Currency") + .HasColumnType("TEXT"); + + b.Property("Description") + .HasColumnType("TEXT"); + + b.Property("Iban") + .HasColumnType("TEXT"); + + b.Property("Name") + .HasColumnType("TEXT"); + + b.Property("OwnerName") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("AssociatedInstitutionId"); + + b.ToTable("BankAccounts"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.BankingInstitution", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("Bic") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Countries") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LogoUri") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("BankingInstitutions"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.Tag", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("Color") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Description") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("TransactionId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("TransactionId"); + + b.ToTable("Tags"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.ThirdPartyDataRetrievalMetadata", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DataSource") + .HasColumnType("INTEGER"); + + b.Property("DataType") + .HasColumnType("INTEGER"); + + b.Property("LastRetrievalTime") + .HasColumnType("TEXT"); + + b.Property("RetrievalInterval") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ThirdPartyDataRetrievalMetadata"); + + b.HasData( + new + { + Id = new Guid("f948e52f-ad17-44b8-9cdf-e0b952f139b3"), + DataSource = 1, + DataType = 1, + LastRetrievalTime = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + RetrievalInterval = new TimeSpan(7, 0, 0, 0, 0) + }, + new + { + Id = new Guid("0b53ec13-5a8c-4910-bfff-1ba06c3f3859"), + DataSource = 1, + DataType = 2, + LastRetrievalTime = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + RetrievalInterval = new TimeSpan(7, 0, 0, 0, 0) + }); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.Transaction", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccountId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Amount") + .HasColumnType("TEXT"); + + b.Property("BankAccountId") + .HasColumnType("TEXT"); + + b.Property("Category") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Currency") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Notes") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Payee") + .HasColumnType("TEXT"); + + b.Property("Payer") + .HasColumnType("TEXT"); + + b.Property("ValueDate") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("BankAccountId"); + + b.ToTable("Transactions"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.BankAccount", b => + { + b.HasOne("RobinTTY.PersonalFinanceDashboard.Core.Models.BankingInstitution", "AssociatedInstitution") + .WithMany() + .HasForeignKey("AssociatedInstitutionId"); + + b.Navigation("AssociatedInstitution"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.Tag", b => + { + b.HasOne("RobinTTY.PersonalFinanceDashboard.Core.Models.Transaction", null) + .WithMany("Tags") + .HasForeignKey("TransactionId"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.Transaction", b => + { + b.HasOne("RobinTTY.PersonalFinanceDashboard.Core.Models.BankAccount", null) + .WithMany("Transactions") + .HasForeignKey("BankAccountId"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.BankAccount", b => + { + b.Navigation("Transactions"); + }); + + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.Transaction", b => + { + b.Navigation("Tags"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.cs new file mode 100644 index 0000000..38427da --- /dev/null +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/20241101152247_AddAuthenticationRequestTable.cs @@ -0,0 +1,46 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace RobinTTY.PersonalFinanceDashboard.Infrastructure.Migrations +{ + /// + public partial class AddAuthenticationRequestTable : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AuthenticationRequests", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + AssociatedAccounts = table.Column(type: "TEXT", nullable: false), + Status = table.Column(type: "INTEGER", nullable: false), + AuthenticationLink = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AuthenticationRequests", x => x.Id); + }); + + migrationBuilder.InsertData( + table: "ThirdPartyDataRetrievalMetadata", + columns: new[] { "Id", "DataSource", "DataType", "LastRetrievalTime", "RetrievalInterval" }, + values: new object[] { new Guid("0b53ec13-5a8c-4910-bfff-1ba06c3f3859"), 1, 2, new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(7, 0, 0, 0, 0) }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AuthenticationRequests"); + + migrationBuilder.DeleteData( + table: "ThirdPartyDataRetrievalMetadata", + keyColumn: "Id", + keyValue: new Guid("0b53ec13-5a8c-4910-bfff-1ba06c3f3859")); + } + } +} diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/ApplicationDbContextModelSnapshot.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/ApplicationDbContextModelSnapshot.cs index d83714e..40cc6ab 100644 --- a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Migrations/ApplicationDbContextModelSnapshot.cs @@ -17,6 +17,27 @@ protected override void BuildModel(ModelBuilder modelBuilder) #pragma warning disable 612, 618 modelBuilder.HasAnnotation("ProductVersion", "8.0.8"); + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.AuthenticationRequest", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AssociatedAccounts") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AuthenticationLink") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationRequests"); + }); + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.BankAccount", b => { b.Property("Id") @@ -113,6 +134,47 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Tags"); }); + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.ThirdPartyDataRetrievalMetadata", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DataSource") + .HasColumnType("INTEGER"); + + b.Property("DataType") + .HasColumnType("INTEGER"); + + b.Property("LastRetrievalTime") + .HasColumnType("TEXT"); + + b.Property("RetrievalInterval") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ThirdPartyDataRetrievalMetadata"); + + b.HasData( + new + { + Id = new Guid("f948e52f-ad17-44b8-9cdf-e0b952f139b3"), + DataSource = 1, + DataType = 1, + LastRetrievalTime = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + RetrievalInterval = new TimeSpan(7, 0, 0, 0, 0) + }, + new + { + Id = new Guid("0b53ec13-5a8c-4910-bfff-1ba06c3f3859"), + DataSource = 1, + DataType = 2, + LastRetrievalTime = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + RetrievalInterval = new TimeSpan(7, 0, 0, 0, 0) + }); + }); + modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.Transaction", b => { b.Property("Id") @@ -156,39 +218,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Transactions"); }); - modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Infrastructure.Entities.ThirdPartyDataRetrievalMetadata", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT"); - - b.Property("DataSource") - .HasColumnType("INTEGER"); - - b.Property("DataType") - .HasColumnType("INTEGER"); - - b.Property("LastRetrievalTime") - .HasColumnType("TEXT"); - - b.Property("RetrievalInterval") - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("ThirdPartyDataRetrievalMetadata"); - - b.HasData( - new - { - Id = new Guid("f948e52f-ad17-44b8-9cdf-e0b952f139b3"), - DataSource = 1, - DataType = 1, - LastRetrievalTime = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), - RetrievalInterval = new TimeSpan(7, 0, 0, 0, 0) - }); - }); - modelBuilder.Entity("RobinTTY.PersonalFinanceDashboard.Core.Models.BankAccount", b => { b.HasOne("RobinTTY.PersonalFinanceDashboard.Core.Models.BankingInstitution", "AssociatedInstitution") diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Repositories/ThirdPartyDataRetrievalMetadataRepository.cs b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Repositories/ThirdPartyDataRetrievalMetadataRepository.cs index b94f324..cc4a79a 100644 --- a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Repositories/ThirdPartyDataRetrievalMetadataRepository.cs +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/Repositories/ThirdPartyDataRetrievalMetadataRepository.cs @@ -1,6 +1,5 @@ using Microsoft.EntityFrameworkCore; using RobinTTY.PersonalFinanceDashboard.Core.Models; -using RobinTTY.PersonalFinanceDashboard.Infrastructure.Entities; using RobinTTY.PersonalFinanceDashboard.ThirdPartyDataProviders.Models; namespace RobinTTY.PersonalFinanceDashboard.Infrastructure.Repositories; diff --git a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/RobinTTY.PersonalFinanceDashboard.Infrastructure.csproj b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/RobinTTY.PersonalFinanceDashboard.Infrastructure.csproj index e2c92c1..b5344a2 100644 --- a/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/RobinTTY.PersonalFinanceDashboard.Infrastructure.csproj +++ b/src/server/RobinTTY.PersonalFinanceDashboard.Infrastructure/RobinTTY.PersonalFinanceDashboard.Infrastructure.csproj @@ -17,8 +17,4 @@ - - - -