package cn.crap.service.mybatis.imp;

import cn.crap.dao.mybatis._DEMAIN_Mapper;
import cn.crap.framework.IdGenerator;
import cn.crap.enumeration.TableId;
import cn.crap.model.mybatis._DEMAIN_;
import cn.crap.model.mybatis._DEMAIN_Criteria;
import cn.crap.utils.TableField;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

import java.util.Date;
import java.util.List;

/**
 * Automatic generation by tools
 * service
 */
@Service
public class Mybatis_DEMAIN_Service {
    @Autowired
    private _DEMAIN_Mapper mapper;

    public List<_DEMAIN_> selectByExample(_DEMAIN_Criteria example) {
        return mapper.selectByExample(example);
    }

    public int countByExample(_DEMAIN_Criteria example) {
        return mapper.countByExample(example);
    }

    public _DEMAIN_ selectByPrimaryKey(String id) {
        if (id == null){
            return null;
        }
        return mapper.selectByPrimaryKey(id);
    }

    public boolean insert(_DEMAIN_ model) {
        if (model == null) {
            return false;
        }
        model.setId(IdGenerator.getId(TableId._TABLEID_));
        if (model.getSequence() == null){
            _DEMAIN_Criteria example = new _DEMAIN_Criteria();
            example.setOrderByClause(TableField.SORT.SEQUENCE_DESC);
            example.setMaxResults(1);
            List<_DEMAIN_>  models = this.selectByExample(example);
            if (models.size() > 0){
                model.setSequence(models.get(0).getSequence() + 1);
            }else{
                model.setSequence(0);
            }
        }
        model.setCreateTime(new Date());
        return mapper.insertSelective(model) > 0;
    }

    public boolean update(_DEMAIN_ model) {
        if (model == null) {
            return false;
        }
        return mapper.updateByPrimaryKeySelective(model) > 0 ? true : false;
    }

    public boolean delete(String id) {
        Assert.notNull(id, "id can't be null");
        return mapper.deleteByPrimaryKey(id) > 0 ? true : false;
    }

}
