🏡 index : quine-global/quintodrome.git

package tests

import (
	"context"

	"github.com/navidrome/navidrome/model"
)

type MockShareRepo struct {
	model.ShareRepository

	Entity any
	ID     string
	Cols   []string
	Error  error
}

func (m *MockShareRepo) Save(_ context.Context, s *model.Share) (string, error) {
	if m.Error != nil {
		return "", m.Error
	}
	if s.ID == "" {
		s.ID = "id"
	}
	m.Entity = s
	return s.ID, nil
}

func (m *MockShareRepo) Update(_ context.Context, id string, entity model.Share, cols ...string) error {
	if m.Error != nil {
		return m.Error
	}
	m.ID = id
	m.Entity = &entity
	m.Cols = cols
	return nil
}

func (m *MockShareRepo) Exists(_ context.Context, id string) (bool, error) {
	if m.Error != nil {
		return false, m.Error
	}
	return id == m.ID, nil
}

func (m *MockShareRepo) Get(_ context.Context, id string) (*model.Share, error) {
	if m.Error != nil {
		return nil, m.Error
	}
	if id != m.ID {
		return nil, model.ErrNotFound
	}
	if s, ok := m.Entity.(*model.Share); ok {
		return s, nil
	}
	return &model.Share{ID: id}, nil
}