package base

import (
	"database/sql/driver"
	"errors"
	"fmt"
	"strings"
)

type Set []string

func (s *Set) Scan(value any) (err error) {
	var str string
	switch v := value.(type) {
	case []byte:
		str = string(v)
	case string:
		str = v
	default:
		return errors.New(fmt.Sprint("Failed to parse Set:", value))
	}

	*s = strings.Split(str, ",")
	return
}

func (s Set) Value() (driver.Value, error) {
	return strings.Join(s, ","), nil
}
