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 }