package database

import (
	"errors"
	"io/fs"
	"os"
	"time"
)

func isFileExist(fileName string) (bool, error) {
	_, err := os.Stat(fileName)
	if err != nil {
		if errors.Is(err, fs.ErrNotExist) {
			return false, nil
		} else {
			return false, err
		}
	} else {
		return true, nil
	}
}

func (s *Database) appendJobToWorkerQueue(job any) {
	s.mutex.Lock()
	s.workerQueue = append(s.workerQueue, job)
	s.mutex.Unlock()

	select {
	case s.workerSignalCh <- struct{}{}:
	default:
	}
}

func (s *Database) metricRUnlock(metricID uint32) {
	s.mutex.Lock()
	s.rLocksToRelease = append(s.rLocksToRelease, metricID)
	s.mutex.Unlock()

	select {
	case s.workerSignalCh <- struct{}{}:
	default:
	}
}

func correctToFHD(since, until uint32, firstHourOfDay int) (uint32, uint32) {
	duration := time.Duration(firstHourOfDay) * time.Hour
	since = uint32(time.Unix(int64(since), 0).Add(duration).Unix())
	until = uint32(time.Unix(int64(until), 0).Add(duration).Unix())
	return since, until
}
