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 15f4585..c59a956 100644 --- a/barkmanAPI/Migrations/BarkContextModelSnapshot.cs +++ b/barkmanAPI/Migrations/BarkContextModelSnapshot.cs @@ -21,6 +21,51 @@ namespace barkmanapi.Migrations 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") diff --git a/barkmanAPI/barkDbModel.cs b/barkmanAPI/barkDbModel.cs index aac0a20..479bca8 100644 --- a/barkmanAPI/barkDbModel.cs +++ b/barkmanAPI/barkDbModel.cs @@ -6,6 +6,7 @@ public class BarkContext(DbContextOptions options) : DbContext(opti { public DbSet Inventory { get; set; } public DbSet ItemStatus { get; set; } + public DbSet Customers { get; set; } } [Index(nameof(Barcode), IsUnique = true)] @@ -16,7 +17,7 @@ public class InventoryItems public string Name { get; set; } public string Brand { get; set; } public string? SerialNumber { get; set; } - public ItemStatus Status { get; set; } + public ItemStatus Status { get; set; } public string? StatusId { get; set; } public float? Weight { get; set; } public float? RentalPrice { get; set; } @@ -28,4 +29,16 @@ public class ItemStatus { public string Id { get; set; } public string Name { get; set; } +} + +public class Customers +{ + public int Id { get; set; } + public required string Name { get; set; } + public string? Company { get; set; } + public required string Email { get; set; } + public string? PhoneNumber { get; set; } + public string? Address { get; set; } + public string? BillingTerms { get; set; } + public string? Notes { get; set; } } \ No newline at end of file