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

     1  package pgeo
     2  
     3  import (
     4  	"database/sql/driver"
     5  	"errors"
     6  	"fmt"
     7  )
     8  
     9  // Lseg is a line segment and is represented by pairs of points that are the endpoints of the segment.
    10  type Lseg [2]Point
    11  
    12  // Value for the database
    13  func (l Lseg) Value() (driver.Value, error) {
    14  	return valueLseg(l)
    15  }
    16  
    17  // Scan from sql query
    18  func (l *Lseg) Scan(src interface{}) error {
    19  	return scanLseg(l, src)
    20  }
    21  
    22  func valueLseg(l Lseg) (driver.Value, error) {
    23  	return fmt.Sprintf(`[%s]`, formatPoints(l[:])), nil
    24  }
    25  
    26  func scanLseg(l *Lseg, src interface{}) error {
    27  	if src == nil {
    28  		*l = NewLseg(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 lseg")
    39  	}
    40  
    41  	*l = NewLseg(points[0], points[1])
    42  
    43  	return nil
    44  }
    45  
    46  func randLseg(nextInt func() int64) Lseg {
    47  	return Lseg([2]Point{randPoint(nextInt), randPoint(nextInt)})
    48  }
    49  
    50  // Randomize for sqlboiler
    51  func (l *Lseg) Randomize(nextInt func() int64, fieldType string, shouldBeNull bool) {
    52  	*l = randLseg(nextInt)
    53  }