package graphbuilder

import (
	"fmt"
	"io"
	"sync"
)

type progressLogger struct {
	mu     sync.Mutex
	writer io.Writer
}

func newProgressLogger(writer io.Writer) *progressLogger {
	return &progressLogger{writer: writer}
}

func (logger *progressLogger) Printf(format string, args ...any) {
	if logger == nil || logger.writer == nil {
		return
	}
	logger.mu.Lock()
	defer logger.mu.Unlock()
	_, _ = fmt.Fprintf(logger.writer, "[graph-builder] "+format+"\n", args...)
}

func (logger *progressLogger) Write(data []byte) (int, error) {
	if logger == nil || logger.writer == nil {
		return len(data), nil
	}
	logger.mu.Lock()
	defer logger.mu.Unlock()
	return logger.writer.Write(data)
}
