package  pgproto3 
 
import  ( 
	"bytes"  
	"encoding/binary"  
	"encoding/json"  
	"errors"  
 
	"github.com/jackc/pgx/v5/internal/pgio"  
) 
 
type  CopyInResponse  struct  { 
	OverallFormat     byte  
	ColumnFormatCodes []uint16  
} 
 
 
func  (*CopyInResponse ) Backend () {} 
 
 
 
func  (dst  *CopyInResponse ) Decode (src  []byte ) error  { 
	buf  := bytes .NewBuffer (src ) 
 
	if  buf .Len () < 3  { 
		return  &invalidMessageFormatErr {messageType : "CopyInResponse" } 
	} 
 
	overallFormat  := buf .Next (1 )[0 ] 
 
	columnCount  := int (binary .BigEndian .Uint16 (buf .Next (2 ))) 
	if  buf .Len () != columnCount *2  { 
		return  &invalidMessageFormatErr {messageType : "CopyInResponse" } 
	} 
 
	columnFormatCodes  := make ([]uint16 , columnCount ) 
	for  i  := 0 ; i  < columnCount ; i ++ { 
		columnFormatCodes [i ] = binary .BigEndian .Uint16 (buf .Next (2 )) 
	} 
 
	*dst  = CopyInResponse {OverallFormat : overallFormat , ColumnFormatCodes : columnFormatCodes } 
 
	return  nil  
} 
 
 
func  (src  *CopyInResponse ) Encode (dst  []byte ) []byte  { 
	dst  = append (dst , 'G' ) 
	sp  := len (dst ) 
	dst  = pgio .AppendInt32 (dst , -1 ) 
 
	dst  = append (dst , src .OverallFormat ) 
	dst  = pgio .AppendUint16 (dst , uint16 (len (src .ColumnFormatCodes ))) 
	for  _ , fc  := range  src .ColumnFormatCodes  { 
		dst  = pgio .AppendUint16 (dst , fc ) 
	} 
 
	pgio .SetInt32 (dst [sp :], int32 (len (dst [sp :]))) 
 
	return  dst  
} 
 
 
func  (src  CopyInResponse ) MarshalJSON () ([]byte , error ) { 
	return  json .Marshal (struct  { 
		Type               string  
		ColumnFormatCodes  []uint16  
	}{ 
		Type :              "CopyInResponse" , 
		ColumnFormatCodes : src .ColumnFormatCodes , 
	}) 
} 
 
 
func  (dst  *CopyInResponse ) UnmarshalJSON (data  []byte ) error  { 
	 
	if  string (data ) == "null"  { 
		return  nil  
	} 
 
	var  msg  struct  { 
		OverallFormat      string  
		ColumnFormatCodes  []uint16  
	} 
	if  err  := json .Unmarshal (data , &msg ); err  != nil  { 
		return  err  
	} 
 
	if  len (msg .OverallFormat ) != 1  { 
		return  errors .New ("invalid length for CopyInResponse.OverallFormat" ) 
	} 
 
	dst .OverallFormat  = msg .OverallFormat [0 ] 
	dst .ColumnFormatCodes  = msg .ColumnFormatCodes  
	return  nil  
} 
  
The pages are generated with Golds   v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds  is a Go 101  project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1  (reachable from the left QR code) to get the latest news of Golds .