package entities

import (
	"encoding/json"
	"errors"
	"fmt"
)

// jsonScan scans a src value to dest object. If the src data is nil, dest is set to zero value by given setZero function.
func jsonScan(src interface{}, dest interface{}, setZero func()) error {
	if src == nil {
		setZero()
		return nil
	}

	var bytes []byte
	switch v := src.(type) {
	case []byte:
		bytes = v
	case string:
		bytes = []byte(v)
	default:
		return errors.New(fmt.Sprint("Failed dest unmarshal JSONB src:", src))
	}

	return json.Unmarshal(bytes, dest)
}

/*--------------------------------------------------------------------------------------------------------------------*/

var OrderByASC OrderBy = "asc"
var OrderByDESC OrderBy = "desc"

type OrderBy string

func (s OrderBy) String() string {
	return string(s)
}

type SortBy string

func (s SortBy) String() string {
	return string(s)
}
