using GroupService.Domain.Entities; using GroupService.Domain.IReposities; using Microsoft.EntityFrameworkCore; namespace GroupService.Infrastructure.Reposities { public class GroupReposity : IGroupReposity { private readonly GroupDbContext db; public GroupReposity(GroupDbContext db) { this.db = db; } public Group Create(Group group) { db.Groups.Add(group); return group; } public async Task FindByIdAsync(Guid id) { return await db.Groups.FirstOrDefaultAsync(x => x.Id == id); } public async Task> FindByMasterIdAsync(Guid userId) { return await db.Groups.Where(x => x.GroupMaster == userId).ToListAsync(); } public async Task> FindByMemberIdAsync(Guid userId) { var groupIds = db.GroupMembers .Where(member => member.UserId == userId) .Select(member => member.GroupId); return await db.Groups .Where(group => groupIds.Contains(group.Id)) .OrderByDescending(group => group.ModificationTime ?? group.CreationTime) .ToListAsync(); } public async Task> FindByNameAsync(string name) { return await db.Groups.Where(x => x.Name == name).ToListAsync(); } } }