diff --git a/barkmanAPI/Migrations/20250124005211_statuspt2.Designer.cs b/barkmanAPI/Migrations/20250124005211_statuspt2.Designer.cs
new file mode 100644
index 0000000..2c8627c
--- /dev/null
+++ b/barkmanAPI/Migrations/20250124005211_statuspt2.Designer.cs
@@ -0,0 +1,111 @@
+//
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using barkmanapi;
+
+#nullable disable
+
+namespace barkmanapi.Migrations
+{
+ [DbContext(typeof(BarkContext))]
+ [Migration("20250124005211_statuspt2")]
+ partial class statuspt2
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.1")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("barkmanapi.InventoryItems", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Brand")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("brand");
+
+ b.Property("ItemStatusId")
+ .HasColumnType("text")
+ .HasColumnName("item_status_id");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.Property("Notes")
+ .HasColumnType("text")
+ .HasColumnName("notes");
+
+ b.Property("RentalPrice")
+ .HasColumnType("real")
+ .HasColumnName("rental_price");
+
+ b.Property("ReplacementCost")
+ .HasColumnType("real")
+ .HasColumnName("replacement_cost");
+
+ b.Property("SerialNumber")
+ .HasColumnType("text")
+ .HasColumnName("serial_number");
+
+ b.Property("StatusId")
+ .HasColumnType("text")
+ .HasColumnName("status_id");
+
+ b.HasKey("Id")
+ .HasName("pk_inventory");
+
+ b.HasIndex("ItemStatusId")
+ .HasDatabaseName("ix_inventory_item_status_id");
+
+ b.ToTable("inventory", (string)null);
+ });
+
+ modelBuilder.Entity("barkmanapi.ItemStatus", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("text")
+ .HasColumnName("id");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.HasKey("Id")
+ .HasName("pk_item_status");
+
+ b.ToTable("item_status", (string)null);
+ });
+
+ modelBuilder.Entity("barkmanapi.InventoryItems", b =>
+ {
+ b.HasOne("barkmanapi.ItemStatus", null)
+ .WithMany("Items")
+ .HasForeignKey("ItemStatusId")
+ .HasConstraintName("fk_inventory_item_status_item_status_id");
+ });
+
+ modelBuilder.Entity("barkmanapi.ItemStatus", b =>
+ {
+ b.Navigation("Items");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/barkmanAPI/Migrations/20250124005211_statuspt2.cs b/barkmanAPI/Migrations/20250124005211_statuspt2.cs
new file mode 100644
index 0000000..2e12c05
--- /dev/null
+++ b/barkmanAPI/Migrations/20250124005211_statuspt2.cs
@@ -0,0 +1,58 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace barkmanapi.Migrations
+{
+ ///
+ public partial class statuspt2 : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.RenameColumn(
+ name: "status",
+ table: "inventory",
+ newName: "status_id");
+
+ migrationBuilder.AddColumn(
+ name: "item_status_id",
+ table: "inventory",
+ type: "text",
+ nullable: true);
+
+ migrationBuilder.CreateIndex(
+ name: "ix_inventory_item_status_id",
+ table: "inventory",
+ column: "item_status_id");
+
+ migrationBuilder.AddForeignKey(
+ name: "fk_inventory_item_status_item_status_id",
+ table: "inventory",
+ column: "item_status_id",
+ principalTable: "item_status",
+ principalColumn: "id");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropForeignKey(
+ name: "fk_inventory_item_status_item_status_id",
+ table: "inventory");
+
+ migrationBuilder.DropIndex(
+ name: "ix_inventory_item_status_id",
+ table: "inventory");
+
+ migrationBuilder.DropColumn(
+ name: "item_status_id",
+ table: "inventory");
+
+ migrationBuilder.RenameColumn(
+ name: "status_id",
+ table: "inventory",
+ newName: "status");
+ }
+ }
+}
diff --git a/barkmanAPI/Migrations/BarkContextModelSnapshot.cs b/barkmanAPI/Migrations/BarkContextModelSnapshot.cs
index 6de27d7..2e166f4 100644
--- a/barkmanAPI/Migrations/BarkContextModelSnapshot.cs
+++ b/barkmanAPI/Migrations/BarkContextModelSnapshot.cs
@@ -35,6 +35,10 @@ namespace barkmanapi.Migrations
.HasColumnType("text")
.HasColumnName("brand");
+ b.Property("ItemStatusId")
+ .HasColumnType("text")
+ .HasColumnName("item_status_id");
+
b.Property("Name")
.IsRequired()
.HasColumnType("text")
@@ -56,13 +60,16 @@ namespace barkmanapi.Migrations
.HasColumnType("text")
.HasColumnName("serial_number");
- b.Property("Status")
+ b.Property("StatusId")
.HasColumnType("text")
- .HasColumnName("status");
+ .HasColumnName("status_id");
b.HasKey("Id")
.HasName("pk_inventory");
+ b.HasIndex("ItemStatusId")
+ .HasDatabaseName("ix_inventory_item_status_id");
+
b.ToTable("inventory", (string)null);
});
@@ -82,6 +89,19 @@ namespace barkmanapi.Migrations
b.ToTable("item_status", (string)null);
});
+
+ modelBuilder.Entity("barkmanapi.InventoryItems", b =>
+ {
+ b.HasOne("barkmanapi.ItemStatus", null)
+ .WithMany("Items")
+ .HasForeignKey("ItemStatusId")
+ .HasConstraintName("fk_inventory_item_status_item_status_id");
+ });
+
+ modelBuilder.Entity("barkmanapi.ItemStatus", b =>
+ {
+ b.Navigation("Items");
+ });
#pragma warning restore 612, 618
}
}
diff --git a/barkmanAPI/Program.cs b/barkmanAPI/Program.cs
index cf7ed99..62d98fe 100644
--- a/barkmanAPI/Program.cs
+++ b/barkmanAPI/Program.cs
@@ -12,6 +12,7 @@ builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1",
new OpenApiInfo { Title = "BarkMan API", Description = "BARK BARK WOOF WOOF", Version = "v1" });
+
});
builder.Services.AddCors(options =>
@@ -30,12 +31,14 @@ var app = builder.Build();
if (!app.Environment.IsProduction())
{
- app.UseSwagger();
+ app.MapOpenApi();
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Bark Productions API V1"); });
}
app.MapGet("/", () => "Hello World!");
+
+
app.MapGet("/inventory", async (BarkContext db) =>
await db.Inventory.OrderBy(item => item.Id).ToListAsync());
@@ -61,7 +64,7 @@ app.MapPut("/inventory/{id}", async (int id, InventoryItems updatedItem, BarkCon
existingItem.Name = updatedItem.Name;
existingItem.Brand = updatedItem.Brand;
existingItem.SerialNumber = updatedItem.SerialNumber;
- existingItem.Status = updatedItem.Status;
+ existingItem.StatusId = updatedItem.StatusId;
existingItem.RentalPrice = updatedItem.RentalPrice;
existingItem.ReplacementCost = updatedItem.ReplacementCost;
existingItem.Notes = updatedItem.Notes;
@@ -140,6 +143,10 @@ app.MapDelete("/itemstatus/{id}", async (string id, BarkContext db) =>
return Results.Ok(new { Message = "Item status deleted successfully" });
});
+var inventoryGroup = app.MapGroup(prefix: "/inventory")
+ .WithTags("Inventory")
+ .WithDescription("Endpoints for managing inventory items");
+
using (var serviceScope = app.Services.CreateScope())
{
var dbContext = serviceScope.ServiceProvider.GetRequiredService();
diff --git a/barkmanAPI/barkDbModel.cs b/barkmanAPI/barkDbModel.cs
index 03c98d6..224b0e6 100644
--- a/barkmanAPI/barkDbModel.cs
+++ b/barkmanAPI/barkDbModel.cs
@@ -14,7 +14,7 @@ public class InventoryItems
public string Name { get; set; }
public string Brand { get; set; }
public string? SerialNumber { get; set; }
- public string? Status { get; set; }
+ public string? StatusId { get; set; }
public float? RentalPrice { get; set; }
public float? ReplacementCost { get; set; }
public string? Notes { get; set; }
@@ -24,4 +24,5 @@ public class ItemStatus
{
public string Id { get; set; }
public string Name { get; set; }
+ public ICollection Items { get; } = new List();
}
\ No newline at end of file