feat(Backend): update API gateway and websocket hubs

This commit is contained in:
2026-08-09 21:32:52 +02:00
parent fdf4b6efcb
commit a9553e9fbf
66 changed files with 188878 additions and 0 deletions
@@ -0,0 +1,75 @@
using FinlyticBackend.Entities;
using Microsoft.EntityFrameworkCore;
namespace FinlyticBackend.Database;
public class BackendDbContext : DbContext
{
public BackendDbContext(DbContextOptions<BackendDbContext> options) : base(options) { }
public DbSet<UserEntity> Users => Set<UserEntity>();
public DbSet<UserDeviceTokenEntity> UserDeviceTokens => Set<UserDeviceTokenEntity>();
public DbSet<UserFavoriteAssetEntity> UserFavoriteAssets => Set<UserFavoriteAssetEntity>();
public DbSet<ServiceConfigurationEntity> ServiceConfigurations => Set<ServiceConfigurationEntity>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<UserEntity>(entity =>
{
entity.ToTable("users");
entity.Property(u => u.Id).HasColumnName("id");
entity.Property(u => u.Email).HasColumnName("email");
entity.Property(u => u.PasswordHash).HasColumnName("password_hash");
entity.Property(u => u.FullName).HasColumnName("full_name");
entity.Property(u => u.Role).HasColumnName("role");
entity.Property(u => u.IsActive).HasColumnName("is_active");
entity.Property(u => u.CreatedAt).HasColumnName("created_at");
entity.Property(u => u.LastLoginAt).HasColumnName("last_login_at");
entity.Property(u => u.ThemePreference).HasColumnName("theme_preference");
entity.HasIndex(u => u.Email).IsUnique();
entity.HasIndex(u => u.Role);
});
modelBuilder.Entity<UserDeviceTokenEntity>(entity =>
{
entity.ToTable("user_device_tokens");
entity.Property(t => t.Id).HasColumnName("id");
entity.Property(t => t.UserId).HasColumnName("user_id");
entity.Property(t => t.FcmToken).HasColumnName("fcm_token");
entity.Property(t => t.DeviceName).HasColumnName("device_name");
entity.Property(t => t.RegisteredAt).HasColumnName("registered_at");
entity.Property(t => t.LastUsedAt).HasColumnName("last_used_at");
entity.HasIndex(t => t.UserId);
entity.HasIndex(t => t.FcmToken);
});
modelBuilder.Entity<UserFavoriteAssetEntity>(entity =>
{
entity.ToTable("user_favorite_assets");
entity.Property(f => f.Id).HasColumnName("id");
entity.Property(f => f.UserId).HasColumnName("user_id");
entity.Property(f => f.Isin).HasColumnName("isin");
entity.Property(f => f.CreatedAt).HasColumnName("created_at");
entity.HasIndex(f => new { f.UserId, f.Isin }).IsUnique();
});
modelBuilder.Entity<ServiceConfigurationEntity>(entity =>
{
entity.ToTable("service_configurations");
entity.Property(c => c.Id).HasColumnName("id");
entity.Property(c => c.ServiceName).HasColumnName("service_name");
entity.Property(c => c.ConfigKey).HasColumnName("config_key");
entity.Property(c => c.ConfigValue).HasColumnName("config_value");
entity.Property(c => c.DataType).HasColumnName("data_type");
entity.Property(c => c.Description).HasColumnName("description");
entity.Property(c => c.UpdatedAt).HasColumnName("updated_at");
entity.HasIndex(c => new { c.ServiceName, c.ConfigKey }).IsUnique();
});
}
}