package com.njcn.rdms.module.system.dal.mysql.user;

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.njcn.rdms.framework.mybatis.core.mapper.BaseMapperX;
import com.njcn.rdms.module.system.dal.dataobject.user.UserPreferenceDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.Map;

@Mapper
public interface UserPreferenceMapper extends BaseMapperX<UserPreferenceDO> {

    default UserPreferenceDO selectByUserId(Long userId) {
        // 主题偏好按 user_id 一对一绑定，查询入口只保留按用户读取。
        return selectOne(UserPreferenceDO::getUserId, userId);
    }

    default int updateThemeSettingsByUserId(Long userId, Map<String, Object> themeSettingsJson) {
        UserPreferenceDO updateObj = new UserPreferenceDO();
        updateObj.setThemeSettingsJson(themeSettingsJson);
        // 只更新主题 JSON 字段，避免误改用户归属；允许更新为 null，用于“重置主题”场景。
        return update(updateObj, new LambdaUpdateWrapper<UserPreferenceDO>()
                .eq(UserPreferenceDO::getUserId, userId));
    }

}
