package service

import (
	"fmt"

	"be.ems/src/modules/trace/model"
	"be.ems/src/modules/trace/repository"
)

// 实例化数据层 TraceData 结构体
var NewTraceData = &TraceData{
	traceDataRepository: repository.NewTraceData,
}

// TraceData 跟踪_数据 服务层处理
type TraceData struct {
	// 跟踪_数据信息
	traceDataRepository *repository.TraceData
}

// FindByPage 根据条件分页查询
func (r *TraceData) FindByPage(query map[string]string) ([]model.TraceData, int64) {
	return r.traceDataRepository.SelectByPage(query)
}

// FindById 通过ID查询
func (r *TraceData) FindById(id int64) model.TraceData {
	tasks := r.traceDataRepository.SelectByIds([]int64{id})
	if len(tasks) > 0 {
		return tasks[0]
	}
	return model.TraceData{}
}

// Insert 新增信息
func (r *TraceData) Insert(task model.TraceData) int64 {
	return r.traceDataRepository.Insert(task)
}

// DeleteByIds 批量删除信息
func (r *TraceData) DeleteByIds(ids []int64) (int64, error) {
	// 检查是否存在
	rows := r.traceDataRepository.SelectByIds(ids)
	if len(rows) <= 0 {
		return 0, fmt.Errorf("not data")
	}

	if len(rows) == len(ids) {
		rows := r.traceDataRepository.DeleteByIds(ids)
		return rows, nil
	}
	// 删除信息失败！
	return 0, fmt.Errorf("delete fail")
}
