package api

import (
	"errors"

	"github.com/gin-gonic/gin"
)

var (
	// Session
	ErrSessionNotFound = errors.New("session not found")
	ErrSessionInvalid  = errors.New("session invalid")
	ErrTokenMissing    = errors.New("token missing")

	// Request
	ErrReqMissingBody = errors.New("missing body")
	ErrReqNotFound    = errors.New("this route doesn't exists")

	// Account
	ErrAccountExists = errors.New("account exists")
	ErrAccountAuth   = errors.New("login or password incorrect")

	// Panic
	ErrUnexpected = errors.New("an unexpected error occur")

	// Album
	ErrAlbumDontExists = errors.New("album doesn't exists")

	// Store
	ErrStorePathNotADirectory = errors.New("store path is not a directory")
	ErrStoreBadChecksum       = errors.New("checksum should be sha1 in hex format")
	ErrStoreBadChunkSize      = errors.New("part file size should be 1MB max")
	ErrStoreWrongPartChecksum = errors.New("part file wrong checksum")
	ErrStoreBadPartNumber     = errors.New("part should be a positive number")
	ErrStoreMismatchChecksum  = errors.New("part files doesn't match the original checksum")
)

func (s *Service) Error(c *gin.Context, code int, err error) {
	c.AbortWithStatusJSON(code, gin.H{
		"status": "failed",
		"error":  err.Error(),
	})
}