diff --git a/barkmanAPI/Migrations/20260716004134_AddCustomerModel.Designer.cs b/barkmanAPI/Migrations/20260716004134_AddCustomerModel.Designer.cs
new file mode 100644
index 0000000..e499368
--- /dev/null
+++ b/barkmanAPI/Migrations/20260716004134_AddCustomerModel.Designer.cs
@@ -0,0 +1,163 @@
+//
+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("20260716004134_AddCustomerModel")]
+ partial class AddCustomerModel
+ {
+ ///
+ 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.Customers", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .HasColumnType("text")
+ .HasColumnName("address");
+
+ b.Property("BillingTerms")
+ .HasColumnType("text")
+ .HasColumnName("billing_terms");
+
+ b.Property("Company")
+ .HasColumnType("text")
+ .HasColumnName("company");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("email");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.Property("Notes")
+ .HasColumnType("text")
+ .HasColumnName("notes");
+
+ b.Property("PhoneNumber")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("phone_number");
+
+ b.HasKey("Id")
+ .HasName("pk_customers");
+
+ b.ToTable("customers", (string)null);
+ });
+
+ modelBuilder.Entity("barkmanapi.InventoryItems", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Barcode")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("barcode");
+
+ b.Property("Brand")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("brand");
+
+ 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.Property("Weight")
+ .HasColumnType("real")
+ .HasColumnName("weight");
+
+ b.HasKey("Id")
+ .HasName("pk_inventory");
+
+ b.HasIndex("Barcode")
+ .IsUnique()
+ .HasDatabaseName("ix_inventory_barcode");
+
+ b.HasIndex("StatusId")
+ .HasDatabaseName("ix_inventory_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", "Status")
+ .WithMany()
+ .HasForeignKey("StatusId")
+ .HasConstraintName("fk_inventory_item_status_status_id");
+
+ b.Navigation("Status");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/barkmanAPI/Migrations/20260716004134_AddCustomerModel.cs b/barkmanAPI/Migrations/20260716004134_AddCustomerModel.cs
new file mode 100644
index 0000000..c77df68
--- /dev/null
+++ b/barkmanAPI/Migrations/20260716004134_AddCustomerModel.cs
@@ -0,0 +1,41 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace barkmanapi.Migrations
+{
+ ///
+ public partial class AddCustomerModel : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "customers",
+ columns: table => new
+ {
+ id = table.Column(type: "integer", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ name = table.Column(type: "text", nullable: false),
+ company = table.Column(type: "text", nullable: true),
+ email = table.Column(type: "text", nullable: false),
+ phone_number = table.Column(type: "text", nullable: false),
+ address = table.Column(type: "text", nullable: true),
+ billing_terms = table.Column(type: "text", nullable: true),
+ notes = table.Column(type: "text", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("pk_customers", x => x.id);
+ });
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "customers");
+ }
+ }
+}
diff --git a/barkmanAPI/Migrations/20260716012558_customerPhoneOpt.Designer.cs b/barkmanAPI/Migrations/20260716012558_customerPhoneOpt.Designer.cs
new file mode 100644
index 0000000..8fe82f1
--- /dev/null
+++ b/barkmanAPI/Migrations/20260716012558_customerPhoneOpt.Designer.cs
@@ -0,0 +1,162 @@
+//
+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("20260716012558_customerPhoneOpt")]
+ partial class customerPhoneOpt
+ {
+ ///
+ 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.Customers", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .HasColumnType("text")
+ .HasColumnName("address");
+
+ b.Property("BillingTerms")
+ .HasColumnType("text")
+ .HasColumnName("billing_terms");
+
+ b.Property("Company")
+ .HasColumnType("text")
+ .HasColumnName("company");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("email");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("name");
+
+ b.Property("Notes")
+ .HasColumnType("text")
+ .HasColumnName("notes");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("text")
+ .HasColumnName("phone_number");
+
+ b.HasKey("Id")
+ .HasName("pk_customers");
+
+ b.ToTable("customers", (string)null);
+ });
+
+ modelBuilder.Entity("barkmanapi.InventoryItems", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("Barcode")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("barcode");
+
+ b.Property("Brand")
+ .IsRequired()
+ .HasColumnType("text")
+ .HasColumnName("brand");
+
+ 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.Property("Weight")
+ .HasColumnType("real")
+ .HasColumnName("weight");
+
+ b.HasKey("Id")
+ .HasName("pk_inventory");
+
+ b.HasIndex("Barcode")
+ .IsUnique()
+ .HasDatabaseName("ix_inventory_barcode");
+
+ b.HasIndex("StatusId")
+ .HasDatabaseName("ix_inventory_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", "Status")
+ .WithMany()
+ .HasForeignKey("StatusId")
+ .HasConstraintName("fk_inventory_item_status_status_id");
+
+ b.Navigation("Status");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/barkmanAPI/Migrations/20260716012558_customerPhoneOpt.cs b/barkmanAPI/Migrations/20260716012558_customerPhoneOpt.cs
new file mode 100644
index 0000000..db55c27
--- /dev/null
+++ b/barkmanAPI/Migrations/20260716012558_customerPhoneOpt.cs
@@ -0,0 +1,36 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace barkmanapi.Migrations
+{
+ ///
+ public partial class customerPhoneOpt : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "phone_number",
+ table: "customers",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "phone_number",
+ table: "customers",
+ type: "text",
+ nullable: false,
+ defaultValue: "",
+ oldClrType: typeof(string),
+ oldType: "text",
+ oldNullable: true);
+ }
+ }
+}
diff --git a/barkmanAPI/Migrations/BarkContextModelSnapshot.cs b/barkmanAPI/Migrations/BarkContextModelSnapshot.cs
index 0929965..c59a956 100644
--- a/barkmanAPI/Migrations/BarkContextModelSnapshot.cs
+++ b/barkmanAPI/Migrations/BarkContextModelSnapshot.cs
@@ -57,7 +57,6 @@ namespace barkmanapi.Migrations
.HasColumnName("notes");
b.Property("PhoneNumber")
- .IsRequired()
.HasColumnType("text")
.HasColumnName("phone_number");
diff --git a/barkmanAPI/barkDbModel.cs b/barkmanAPI/barkDbModel.cs
index 2dd528b..479bca8 100644
--- a/barkmanAPI/barkDbModel.cs
+++ b/barkmanAPI/barkDbModel.cs
@@ -37,7 +37,7 @@ public class Customers
public required string Name { get; set; }
public string? Company { get; set; }
public required string Email { get; set; }
- public required string PhoneNumber { get; set; }
+ public string? PhoneNumber { get; set; }
public string? Address { get; set; }
public string? BillingTerms { get; set; }
public string? Notes { get; set; }