using Microsoft.EntityFrameworkCore;
using Domain.Entities.Common;
using Domain.Entities.Members;
using Domain.Entities.Page;
using Domain.Entities.Page.Faq;
using Domain.Entities.Page.Banner;
using Domain.Entities.Members.Logs;
using Domain.Entities.Wallets;

namespace Application.Abstractions.Data
{
    public interface IAppDbContext
    {
        DbSet<Config> Config { get; set;  }
        DbSet<Document> Document { get; set;  }
        DbSet<Popup> Popup { get; set;  }
        DbSet<FaqCategory> FaqCategory { get; set;  }
        DbSet<FaqItem> FaqItem { get; set;  }
        DbSet<BannerPosition> BannerPosition { get; set;  }
        DbSet<BannerItem> BannerItem { get; set;  }

        DbSet<Member> Member { get; set; }
        DbSet<MemberApprove> MemberApprove { get; set; }
        DbSet<MemberGrade> MemberGrade { get; set; }
        DbSet<MemberLoginLog> MemberLoginLog { get; set; }
        DbSet<MemberEmailChangeLog> MemberEmailChangeLog { get; set; }
        DbSet<MemberNameChangeLog> MemberNameChangeLog { get; set; }
        DbSet<MemberSummaryChangeLog> MemberSummaryChangeLog { get; set; }
        DbSet<MemberIntroChangeLog> MemberIntroChangeLog { get; set; }
        DbSet<Channel> Channel { get; set; }

        DbSet<Wallet> Wallet { get; set; }
        DbSet<WalletTransaction> WalletTransaction { get; set; }

        Task<int> SaveChangesAsync(CancellationToken ct = default);
    }
}