package com.persagy.legend.services

import com.persagy.legend.models.entities.PipelineCategory
import com.sybotan.database.SFilter
import com.sybotan.mybatis.SMybatisDao
import com.sybotan.service.SObjectService
import com.sybotan.service.models.enums.SResponseType
import com.sybotan.service.models.responses.SQueryResponse
import java.util.*

/**
 * 管线服务
 *
 * @author wx  <zhangweixin@sagacloud.com>
 * @date  2020/11/5 10:17
 */
object PipelineCategoryService: SObjectService<PipelineCategory>(SMybatisDao(PipelineCategory::class.java)) {

    /**
     * 查询管线类型
     *
     * @return 返回结果
     */
    fun categoryQuery(): SQueryResponse<PipelineCategory> {
        return try {
            /** 返回对象 */
            val sQueryResponse = SQueryResponse<PipelineCategory>()
            /** 查询一级节点 */
            val pipelineCategoryList = select(SFilter.isNull("parentId")).exec()
            /** 遍历节点 */
            for (pipelineCategory in pipelineCategoryList){
                /** 查询子节点 */
                pipelineCategory.categoryList = select(SFilter.eq("parentId",pipelineCategory.id!!)).exec()
            }

            /** 类型列表 */
            sQueryResponse.content = pipelineCategoryList
            /** 类型长度 */
            sQueryResponse.total = pipelineCategoryList.size.toLong()
            /** 类型标志 */
            sQueryResponse.result = SResponseType.success
            /** 返回的对象 */
            sQueryResponse
        } catch (e: Exception) {
            e.printStackTrace()
            SQueryResponse(SResponseType.failure,e.message!!)
        }
    }

    /**
     * 创建之前操作
     *
     * @param entity    管线类型对象
     * @return 是否执行
     */
    override fun onCreateBefore(entity: PipelineCategory): Boolean {
        /** id 为空赋值 */
        if (entity.id.isNullOrEmpty()){
            entity.id = UUID.randomUUID().toString().replace("-", "")
        }
        return super.onCreateBefore(entity)
    }

}