diff --git a/.gitignore b/.gitignore index c61018e..150009c 100644 --- a/.gitignore +++ b/.gitignore @@ -77,4 +77,6 @@ ClientBin/ *.publishsettings .idea/ -*.sqlite3 \ No newline at end of file +*.sqlite3 +/db.sqlite3-shm +/db.sqlite3-wal diff --git a/ThuisApi.csproj b/Api.csproj similarity index 71% rename from ThuisApi.csproj rename to Api.csproj index ed5ae6e..cddfdfd 100644 --- a/ThuisApi.csproj +++ b/Api.csproj @@ -1,26 +1,28 @@ - net8.0 + net10.0 enable enable + Api + latestmajor - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + diff --git a/Controllers/CardController.cs b/Controllers/CardController.cs index 104629d..c0da7e4 100644 --- a/Controllers/CardController.cs +++ b/Controllers/CardController.cs @@ -1,14 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Http; +using Data; +using Data.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using ThuisApi.Data; -using ThuisApi.Models; -namespace ThuisApi.Controllers +namespace Api.Controllers { [Route("api/[controller]")] [ApiController] diff --git a/Controllers/FreezerController.cs b/Controllers/FreezerController.cs index ca338f8..2fa7e93 100644 --- a/Controllers/FreezerController.cs +++ b/Controllers/FreezerController.cs @@ -1,15 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using Api.Models; using AutoMapper; -using Microsoft.AspNetCore.Http; +using Data; +using Data.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using ThuisApi.Data; -using ThuisApi.Models; -namespace ThuisApi.Controllers +namespace Api.Controllers { [Route("api/[controller]")] [ApiController] @@ -28,21 +24,11 @@ namespace ThuisApi.Controllers [HttpGet] public async Task>> GetFreezer() { - // Iterate over the freezers to add amount in freezer. - var freezers = await _context.Freezer.ToListAsync(); - var freezerResponse = new List(); - foreach (var freezer in freezers) + return Ok(new { freezers = _context.Freezer.Select(freezer => new FreezerDto { - freezerResponse.Add(new FreezerDto - { - FreezerId = freezer.FreezerId, - Name = freezer.Name, - AmountInFreezer = - await _context.FreezerItem.CountAsync(a => a.Freezer.FreezerId == freezer.FreezerId) - }); - } - - return Ok(freezerResponse.ToArray()); + FreezerId = freezer.FreezerId, Name = freezer.Name, + AmountInFreezer = _context.FreezerItem.Count(fi => fi.FreezerId == freezer.FreezerId) + })}); } // GET: api/Freezer/5 diff --git a/Controllers/FreezerItemController.cs b/Controllers/FreezerItemController.cs index 84aa984..ff2aeb2 100644 --- a/Controllers/FreezerItemController.cs +++ b/Controllers/FreezerItemController.cs @@ -1,17 +1,12 @@ -using System; -using System.Collections.Generic; using System.Globalization; -using System.Linq; -using System.Text.Json; -using System.Threading.Tasks; +using Api.Models; using AutoMapper; -using Microsoft.AspNetCore.Http; +using Data; +using Data.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using ThuisApi.Data; -using ThuisApi.Models; -namespace ThuisApi.Controllers +namespace Api.Controllers { [Route("api/[controller]")] [ApiController] @@ -42,9 +37,9 @@ namespace ThuisApi.Controllers return NotFound(); } - return Ok(_mapper.Map>(await _context.FreezerItem + return Ok(new {freezerItems = _mapper.Map>(await _context.FreezerItem .Where(a => a.FreezerId == id) - .ToArrayAsync())); + .ToArrayAsync())}); } // GET: api/FreezerItem/5 @@ -98,9 +93,9 @@ namespace ThuisApi.Controllers public async Task> PostFreezerItem(FreezerItemDto freezerItemDto) { var mappedItem = _mapper.Map(freezerItemDto); - if (mappedItem.DatePlacedInFreezer.ToString(CultureInfo.CurrentCulture).Equals("")) + if (mappedItem.AddedOn.ToString(CultureInfo.CurrentCulture).Equals("")) { - mappedItem.DatePlacedInFreezer = DateTime.Now; + mappedItem.AddedOn = DateTime.Now; } mappedItem.Freezer = diff --git a/Controllers/IndexController.cs b/Controllers/IndexController.cs index 5b97faa..d2a794e 100644 --- a/Controllers/IndexController.cs +++ b/Controllers/IndexController.cs @@ -1,7 +1,6 @@ -using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; -namespace ThuisApi.Controllers; +namespace Api.Controllers; public class IndexController : ControllerBase { diff --git a/Data/ThuisDbContext.cs b/Data/ThuisDbContext.cs deleted file mode 100644 index 95a0c05..0000000 --- a/Data/ThuisDbContext.cs +++ /dev/null @@ -1,51 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using ThuisApi.Models; - -namespace ThuisApi.Data; - -public class ThuisDbContext : DbContext -{ - public DbSet Cards { get; set; } - public DbSet Freezer { get; set; } - public DbSet FreezerItem { get; set; } - - public ThuisDbContext(DbContextOptions options) : base(options) - { - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - base.OnModelCreating(modelBuilder); - - modelBuilder.Entity().HasData( - new Freezer - { - FreezerId = 1, - Name = "Keuken" - }, - new Freezer - { - FreezerId = 2, - Name = "Berging" - }); - - modelBuilder.Entity().HasData( - new FreezerItem - { - FreezerItemId = 1, - FreezerId = 1, - Item = "Kip", - Amount = 1, - Drawer = 1 - - }, - new FreezerItem - { - FreezerItemId = 2, - FreezerId = 2, - Item = "1 pak van 2 hamburgers", - Amount = 1, - Drawer = 2 - }); - } -} \ No newline at end of file diff --git a/Migrations/20230406151852_InitialDb.Designer.cs b/Migrations/20230406151852_InitialDb.Designer.cs deleted file mode 100644 index 4b9a6c1..0000000 --- a/Migrations/20230406151852_InitialDb.Designer.cs +++ /dev/null @@ -1,131 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using ThuisApi.Data; - -#nullable disable - -namespace ThuisApi.Migrations -{ - [DbContext(typeof(ThuisDbContext))] - [Migration("20230406151852_InitialDb")] - partial class InitialDb - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.4"); - - modelBuilder.Entity("ThuisApi.Models.Card", b => - { - b.Property("CardId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Code") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Issuer") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("CardId"); - - b.ToTable("Cards"); - }); - - modelBuilder.Entity("ThuisApi.Models.Freezer", b => - { - b.Property("FreezerId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("FreezerId"); - - b.ToTable("Freezer"); - - b.HasData( - new - { - FreezerId = 1, - Name = "Keuken" - }, - new - { - FreezerId = 2, - Name = "Berging" - }); - }); - - modelBuilder.Entity("ThuisApi.Models.FreezerItem", b => - { - b.Property("FreezerItemId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Amount") - .HasColumnType("INTEGER"); - - b.Property("DatePlacedInFreezer") - .HasColumnType("TEXT"); - - b.Property("Drawer") - .HasColumnType("INTEGER"); - - b.Property("FreezerId") - .HasColumnType("INTEGER"); - - b.Property("Item") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("FreezerItemId"); - - b.HasIndex("FreezerId"); - - b.ToTable("FreezerItem"); - - b.HasData( - new - { - FreezerItemId = 1, - Amount = 1, - DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), - Drawer = 1, - FreezerId = 1, - Item = "Kip" - }, - new - { - FreezerItemId = 2, - Amount = 1, - DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), - Drawer = 2, - FreezerId = 2, - Item = "1 pak van 2 hamburgers" - }); - }); - - modelBuilder.Entity("ThuisApi.Models.FreezerItem", b => - { - b.HasOne("ThuisApi.Models.Freezer", "Freezer") - .WithMany() - .HasForeignKey("FreezerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Freezer"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Migrations/20230406151852_InitialDb.cs b/Migrations/20230406151852_InitialDb.cs deleted file mode 100644 index 247fea1..0000000 --- a/Migrations/20230406151852_InitialDb.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional - -namespace ThuisApi.Migrations -{ - /// - public partial class InitialDb : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Cards", - columns: table => new - { - CardId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Issuer = table.Column(type: "TEXT", nullable: false), - Code = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Cards", x => x.CardId); - }); - - migrationBuilder.CreateTable( - name: "Freezer", - columns: table => new - { - FreezerId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Name = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Freezer", x => x.FreezerId); - }); - - migrationBuilder.CreateTable( - name: "FreezerItem", - columns: table => new - { - FreezerItemId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Item = table.Column(type: "TEXT", nullable: false), - Amount = table.Column(type: "INTEGER", nullable: false), - Drawer = table.Column(type: "INTEGER", nullable: false), - DatePlacedInFreezer = table.Column(type: "TEXT", nullable: false), - FreezerId = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FreezerItem", x => x.FreezerItemId); - table.ForeignKey( - name: "FK_FreezerItem_Freezer_FreezerId", - column: x => x.FreezerId, - principalTable: "Freezer", - principalColumn: "FreezerId", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.InsertData( - table: "Freezer", - columns: new[] { "FreezerId", "Name" }, - values: new object[,] - { - { 1, "Keuken" }, - { 2, "Berging" } - }); - - migrationBuilder.InsertData( - table: "FreezerItem", - columns: new[] { "FreezerItemId", "Amount", "DatePlacedInFreezer", "Drawer", "FreezerId", "Item" }, - values: new object[,] - { - { 1, 1, new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), 1, 1, "Kip" }, - { 2, 1, new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), 2, 2, "1 pak van 2 hamburgers" } - }); - - migrationBuilder.CreateIndex( - name: "IX_FreezerItem_FreezerId", - table: "FreezerItem", - column: "FreezerId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Cards"); - - migrationBuilder.DropTable( - name: "FreezerItem"); - - migrationBuilder.DropTable( - name: "Freezer"); - } - } -} diff --git a/Migrations/ThuisDbContextModelSnapshot.cs b/Migrations/ThuisDbContextModelSnapshot.cs deleted file mode 100644 index 428ae5d..0000000 --- a/Migrations/ThuisDbContextModelSnapshot.cs +++ /dev/null @@ -1,128 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using ThuisApi.Data; - -#nullable disable - -namespace ThuisApi.Migrations -{ - [DbContext(typeof(ThuisDbContext))] - partial class ThuisDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.4"); - - modelBuilder.Entity("ThuisApi.Models.Card", b => - { - b.Property("CardId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Code") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Issuer") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("CardId"); - - b.ToTable("Cards"); - }); - - modelBuilder.Entity("ThuisApi.Models.Freezer", b => - { - b.Property("FreezerId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("FreezerId"); - - b.ToTable("Freezer"); - - b.HasData( - new - { - FreezerId = 1, - Name = "Keuken" - }, - new - { - FreezerId = 2, - Name = "Berging" - }); - }); - - modelBuilder.Entity("ThuisApi.Models.FreezerItem", b => - { - b.Property("FreezerItemId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Amount") - .HasColumnType("INTEGER"); - - b.Property("DatePlacedInFreezer") - .HasColumnType("TEXT"); - - b.Property("Drawer") - .HasColumnType("INTEGER"); - - b.Property("FreezerId") - .HasColumnType("INTEGER"); - - b.Property("Item") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("FreezerItemId"); - - b.HasIndex("FreezerId"); - - b.ToTable("FreezerItem"); - - b.HasData( - new - { - FreezerItemId = 1, - Amount = 1, - DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), - Drawer = 1, - FreezerId = 1, - Item = "Kip" - }, - new - { - FreezerItemId = 2, - Amount = 1, - DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), - Drawer = 2, - FreezerId = 2, - Item = "1 pak van 2 hamburgers" - }); - }); - - modelBuilder.Entity("ThuisApi.Models.FreezerItem", b => - { - b.HasOne("ThuisApi.Models.Freezer", "Freezer") - .WithMany() - .HasForeignKey("FreezerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Freezer"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Models/Card.cs b/Models/Card.cs deleted file mode 100644 index e8ed6e7..0000000 --- a/Models/Card.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace ThuisApi.Models -{ - public class Card - { - public int CardId { get; set; } - public string Issuer { get; set; } - public string Code { get; set; } - } -} \ No newline at end of file diff --git a/Models/Freezer.cs b/Models/Freezer.cs deleted file mode 100644 index 3da25c5..0000000 --- a/Models/Freezer.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace ThuisApi.Models; - -public class Freezer -{ - public int FreezerId { get; set; } - public string Name { get; set; } -} \ No newline at end of file diff --git a/Models/FreezerDto.cs b/Models/FreezerDto.cs index 3f7f926..e8d06e0 100644 --- a/Models/FreezerDto.cs +++ b/Models/FreezerDto.cs @@ -1,8 +1,8 @@ -namespace ThuisApi.Models; +namespace Api.Models; public class FreezerDto { public int FreezerId { get; set; } - public string Name { get; set; } + public string? Name { get; set; } public int AmountInFreezer { get; set; } } \ No newline at end of file diff --git a/Models/FreezerItem.cs b/Models/FreezerItem.cs deleted file mode 100644 index 87fde06..0000000 --- a/Models/FreezerItem.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace ThuisApi.Models; - -public class FreezerItem -{ - public int FreezerItemId { get; set; } - public string Item { get; set; } - public int Amount { get; set; } - public int Drawer { get; set; } - public DateTime DatePlacedInFreezer { get; set; } - - public int FreezerId { get; set; } - public Freezer Freezer { get; set; } -} \ No newline at end of file diff --git a/Models/FreezerItemDto.cs b/Models/FreezerItemDto.cs index 2bca5ed..b4c7d0c 100644 --- a/Models/FreezerItemDto.cs +++ b/Models/FreezerItemDto.cs @@ -1,11 +1,11 @@ -namespace ThuisApi.Models; +namespace Api.Models; public class FreezerItemDto { public int FreezerItemId { get; set; } - public string Item { get; set; } + public string? Name { get; set; } public int Amount { get; set; } public int Drawer { get; set; } - public string? DateTimeAdded { get; set; } + public string? AddedOn { get; set; } public int FreezerId { get; set; } } \ No newline at end of file diff --git a/Models/ThuisApiProfile.cs b/Models/ThuisApiProfile.cs index 043abb1..11c734d 100644 --- a/Models/ThuisApiProfile.cs +++ b/Models/ThuisApiProfile.cs @@ -1,6 +1,7 @@ using AutoMapper; +using Data.Models; -namespace ThuisApi.Models; +namespace Api.Models; public class ThuisApiProfile : Profile { diff --git a/Program.cs b/Program.cs index b532430..e231aae 100644 --- a/Program.cs +++ b/Program.cs @@ -1,6 +1,6 @@ +using Api.Models; +using Data; using Microsoft.EntityFrameworkCore; -using ThuisApi.Data; -using ThuisApi.Models; var builder = WebApplication.CreateBuilder(args); diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json index 7bca823..051a221 100644 --- a/Properties/launchSettings.json +++ b/Properties/launchSettings.json @@ -9,7 +9,7 @@ } }, "profiles": { - "ThuisApi": { + "Api": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": false, @@ -19,14 +19,6 @@ "ASPNETCORE_ENVIRONMENT": "Development", "AUTH_TOKEN": "kaas" } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": false, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } } } }