// Package logic -----------------------------
// @file      : artwork.go
// @author    : JJXu
// @contact   : wavingbear@163.com
// @time      : 2023/2/25 0:12
// -------------------------------------------
package logic

import (
	"github.com/fonchain/fonchain-artistinfo/cmd/internal/old/dao"
	"github.com/fonchain/fonchain-artistinfo/pb/old/artwork"
)

type IArtWork interface {
	ArtworkAdd(req *artwork.ArtworkAddRequest) (rep *artwork.ArtworkAddRespond, err error)
	UpdateArtwork(req *artwork.UpdateArtworkRequest) (rep *artwork.UpdateArtworkRespond, err error)
	DelArtwork(req *artwork.DelArtworkRequest) (rep *artwork.DelArtworkRespond, err error)
	GetArtworkList(req *artwork.GetArtworkListRequest) (rep *artwork.GetArtworkListRespond, err error)
	GetArtwork(req *artwork.GetArtworkRequest) (rep *artwork.GetArtworkRespond, err error)
	UploadArtwork(req *artwork.UploadArtworkRequest) (rep *artwork.UploadArtworkRespond, err error)
}

func NewArtWork() IArtWork {
	return &Artwork{}
}

type Artwork struct {
}

func (a *Artwork) ArtworkAdd(req *artwork.ArtworkAddRequest) (rep *artwork.ArtworkAddRespond, err error) {
	rep = &artwork.ArtworkAddRespond{}
	_, err = dao.ArtworkAdd(req)
	return
}

func (a *Artwork) UpdateArtwork(req *artwork.UpdateArtworkRequest) (rep *artwork.UpdateArtworkRespond, err error) {
	err = dao.UpdateArtwork(req)
	return
}

func (a *Artwork) DelArtwork(req *artwork.DelArtworkRequest) (rep *artwork.DelArtworkRespond, err error) {
	rep = &artwork.DelArtworkRespond{}

	if err = dao.DelArtwork(int32(req.Id)); err != nil {
		return
	}

	return
}

func (a *Artwork) GetArtworkList(req *artwork.GetArtworkListRequest) (rep *artwork.GetArtworkListRespond, err error) {
	rep, err = dao.GetArtworkList(req)
	return
}

func (a *Artwork) GetArtwork(req *artwork.GetArtworkRequest) (rep *artwork.GetArtworkRespond, err error) {
	rep, err = dao.GetArtwork(int32(req.ID))
	return
}

func (a *Artwork) UploadArtwork(req *artwork.UploadArtworkRequest) (rep *artwork.UploadArtworkRespond, err error) {

	err = dao.UploadArtwork(req.ID)
	return
}

func (a *Artwork) ApproveArtwork(req *artwork.ApproveArtworkRequest) (rep *artwork.ApproveArtworkRespond, err error) {

	rep, err = dao.ApproveArtwork(req)
	return
}