using System.Security.Cryptography; using AppContext.Entities; using Microsoft.AspNetCore.Cryptography.KeyDerivation; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; namespace AppContext; public class AppContext : DbContext { public DbSet Users { get; init; } public DbSet Tactics { get; init; } public DbSet Teams { get; init; } public DbSet Members { get; init; } public DbSet TacticSteps { get; set; } public DbSet SharedTactics { get; set; } public AppContext() { } public AppContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { var pgsqliteDsn = Environment.GetEnvironmentVariable("PGSQL_DSN"); if (pgsqliteDsn != null) { optionsBuilder.UseNpgsql(pgsqliteDsn); } else { optionsBuilder.UseSqlite("Data Source=database.db"); } } } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.Entity() .HasKey("UserId", "TeamId"); } }