package mutil

import (
	"context"

	"github.com/tech/sendico/pkg/db/repository"
	"github.com/tech/sendico/pkg/db/storable"
	"github.com/tech/sendico/pkg/mlogger"
	"go.mongodb.org/mongo-driver/v2/bson"
	"go.uber.org/zap"
)

func GetObjectByID(ctx context.Context, logger mlogger.Logger, id string, val storable.Storable, repo repository.Repository) error {
	p, err := bson.ObjectIDFromHex(id)
	if err != nil {
		logger.Warn("Failed to decode object reference", zap.String("reference", id), zap.String("collection", val.Collection()))
		return err
	}
	return repo.Get(ctx, p, val)
}
