using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace CouchLog.Data
{
    public class ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : IdentityDbContext<ApplicationUser, IdentityRole, string>(options)
    {

        // Global
        public DbSet<Genre> Genres { get; set; }
        public DbSet<GlobalEntity> GlobalEntities { get; set; }
        public DbSet<StreamingPlatform> StreamingPlatforms { get; set; }
        public DbSet<MediaType> MediaType { get; set; } // 'CouchLog.Data.Type' if namecolsion with System.Type

        //Private
        public DbSet<Label> Labels { get; set; }
        public DbSet<PrivateEntity> PrivateEntities { get; set; }
        public DbSet<UserWatchStatus> UserWatchStatuses { get; set; }

        //Shared
        public DbSet<SharedList> SharedLists { get; set; }
        public DbSet<SharedListEntity> SharedListEntities { get; set; }
        public DbSet<SharedListLabel> SharedListLabels { get; set; }
        public DbSet<SharedWatchStatus> SharedWatchStatuses { get; set; }

        //Settings
        public DbSet<CouchLogState> CouchLogState { get; set; }
        public DbSet<AccountsSettings> AccountsSettings { get; set; }
    }
}
