25 lines
		
	
	
		
			448 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			448 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package xidgql
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"io"
 | |
| 	"strconv"
 | |
| 
 | |
| 	"github.com/99designs/gqlgen/graphql"
 | |
| 	"github.com/rs/xid"
 | |
| )
 | |
| 
 | |
| func MarshalID(id xid.ID) graphql.Marshaler {
 | |
| 	return graphql.WriterFunc(func(w io.Writer) {
 | |
| 		_, _ = io.WriteString(w, strconv.Quote(id.String()))
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func UnmarshalID(v interface{}) (id xid.ID, err error) {
 | |
| 	s, ok := v.(string)
 | |
| 	if !ok {
 | |
| 		return id, fmt.Errorf("invalid type %T, expect string", v)
 | |
| 	}
 | |
| 	return xid.FromString(s)
 | |
| }
 |