package backend

import (
	"fmt"
	"io"
	"log"
	"os"
)

func CopyFile(src, dst string) error {
	srcFile, err := os.Open(src)
	if err != nil {
		return fmt.Errorf("error opening source file: %v", err)
	}
	defer srcFile.Close()

	dstFile, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
	if err != nil {
		return fmt.Errorf("error opening destination file: %v", err)
	}
	defer dstFile.Close()

	if _, err = io.Copy(dstFile, srcFile); err != nil {
		return fmt.Errorf("error copying file: %v", err)
	}

	return dstFile.Sync()
}

func WriteFile(path string, src io.Reader) error {
	file, err := os.Create(path)
	if err != nil {
		log.Println(err)
		return fmt.Errorf("error creating file: %v", err)
	}
	defer file.Close()

	if _, err = io.Copy(file, src); err != nil {
		log.Println(err)
		return fmt.Errorf("error copying file: %v", err)
	}

	if err = file.Sync(); err != nil {
		log.Println(err)
		return fmt.Errorf("error syncing file: %v", err)
	}

	return nil
}