feat(console): add TenantRepository
This commit is contained in:
parent
a76f37fbc9
commit
75b161bc60
16
Repositories/ITenantRepository.cs
Normal file
16
Repositories/ITenantRepository.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using Fengling.AuthService.Models;
|
||||
|
||||
namespace Fengling.Console.Repositories;
|
||||
|
||||
public interface ITenantRepository
|
||||
{
|
||||
Task<Tenant?> GetByIdAsync(long id);
|
||||
Task<Tenant?> GetByTenantIdAsync(string tenantId);
|
||||
Task<IEnumerable<Tenant>> GetAllAsync();
|
||||
Task<IEnumerable<Tenant>> GetPagedAsync(int page, int pageSize, string? name = null, string? tenantId = null, string? status = null);
|
||||
Task<int> CountAsync(string? name = null, string? tenantId = null, string? status = null);
|
||||
Task AddAsync(Tenant tenant);
|
||||
Task UpdateAsync(Tenant tenant);
|
||||
Task DeleteAsync(Tenant tenant);
|
||||
Task<int> GetUserCountAsync(long tenantId);
|
||||
}
|
||||
101
Repositories/TenantRepository.cs
Normal file
101
Repositories/TenantRepository.cs
Normal file
@ -0,0 +1,101 @@
|
||||
using Fengling.AuthService.Data;
|
||||
using Fengling.AuthService.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Fengling.Console.Repositories;
|
||||
|
||||
public class TenantRepository : ITenantRepository
|
||||
{
|
||||
private readonly ApplicationDbContext _context;
|
||||
|
||||
public TenantRepository(ApplicationDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task<Tenant?> GetByIdAsync(long id)
|
||||
{
|
||||
return await _context.Tenants.FindAsync(id);
|
||||
}
|
||||
|
||||
public async Task<Tenant?> GetByTenantIdAsync(string tenantId)
|
||||
{
|
||||
return await _context.Tenants.FirstOrDefaultAsync(t => t.TenantId == tenantId);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Tenant>> GetAllAsync()
|
||||
{
|
||||
return await _context.Tenants.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Tenant>> GetPagedAsync(int page, int pageSize, string? name = null, string? tenantId = null, string? status = null)
|
||||
{
|
||||
var query = _context.Tenants.AsQueryable();
|
||||
|
||||
if (!string.IsNullOrEmpty(name))
|
||||
{
|
||||
query = query.Where(t => t.Name.Contains(name));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(tenantId))
|
||||
{
|
||||
query = query.Where(t => t.TenantId.Contains(tenantId));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(status))
|
||||
{
|
||||
query = query.Where(t => t.Status == status);
|
||||
}
|
||||
|
||||
return await query
|
||||
.OrderByDescending(t => t.CreatedAt)
|
||||
.Skip((page - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<int> CountAsync(string? name = null, string? tenantId = null, string? status = null)
|
||||
{
|
||||
var query = _context.Tenants.AsQueryable();
|
||||
|
||||
if (!string.IsNullOrEmpty(name))
|
||||
{
|
||||
query = query.Where(t => t.Name.Contains(name));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(tenantId))
|
||||
{
|
||||
query = query.Where(t => t.TenantId.Contains(tenantId));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(status))
|
||||
{
|
||||
query = query.Where(t => t.Status == status);
|
||||
}
|
||||
|
||||
return await query.CountAsync();
|
||||
}
|
||||
|
||||
public async Task AddAsync(Tenant tenant)
|
||||
{
|
||||
_context.Tenants.Add(tenant);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task UpdateAsync(Tenant tenant)
|
||||
{
|
||||
_context.Tenants.Update(tenant);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(Tenant tenant)
|
||||
{
|
||||
_context.Tenants.Remove(tenant);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<int> GetUserCountAsync(long tenantId)
|
||||
{
|
||||
return await _context.Users.CountAsync(u => u.TenantInfo.Id == tenantId && !u.IsDeleted);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user