package spindle

import (
	"context"
	"fmt"
	"log/slog"

	"tangled.org/core/spindle/db"
)

func cleanupOrphanRepos(ctx context.Context, d *db.DB, logger *slog.Logger) error {
	res, err := d.ExecContext(ctx, `
		delete from repos
		where coalesce(repo_did, '') = ''
		  and exists (
		    select 1 from repos r2
		    where r2.owner = repos.owner
		      and coalesce(r2.repo_did, '') <> ''
		  )
	`)
	if err != nil {
		return fmt.Errorf("delete orphan repos: %w", err)
	}
	n, _ := res.RowsAffected()
	if n > 0 {
		logger.Info("cleaned up orphan repos missing repo_did", "deleted", n)
	}
	return nil
}
