Files
mp-qvyun/backend/modules/tasks/store/store_medias.go
2024-12-05 18:57:49 +08:00

71 lines
1.6 KiB
Go

package store
import (
"context"
"backend/common/media_store"
"backend/modules/medias"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/samber/lo"
log "github.com/sirupsen/logrus"
)
// @provider
type StoreMedias struct {
mediasSvc *medias.Service
log *log.Entry `inject:"false"`
}
// Prepare
func (d *StoreMedias) Prepare() error {
d.log = log.WithField("module", "StoreMedias")
return nil
}
func (d *StoreMedias) RunE(targetPath string) error {
d.log.Infof("Store medias from: %s ", targetPath)
store, err := media_store.NewStore(targetPath)
if err != nil {
return errors.Wrapf(err, "new store: %s", targetPath)
}
// uuids := lo.FilterMap(store.UUIDs(), func(item string, _ int) (uuid.UUID, bool) {
// u, err := uuid.FromBytes([]byte(item))
// if err != nil {
// return uuid.Nil, false
// }
// return u, true
// })
if err := d.mediasSvc.UnPublishTenantWithNotInUUIDs(context.Background(), 1, store.UUIDs()); err != nil {
return errors.Wrapf(err, "UnPublishTenantWithNotInUUIDs: %+v", store.UUIDs())
}
dbUUIDs, err := d.mediasSvc.GetTenantUUIDs(context.Background(), 1)
if err != nil {
return errors.Wrap(err, "GetTenantUUIDs")
}
for _, item := range store {
if lo.Contains(dbUUIDs, item.UUID) {
continue
}
u, err := uuid.FromBytes([]byte(item.UUID))
if err != nil {
return errors.Wrap(err, "uuid from bytes")
}
if err := d.mediasSvc.PublishTenantMedia(context.Background(), 1, u, item.Name, item.Price); err != nil {
return errors.Wrapf(err, "PublishTenant: %+v", item)
}
d.log.Infof("PublishTenant: %+v", item)
}
return nil
}