diff --git a/timetracker.Server/Data/Migrations/20260625184756_PendingChanges.Designer.cs b/timetracker.Server/Data/Migrations/20260625184756_PendingChanges.Designer.cs new file mode 100644 index 0000000..da8e139 --- /dev/null +++ b/timetracker.Server/Data/Migrations/20260625184756_PendingChanges.Designer.cs @@ -0,0 +1,265 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using timetracker.Data; + +#nullable disable + +namespace timetracker.Data.Migrations +{ + [DbContext(typeof(TimetrackerDbContext))] + [Migration("20260625184756_PendingChanges")] + partial class PendingChanges + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "10.0.9"); + + modelBuilder.Entity("timetracker.Shared.AppSettings", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DailyTargetHours") + .HasColumnType("REAL"); + + b.Property("FlexTimeStartDate") + .HasColumnType("TEXT"); + + b.Property("FlexTimeStartingBalanceHours") + .HasColumnType("REAL"); + + b.Property("GermanState") + .HasColumnType("TEXT"); + + b.Property("MinimumBreakMinutes") + .HasColumnType("INTEGER"); + + b.Property("TenantId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.Property("VacationDaysPerYear") + .HasColumnType("INTEGER"); + + b.Property("WorkFriday") + .HasColumnType("INTEGER"); + + b.Property("WorkMonday") + .HasColumnType("INTEGER"); + + b.Property("WorkSaturday") + .HasColumnType("INTEGER"); + + b.Property("WorkSunday") + .HasColumnType("INTEGER"); + + b.Property("WorkThursday") + .HasColumnType("INTEGER"); + + b.Property("WorkTuesday") + .HasColumnType("INTEGER"); + + b.Property("WorkWednesday") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("AppSettings"); + }); + + modelBuilder.Entity("timetracker.Shared.BreakEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("EndTime") + .HasColumnType("TEXT"); + + b.Property("StartTime") + .HasColumnType("TEXT"); + + b.Property("WorkDayId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("WorkDayId"); + + b.ToTable("BreakEntries"); + }); + + modelBuilder.Entity("timetracker.Shared.PublicHoliday", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Counties") + .HasColumnType("TEXT"); + + b.Property("Date") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("PublicHolidays"); + }); + + modelBuilder.Entity("timetracker.Shared.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("IsApproved") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("PrimaryColor") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SecondaryColor") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Subdomain") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("Subdomain") + .IsUnique(); + + b.ToTable("Tenants"); + }); + + modelBuilder.Entity("timetracker.Shared.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("IsTenantAdmin") + .HasColumnType("INTEGER"); + + b.Property("PasswordHash") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("PasswordSalt") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("TenantId") + .HasColumnType("INTEGER"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("timetracker.Shared.VacationDay", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Date") + .HasColumnType("TEXT"); + + b.Property("Note") + .HasColumnType("TEXT"); + + b.Property("TenantId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("VacationDays"); + }); + + modelBuilder.Entity("timetracker.Shared.WorkDay", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Date") + .HasColumnType("TEXT"); + + b.Property("EndTime") + .HasColumnType("TEXT"); + + b.Property("StartTime") + .HasColumnType("TEXT"); + + b.Property("TenantId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("WorkDays"); + }); + + modelBuilder.Entity("timetracker.Shared.BreakEntry", b => + { + b.HasOne("timetracker.Shared.WorkDay", "WorkDay") + .WithMany("Breaks") + .HasForeignKey("WorkDayId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkDay"); + }); + + modelBuilder.Entity("timetracker.Shared.User", b => + { + b.HasOne("timetracker.Shared.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("timetracker.Shared.WorkDay", b => + { + b.Navigation("Breaks"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/timetracker.Server/Data/Migrations/20260625184756_PendingChanges.cs b/timetracker.Server/Data/Migrations/20260625184756_PendingChanges.cs new file mode 100644 index 0000000..a4e6125 --- /dev/null +++ b/timetracker.Server/Data/Migrations/20260625184756_PendingChanges.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace timetracker.Data.Migrations +{ + /// + public partial class PendingChanges : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/timetracker.Server/Data/Migrations/TimetrackerDbContextModelSnapshot.cs b/timetracker.Server/Data/Migrations/TimetrackerDbContextModelSnapshot.cs index 6380088..9530bbe 100644 --- a/timetracker.Server/Data/Migrations/TimetrackerDbContextModelSnapshot.cs +++ b/timetracker.Server/Data/Migrations/TimetrackerDbContextModelSnapshot.cs @@ -15,7 +15,7 @@ namespace timetracker.Data.Migrations protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "10.0.8"); + modelBuilder.HasAnnotation("ProductVersion", "10.0.9"); modelBuilder.Entity("timetracker.Shared.AppSettings", b => { diff --git a/timetracker.Server/Program.cs b/timetracker.Server/Program.cs index d6a19ed..fedcd48 100644 --- a/timetracker.Server/Program.cs +++ b/timetracker.Server/Program.cs @@ -114,14 +114,16 @@ if (dbProvider.Equals("PostgreSQL", StringComparison.OrdinalIgnoreCase)) var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? builder.Configuration["ConnectionStrings:DefaultConnection"]; builder.Services.AddDbContextFactory(options => - options.UseNpgsql(connectionString)); + options.UseNpgsql(connectionString) + .ConfigureWarnings(w => w.Ignore(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.PendingModelChangesWarning))); } else { var dbPath = Environment.GetEnvironmentVariable("TIMETRACKER_DB_PATH") ?? Path.Combine(builder.Environment.ContentRootPath, "timetracker.db"); builder.Services.AddDbContextFactory(options => - options.UseSqlite($"Data Source={dbPath}")); + options.UseSqlite($"Data Source={dbPath}") + .ConfigureWarnings(w => w.Ignore(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.PendingModelChangesWarning))); } var app = builder.Build();