LibraryManagement / DbConnect /Data /AppDbContext.cs
Yuyuqt
fix: top up function
202c378
Raw
History Blame Contribute Delete
9.14 kB
using System;
using System.Collections.Generic;
using DbConnect.Entities;
using Microsoft.EntityFrameworkCore;
namespace DbConnect.Data;
public partial class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{
}
public virtual DbSet<Book> Books { get; set; }
public virtual DbSet<Borrowing> Borrowings { get; set; }
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Membership> Memberships { get; set; }
public virtual DbSet<Notification> Notifications { get; set; }
public virtual DbSet<User> Users { get; set; }
public virtual DbSet<UserSubscription> UserSubscriptions { get; set; }
public virtual DbSet<WishlistItem> WishlistItems { get; set; }
public virtual DbSet<WalletTransaction> WalletTransactions { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Book>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Books__3214EC07AE1974C8");
entity.HasIndex(e => e.Isbn, "UQ__Books__447D36EA79CF66CE").IsUnique();
entity.Property(e => e.Author).HasMaxLength(100);
entity.Property(e => e.AvailableCopies).HasDefaultValue(1);
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("now()")
.HasColumnType("timestamp");
entity.Property(e => e.IsActive).HasDefaultValue(true);
entity.Property(e => e.Isbn)
.HasMaxLength(20)
.HasColumnName("ISBN");
entity.Property(e => e.Status)
.HasMaxLength(20)
.HasDefaultValue("Available");
entity.Property(e => e.Title).HasMaxLength(200);
entity.Property(e => e.TotalCopies).HasDefaultValue(1);
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp");
entity.HasMany(d => d.Categories).WithMany(p => p.Books)
.UsingEntity<Dictionary<string, object>>(
"BookCategory",
r => r.HasOne<Category>().WithMany()
.HasForeignKey("CategoryId")
.HasConstraintName("FK_BookCategories_Categories"),
l => l.HasOne<Book>().WithMany()
.HasForeignKey("BookId")
.HasConstraintName("FK_BookCategories_Books"),
j =>
{
j.HasKey("BookId", "CategoryId").HasName("PK__BookCate__9C7051A74E7D221D");
j.ToTable("BookCategories");
});
});
modelBuilder.Entity<Borrowing>(entity =>
{
entity.Property(e => e.Id).HasDefaultValueSql("gen_random_uuid()");
entity.Property(e => e.BorrowDate)
.HasDefaultValueSql("now()")
.HasColumnType("timestamp");
entity.Property(e => e.DueDate).HasColumnType("timestamp");
entity.Property(e => e.FineAmount).HasColumnType("decimal(10, 2)");
entity.Property(e => e.ReturnDate).HasColumnType("timestamp");
entity.Property(e => e.Status)
.HasMaxLength(20)
.HasDefaultValue("Active");
entity.HasOne(d => d.Book).WithMany(p => p.Borrowings)
.HasForeignKey(d => d.BookId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Borrowings_Books");
entity.HasOne(d => d.User).WithMany(p => p.Borrowings)
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Borrowings_Users");
});
modelBuilder.Entity<Category>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Categori__3214EC0751B5797D");
entity.HasIndex(e => e.Name, "UQ__Categori__737584F622B16D3A").IsUnique();
entity.Property(e => e.Name).HasMaxLength(100);
});
modelBuilder.Entity<Membership>(entity =>
{
entity.HasKey(e => e.Id).HasName("PK__Membersh__3214EC07A6F5A55F");
entity.HasIndex(e => e.Type, "IX_Memberships_Type").IsUnique();
entity.Property(e => e.Price).HasColumnType("decimal(10, 2)");
entity.Property(e => e.RewardId).HasMaxLength(100);
entity.Property(e => e.Type).HasMaxLength(50);
});
modelBuilder.Entity<Notification>(entity =>
{
entity.HasIndex(e => e.UserId, "IX_Notifications_UserId");
entity.Property(e => e.ActionLink).HasMaxLength(500);
entity.Property(e => e.ActionText).HasMaxLength(100);
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("now()")
.HasColumnType("timestamp");
entity.Property(e => e.Message).HasMaxLength(1000);
entity.Property(e => e.Title).HasMaxLength(200);
entity.Property(e => e.Type)
.HasMaxLength(50)
.HasDefaultValue("Info");
entity.HasOne(d => d.User).WithMany(p => p.Notifications)
.HasForeignKey(d => d.UserId)
.HasConstraintName("FK_Notifications_Users");
});
modelBuilder.Entity<User>(entity =>
{
entity.ToTable("Users");
entity.HasIndex(e => e.Email, "UQ_Users_Email").IsUnique();
entity.Property(e => e.Id).HasDefaultValueSql("gen_random_uuid()");
entity.Property(e => e.Address).HasMaxLength(255);
entity.Property(e => e.CreatedAt)
.HasDefaultValueSql("now()")
.HasColumnType("timestamp");
entity.Property(e => e.Email).HasMaxLength(100);
entity.Property(e => e.FcmToken).HasMaxLength(500);
entity.Property(e => e.FullName).HasMaxLength(100);
entity.Property(e => e.IsActive).HasDefaultValue(true);
entity.Property(e => e.PhoneNumber).HasMaxLength(20);
entity.Property(e => e.Role)
.HasMaxLength(20)
.HasDefaultValue("User");
entity.Property(e => e.StudentId).HasMaxLength(20);
entity.Property(e => e.SuspensionEndDate).HasColumnType("timestamp");
entity.Property(e => e.UpdatedAt).HasColumnType("timestamp");
entity.Property(e => e.Balance).HasColumnType("decimal(18, 2)").HasDefaultValue(0);
});
modelBuilder.Entity<UserSubscription>(entity =>
{
entity.Property(e => e.Id).HasDefaultValueSql("gen_random_uuid()");
entity.Property(e => e.ExpiryDate).HasColumnType("timestamp");
entity.Property(e => e.ExternalRedemptionId).HasMaxLength(100);
entity.Property(e => e.IsActive).HasDefaultValue(true);
entity.Property(e => e.StartDate).HasColumnType("timestamp");
entity.Property(e => e.Status)
.HasMaxLength(20)
.HasDefaultValue("Active");
entity.HasOne(d => d.Membership).WithMany(p => p.UserSubscriptions)
.HasForeignKey(d => d.MembershipId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_UserSubscriptions_Memberships");
entity.HasOne(d => d.User).WithMany(p => p.UserSubscriptions)
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_UserSubscriptions_Users");
});
modelBuilder.Entity<WishlistItem>(entity =>
{
entity.HasIndex(e => e.BookId, "IX_WishlistItems_BookId");
entity.HasIndex(e => e.UserId, "IX_WishlistItems_UserId");
entity.Property(e => e.AddedAt)
.HasDefaultValueSql("now()")
.HasColumnType("timestamp");
entity.HasOne(d => d.Book).WithMany(p => p.WishlistItems)
.HasForeignKey(d => d.BookId)
.HasConstraintName("FK_WishlistItems_Books");
entity.HasOne(d => d.User).WithMany(p => p.WishlistItems)
.HasForeignKey(d => d.UserId)
.HasConstraintName("FK_WishlistItems_Users");
});
modelBuilder.Entity<WalletTransaction>(entity =>
{
entity.ToTable("WalletTransactions");
entity.HasKey(e => e.Id);
entity.Property(e => e.Id).HasDefaultValueSql("gen_random_uuid()");
entity.Property(e => e.Amount).HasColumnType("decimal(18, 2)");
entity.Property(e => e.Type).HasMaxLength(20);
entity.Property(e => e.CreatedAt).HasColumnType("timestamp").HasDefaultValueSql("now()");
entity.HasOne(d => d.User)
.WithMany()
.HasForeignKey(d => d.UserId)
.OnDelete(DeleteBehavior.Cascade);
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}