- 메시지 저장 API (POST /v1/in/message/save)
- 메시지 목록 조회 API (POST /v1/in/message/list)
- 메시지 상세 조회 API (POST /v1/in/message/info)
- 메시지 삭제 API (POST /v1/in/message/delete)
- message_code 자동 생성 (접두3+순번4+접미3)
- 변수 추출 ({{변수명}} 패턴)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
using System.Linq.Expressions;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using SPMS.Domain.Entities;
|
|
using SPMS.Domain.Interfaces;
|
|
|
|
namespace SPMS.Infrastructure.Persistence.Repositories;
|
|
|
|
public class MessageRepository : Repository<Message>, IMessageRepository
|
|
{
|
|
public MessageRepository(AppDbContext context) : base(context) { }
|
|
|
|
public async Task<Message?> GetByMessageCodeAsync(string messageCode)
|
|
{
|
|
return await _dbSet
|
|
.FirstOrDefaultAsync(m => m.MessageCode == messageCode && !m.IsDeleted);
|
|
}
|
|
|
|
public async Task<Message?> GetByMessageCodeAndServiceAsync(string messageCode, long serviceId)
|
|
{
|
|
return await _dbSet
|
|
.FirstOrDefaultAsync(m => m.MessageCode == messageCode && m.ServiceId == serviceId && !m.IsDeleted);
|
|
}
|
|
|
|
public async Task<int> GetTodaySequenceAsync(long serviceId)
|
|
{
|
|
var todayStart = DateTime.UtcNow.Date;
|
|
var todayEnd = todayStart.AddDays(1);
|
|
|
|
return await _dbSet
|
|
.CountAsync(m => m.ServiceId == serviceId
|
|
&& m.CreatedAt >= todayStart
|
|
&& m.CreatedAt < todayEnd);
|
|
}
|
|
|
|
public async Task<(IReadOnlyList<Message> Items, int TotalCount)> GetPagedByServiceAsync(
|
|
long serviceId, int page, int size,
|
|
Expression<Func<Message, bool>>? predicate = null)
|
|
{
|
|
var query = _dbSet
|
|
.Where(m => m.ServiceId == serviceId && !m.IsDeleted);
|
|
|
|
if (predicate != null)
|
|
query = query.Where(predicate);
|
|
|
|
var totalCount = await query.CountAsync();
|
|
|
|
var items = await query
|
|
.OrderByDescending(m => m.CreatedAt)
|
|
.Skip((page - 1) * size)
|
|
.Take(size)
|
|
.ToListAsync();
|
|
|
|
return (items, totalCount);
|
|
}
|
|
}
|