package backup

import (
	"github.com/pingcap/log"
)

func (m *Manager) migrateNeeded() (bool, error) {
	// 1. check if migrate flag is set.
	if !m.config.Migrate {
		return false, nil
	}

	// 2. check if "latest" folder exists in the dest path.
	latestExists, err := m.store.Exists(m.ctx, IncrementalBackupPath)
	if err != nil {
		return false, err
	}
	if latestExists {
		return false, nil
	}

	// 3. check if backup data exists in the dest path.
	dataExists, err := m.store.Exists(m.ctx, "data")
	if err != nil {
		return false, err
	}
	log.S().Infof("data exists: %v", dataExists)
	idxdbExists, err := m.store.Exists(m.ctx, "indexdb")
	if err != nil {
		return false, err
	}
	log.S().Infof("indexdb exists: %v", idxdbExists)
	metaExists, err := m.store.Exists(m.ctx, "metadata")
	if err != nil {
		return false, err
	}
	log.S().Infof("meta exists: %v", metaExists)

	return dataExists && idxdbExists && metaExists, nil
}
