func()

in PetAdoptions/payforadoption-go/payforadoption/service.go [51:81]


func (s service) CompleteAdoption(ctx context.Context, petId, petType string) (Adoption, error) {
	logger := log.With(s.logger, "method", "CompleteAdoption")

	uuid, _ := uuid.NewV4()
	a := Adoption{
		TransactionID: uuid.String(),
		PetID:         petId,
		PetType:       petType,
		AdoptionDate:  time.Now(),
	}

	// Introduce memory leaks for pettype bunnies. Sorry bunnies :)
	if petType == "bunny" {
		if s.repository.ErrorModeOn(ctx) {
			level.Error(logger).Log("errorMode", "On")
			memoryLeak()
			return a, errors.New("Illegal memory allocation")
		} else {
			level.Error(logger).Log("errorMode", "Off")
		}
	}

	if err := s.repository.CreateTransaction(ctx, a); err != nil {
		level.Error(logger).Log("err", err)
		return Adoption{}, err
	}

	err := s.repository.UpdateAvailability(ctx, a)

	return a, err
}