mirror of
https://github.com/ManyakRus/crud_generator.git
synced 2024-12-22 00:36:41 +02:00
77 lines
1.5 KiB
Go
77 lines
1.5 KiB
Go
package faker
|
|
|
|
import (
|
|
"reflect"
|
|
)
|
|
|
|
var address Addresser
|
|
|
|
// GetAddress returns a new Addresser interface of Address
|
|
func GetAddress() Addresser {
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
|
|
if address == nil {
|
|
address = &Address{}
|
|
}
|
|
return address
|
|
}
|
|
|
|
// SetAddress sets custom Address
|
|
func SetAddress(net Addresser) {
|
|
address = net
|
|
}
|
|
|
|
// Addresser is logical layer for Address
|
|
type Addresser interface {
|
|
Latitude(v reflect.Value) (interface{}, error)
|
|
Longitude(v reflect.Value) (interface{}, error)
|
|
}
|
|
|
|
// Address struct
|
|
type Address struct{}
|
|
|
|
func (i Address) latitude() float32 {
|
|
return (rand.Float32() * 180) - 90
|
|
}
|
|
|
|
// Latitude sets latitude of the address
|
|
func (i Address) Latitude(v reflect.Value) (interface{}, error) {
|
|
kind := v.Kind()
|
|
val := i.latitude()
|
|
if kind == reflect.Float32 {
|
|
return val, nil
|
|
}
|
|
return float64(val), nil
|
|
}
|
|
|
|
func (i Address) longitude() float32 {
|
|
return (rand.Float32() * 360) - 180
|
|
}
|
|
|
|
// Longitude sets longitude of the address
|
|
func (i Address) Longitude(v reflect.Value) (interface{}, error) {
|
|
kind := v.Kind()
|
|
val := i.longitude()
|
|
if kind == reflect.Float32 {
|
|
return val, nil
|
|
}
|
|
return float64(val), nil
|
|
}
|
|
|
|
// Longitude get fake longitude randomly
|
|
func Longitude() float64 {
|
|
return singleFakeData(LONGITUDE, func() interface{} {
|
|
address := Address{}
|
|
return float64(address.longitude())
|
|
}).(float64)
|
|
}
|
|
|
|
// Latitude get fake latitude randomly
|
|
func Latitude() float64 {
|
|
return singleFakeData(LATITUDE, func() interface{} {
|
|
address := Address{}
|
|
return float64(address.latitude())
|
|
}).(float64)
|
|
}
|