package datatypes

import (
	
	
	
	
	
	

	
	
)

type URL url.URL

func ( URL) () (driver.Value, error) {
	return .String(), nil
}

func ( *URL) ( interface{}) error {
	var  string
	switch v := .(type) {
	case []byte:
		 = string()
	case string:
		 = 
	default:
		return errors.New(fmt.Sprint("Failed to parse URL:", ))
	}
	,  := url.Parse()
	if  != nil {
		return 
	}
	* = URL(*)
	return nil
}

func (URL) () string {
	return "url"
}

func (URL) ( *gorm.DB,  *schema.Field) string {
	return "TEXT"
}

func ( *URL) () string {
	return (*url.URL)().String()
}

func ( URL) () ([]byte, error) {
	return json.Marshal(.String())
}

func ( *URL) ( []byte) error {
	// ignore null
	if string() == "null" {
		return nil
	}
	,  := url.Parse(strings.Trim(string(), `"'`))
	if  != nil {
		return 
	}
	* = URL(*)
	return nil
}