package com.rf.psychological.scale.service.impl;

import com.querydsl.jpa.impl.JPAQueryFactory;
import com.rf.psychological.scale.dao.model.ScaleConfigEntity;
import com.rf.psychological.scale.dao.repository.ScaleConfigRepository;
import com.rf.psychological.scale.service.ScaleConfigService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

/**
 * @author lpf
 * @description:
 * @date 2022/5/28 16:29
 */
@Service
public class ScaleConfigServiceImpl implements ScaleConfigService {

    @Autowired
    private JPAQueryFactory queryFactory;

    @Autowired
    private ScaleConfigRepository scaleConfigRepository;


    @Override
    public List<ScaleConfigEntity> findScaleConfigByType(String type) {
        ScaleConfigEntity scaleConfigEntity = new ScaleConfigEntity();
        scaleConfigEntity.setType(type);
        return scaleConfigRepository.findAll(Example.of(scaleConfigEntity));
    }

    @Override
    public ScaleConfigEntity findScaleConfigByFlag(String flag) {
        ScaleConfigEntity scaleConfigEntity = new ScaleConfigEntity();
        scaleConfigEntity.setFlag(flag);
        Optional<ScaleConfigEntity> one = scaleConfigRepository.findOne(Example.of(scaleConfigEntity));
        return one.orElse(null);
    }

    @Override
    public ScaleConfigEntity insertOne(ScaleConfigEntity scaleConfigEntity) {
        return scaleConfigRepository.save(scaleConfigEntity);
    }

    @Override
    public void updateResultConfig(String flag, String resultConfig) {
         scaleConfigRepository.updateByFlag(flag, resultConfig);
    }

    @Override
    public void deleteByFlag(String flag) {
        if (StringUtils.isEmpty(flag)) {
            throw new RuntimeException("flag为空值");
        }
        scaleConfigRepository.deleteScaleConfigEntitiesByFlag(flag);
    }
}
