package repository

import (
	"context"
	"dataservices/commons/errs"
	"dataservices/internal/entity"
)

func SubmitDataAppLogDownloadTask(ctx context.Context, task *entity.DataAppLogDownloadTask) (*entity.DataAppLogDownloadTask, error) {
	if err := MustFromContext(ctx).Table(entity.TableDataAppLogDownloadTask).Create(task).Error; err != nil {
		return nil, errs.WrapGORMError(err, "Failed to create download task")
	}
	return task, nil
}

func GetDataAppLogDownloadTask(ctx context.Context, taskId uint64) (*entity.DataAppLogDownloadTask, error) {
	res := entity.DataAppLogDownloadTask{}
	err := MustFromContext(ctx).Table(entity.TableDataAppLogDownloadTask).Where("id=?", taskId).First(&res).Error
	if err != nil {
		return nil, errs.WrapGORMError(err, "Failed to get task: %d", taskId)
	}
	return &res, nil
}

func UpdateDataAppLogDownloadTask(ctx context.Context, taskId uint64, status, url, message string) error {
	updater := map[string]interface{}{
		"status":  status,
		"url":     url,
		"message": message,
	}
	err := MustFromContext(ctx).Table(entity.TableDataAppLogDownloadTask).Where("id=?", taskId).Updates(updater).Error
	if err != nil {
		return errs.WrapGORMError(err, "Failed to get task: %d", taskId)
	}
	return nil
}
