package com.emotion.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.emotion.common.PageResult;
import com.emotion.dto.request.userprofile.UserProfileCreateRequest;
import com.emotion.dto.request.userprofile.UserProfilePageRequest;
import com.emotion.dto.request.userprofile.UserProfileUpdateRequest;
import com.emotion.dto.response.userprofile.UserProfileResponse;
import com.emotion.entity.UserProfile;

import java.util.List;

/**
 * 用户档案服务接口
 *
 * @author huazhongmin
 * @date 2025-12-21
 */
public interface UserProfileService extends IService<UserProfile> {

    /**
     * 创建用户档案
     *
     * @param request 创建请求
     * @return 用户档案响应对象
     */
    UserProfileResponse createProfile(UserProfileCreateRequest request);

    /**
     * 更新用户档案
     *
     * @param request 更新请求
     * @return 用户档案响应对象
     */
    UserProfileResponse updateProfile(UserProfileUpdateRequest request);

    /**
     * 获取用户档案详情
     *
     * @param id 档案ID
     * @return 用户档案响应对象
     */
    UserProfileResponse getProfileById(String id);

    /**
     * 获取当前用户档案详情
     *
     * @return 用户档案响应对象
     */
    UserProfileResponse getCurrentUserProfile();

    /**
     * 分页查询用户档案
     *
     * @param request 分页请求
     * @return 分页结果
     */
    PageResult<UserProfileResponse> getProfilePage(UserProfilePageRequest request);

    /**
     * 列表查询用户档案
     *
     * @param request 查询请求
     * @return 列表结果
     */
    List<UserProfileResponse> getProfileList(UserProfilePageRequest request);

    /**
     * 删除用户档案
     *
     * @param id 档案ID
     * @return 是否成功
     */
    boolean deleteProfile(String id);

    /**
     * 迁移用户档案中的生命事件数据到t_life_event表
     * 将childhood、peak、valley数据迁移到生命事件表
     *
     * @return 迁移的记录数
     */
    int migrateLifeEventsFromProfiles();
}
