Mercurial > gemma
diff pkg/controllers/manualimports.go @ 2025:070ac9dd61a1 unify_imports
Bring manual imports to new import modeling.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 24 Jan 2019 18:19:43 +0100 |
parents | 9c65153bb56e |
children | 6b9f0fe741dc |
line wrap: on
line diff
--- a/pkg/controllers/manualimports.go Thu Jan 24 17:38:31 2019 +0100 +++ b/pkg/controllers/manualimports.go Thu Jan 24 18:19:43 2019 +0100 @@ -26,84 +26,70 @@ "gemma.intevation.de/gemma/pkg/models" ) -func importBottleneck(input interface{}) (interface{}, common.Attributes, bool) { +func importBottleneck(input interface{}) interface{} { bi := input.(*models.BottleneckImport) - bn := &imports.Bottleneck{ + return &imports.Bottleneck{ URL: bi.URL, Insecure: bi.Insecure, } - return bn, bi.Attributes, bi.SendEmail } -func importGaugeMeasurement(input interface{}) (interface{}, common.Attributes, bool) { +func importGaugeMeasurement(input interface{}) interface{} { gi := input.(*models.GaugeMeasurementImport) - gm := &imports.GaugeMeasurement{ + return &imports.GaugeMeasurement{ URL: gi.URL, Insecure: gi.Insecure, } - return gm, gi.Attributes, gi.SendEmail } -func importFairwayAvailability(input interface{}) (interface{}, common.Attributes, bool) { +func importFairwayAvailability(input interface{}) interface{} { fai := input.(*models.FairwayAvailabilityImport) - fa := &imports.FairwayAvailability{ + return &imports.FairwayAvailability{ URL: fai.URL, Insecure: fai.Insecure, } - return fa, fai.Attributes, fai.SendEmail } -func importWaterwayAxis(input interface{}) (interface{}, common.Attributes, bool) { +func importWaterwayAxis(input interface{}) interface{} { wxi := input.(*models.WaterwayAxisImport) - wx := &imports.WaterwayAxis{ + return &imports.WaterwayAxis{ URL: wxi.URL, FeatureType: wxi.FeatureType, SortBy: wxi.SortBy, } - return wx, wxi.Attributes, wxi.SendEmail } -func importWaterwayArea(input interface{}) (interface{}, common.Attributes, bool) { +func importWaterwayArea(input interface{}) interface{} { wai := input.(*models.WaterwayAreaImport) - wa := &imports.WaterwayArea{ + return &imports.WaterwayArea{ URL: wai.URL, FeatureType: wai.FeatureType, SortBy: wai.SortBy, } - return wa, wai.Attributes, wai.SendEmail } -func importWaterwayGauge(input interface{}) (interface{}, common.Attributes, bool) { +func importWaterwayGauge(input interface{}) interface{} { wgi := input.(*models.WaterwayGaugeImport) - username, _ := wgi.Attributes.Get("username") - password, _ := wgi.Attributes.Get("password") - insecure := wgi.Attributes.Bool("insecure") - wg := &imports.WaterwayGauge{ - URL: wgi.URL, - Username: username, - Password: password, - Insecure: insecure, + return &imports.WaterwayGauge{ + Username: nilString(wgi.User), + Password: nilString(wgi.Password), + Insecure: wgi.Insecure, } - return wg, wgi.Attributes, wgi.SendEmail } -func importDistancemarksVirtual(input interface{}) (interface{}, common.Attributes, bool) { +func importDistancemarksVirtual(input interface{}) interface{} { dmvi := input.(*models.DistanceMarksVirtualImport) - username, _ := dmvi.Attributes.Get("username") - password, _ := dmvi.Attributes.Get("password") - insecure := dmvi.Attributes.Bool("insecure") - wg := &imports.DistanceMarksVirtual{ + return &imports.DistanceMarksVirtual{ URL: dmvi.URL, - Username: username, - Password: password, - Insecure: insecure, + Username: nilString(dmvi.User), + Password: nilString(dmvi.Password), + Insecure: dmvi.Insecure, } - return wg, dmvi.Attributes, dmvi.SendEmail } -func importFairwayDimension(input interface{}) (interface{}, common.Attributes, bool) { +func importFairwayDimension(input interface{}) interface{} { fdi := input.(*models.FairwayDimensionImport) - fd := &imports.FairwayDimension{ + return &imports.FairwayDimension{ URL: fdi.URL, FeatureType: fdi.FeatureType, SortBy: fdi.SortBy, @@ -113,22 +99,20 @@ Depth: fdi.Depth, SourceOrganization: fdi.SourceOrganization, } - return fd, fdi.Attributes, fdi.SendEmail } -func importDistanceMarksAshore(input interface{}) (interface{}, common.Attributes, bool) { +func importDistanceMarksAshore(input interface{}) interface{} { dmai := input.(*models.DistanceMarksAshoreImport) - dma := &imports.DistanceMarksAshore{ + return &imports.DistanceMarksAshore{ URL: dmai.URL, FeatureType: dmai.FeatureType, SortBy: dmai.SortBy, } - return dma, dmai.Attributes, dmai.SendEmail } -func importStretch(input interface{}) (interface{}, common.Attributes, bool) { +func importStretch(input interface{}) interface{} { sti := input.(*models.StretchImport) - st := &imports.Stretch{ + return &imports.Stretch{ Name: sti.Name, From: sti.From, To: sti.To, @@ -138,7 +122,6 @@ Date: sti.Date, Countries: sti.Countries, } - return st, sti.Attributes, sti.SendEmail } func retry(a common.Attributes) (time.Time, *int, *time.Duration) { @@ -156,33 +139,54 @@ return due, retries, duration } +func nilString(s *string) string { + if s != nil { + return *s + } + return "" +} + func manualImport( kind imports.JobKind, - setup func(interface{}) (interface{}, common.Attributes, bool), + setup func(interface{}) interface{}, ) func(interface{}, *http.Request, *sql.Conn) (JSONResult, error) { return func(input interface{}, req *http.Request, _ *sql.Conn) ( jr JSONResult, err error) { - what, attrs, sendEmail := setup(input) - - due, retries, waitRetry := retry(attrs) - + what := setup(input) var serialized string if serialized, err = common.ToJSONString(what); err != nil { return } + var ( + due time.Time + trys *int + waitRetry *time.Duration + email bool + ) + + if qctg, ok := input.(models.QueueConfigurationGetter); ok { + qct := qctg.GetQueueConfiguration() + if qct.Due != nil { + due = *qct.Due + } + trys = qct.Trys + waitRetry = qct.WaitRetry + email = qct.EMail + } + session, _ := auth.GetSession(req) var jobID int64 if jobID, err = imports.AddJob( kind, due, - retries, + trys, waitRetry, session.User, - sendEmail, + email, serialized, ); err != nil { return