package cn.novalon.gym.manage.sys.core.service;

import cn.novalon.gym.manage.common.dto.PageRequest;
import cn.novalon.gym.manage.common.dto.PageResponse;
import cn.novalon.gym.manage.sys.core.domain.OperationLog;
import cn.novalon.gym.manage.sys.core.query.OperationLogQuery;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 操作日志服务接口
 * 
 * @author 张翔
 * @date 2026-03-13
 */
public interface IOperationLogService {
    Mono<OperationLog> save(OperationLog log);
    Flux<OperationLog> findAll();
    Mono<OperationLog> findById(Long id);
    Flux<OperationLog> findByUsername(String username);
    Mono<PageResponse<OperationLog>> findByQueryWithPagination(OperationLogQuery query, PageRequest pageRequest);
    Mono<Long> count();
    Mono<Long> countToday();
}
