github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/types/pgeo/box.go (about)

     1  package pgeo
     2  
     3  import (
     4  	"database/sql/driver"
     5  	"errors"
     6  	"fmt"
     7  )
     8  
     9  // Box is represented by pairs of points that are opposite corners of the box.
    10  type Box [2]Point
    11  
    12  // Value for the database
    13  func (b Box) Value() (driver.Value, error) {
    14  	return valueBox(b)
    15  }
    16  
    17  // Scan from sql query
    18  func (b *Box) Scan(src interface{}) error {
    19  	return scanBox(b, src)
    20  }
    21  
    22  func valueBox(b Box) (driver.Value, error) {
    23  	return fmt.Sprintf(`(%s)`, formatPoints(b[:])), nil
    24  }
    25  
    26  func scanBox(b *Box, src interface{}) error {
    27  	if src == nil {
    28  		*b = NewBox(Point{}, Point{})
    29  		return nil
    30  	}
    31  
    32  	points, err := parsePointsSrc(src)
    33  	if err != nil {
    34  		return err
    35  	}
    36  
    37  	if len(points) != 2 {
    38  		return errors.New("wrong box")
    39  	}
    40  
    41  	*b = NewBox(points[0], points[1])
    42  
    43  	return nil
    44  }
    45  
    46  func randBox(nextInt func() int64) Box {
    47  	return Box([2]Point{randPoint(nextInt), randPoint(nextInt)})
    48  }
    49  
    50  // Randomize for sqlboiler
    51  func (b *Box) Randomize(nextInt func() int64, fieldType string, shouldBeNull bool) {
    52  	*b = randBox(nextInt)
    53  }