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

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