package logic

import (
	"github.com/fonchain-artistserver/cmd/internal/dao"
	"github.com/fonchain-artistserver/pb/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
}