Files
IM_NEW/GroupService.Infrastructure/Reposities/GroupReposity.cs
T

50 lines
1.4 KiB
C#

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<Group?> FindByIdAsync(Guid id)
{
return await db.Groups.FirstOrDefaultAsync(x => x.Id == id);
}
public async Task<IEnumerable<Group>> FindByMasterIdAsync(Guid userId)
{
return await db.Groups.Where(x => x.GroupMaster == userId).ToListAsync();
}
public async Task<IEnumerable<Group>> 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<IEnumerable<Group>> FindByNameAsync(string name)
{
return await db.Groups.Where(x => x.Name == name).ToListAsync();
}
}
}