annotate pkg/models/importbase.go @ 5710:37c8feeecb4d

Merged branch sr-v2 into default.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 20 Feb 2024 21:28:56 +0100
parents 1222b777f51f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 //
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 //
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2018 by via donau
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 //
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 // Author(s):
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 package models
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import (
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 "encoding/json"
2036
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
18 "errors"
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 "time"
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20
2036
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
21 "gemma.intevation.de/gemma/pkg/common"
4411
5826d4de0e40 Workarounds for incompatible upstream updates in pgx and cron packages.
Sascha Wilde <wilde@intevation.de>
parents: 3002
diff changeset
22 cron "gopkg.in/robfig/cron.v1"
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 )
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 type (
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 // CronSpec is a string containing a cron line.
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 CronSpec string
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
29 // ConfigTime represents a configuration time.
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
30 ConfigTime struct{ time.Time }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
31
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
32 // ConfigDuration represents a configuration duration.
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
33 ConfigDuration struct{ time.Duration }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
34
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
35 // EmailType is a type to contain an email address.
2029
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
36 EmailType struct {
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
37 Email bool `json:"send-email,omitempty"`
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
38 }
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
39
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
40 // QueueConfigurationType is the common base of
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
41 // many configurations.
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 QueueConfigurationType struct {
2029
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
43 EmailType
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
44 Trys *int `json:"trys,omitempty"`
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
45 WaitRetry *ConfigDuration `json:"wait-retry,omitempty"`
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
46 Due *ConfigTime `json:"due,omitempty"`
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
47 Cron *CronSpec `json:"cron,omitempty"`
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 }
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
50 // URLType is the common base of configurations
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
51 // containing a password protected URL.
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 URLType struct {
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 URL string `json:"url"`
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 Insecure bool `json:"insecure,omitempty"`
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 User *string `json:"user,omitempty"`
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 Password *string `json:"password,omitempty"`
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 }
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
59 // EmailTypeGetter tells which email type should be used.
2029
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
60 EmailTypeGetter interface {
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
61 GetEmailType() *EmailType
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
62 }
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
63
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
64 // QueueConfigurationGetter tells which configuration type
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
65 // should be used.
2029
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
66 QueueConfigurationGetter interface {
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
67 GetQueueConfiguration() *QueueConfigurationType
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
68 }
8d006afa7c1b Imports: Stretch imports are not configurabel and scheduable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2025
diff changeset
69
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
70 // URLTypeGetter tells which URL type should be used,
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71 URLTypeGetter interface {
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72 GetURLType() *URLType
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73 }
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74 )
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
76 // GetQueueConfiguration implements QueueConfigurationGetter interface.
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 func (qct *QueueConfigurationType) GetQueueConfiguration() *QueueConfigurationType {
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 return qct
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 }
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
81 // GetURLType implements the URLTypeGetter interface.
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 func (ut *URLType) GetURLType() *URLType {
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 return ut
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 }
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
86 // GetEmailType implements the EmailTypeGetter interface.
2030
83108e90b223 Imports: Forgot self accessor for new email type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2029
diff changeset
87 func (et *EmailType) GetEmailType() *EmailType {
83108e90b223 Imports: Forgot self accessor for new email type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2029
diff changeset
88 return et
83108e90b223 Imports: Forgot self accessor for new email type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2029
diff changeset
89 }
83108e90b223 Imports: Forgot self accessor for new email type.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2029
diff changeset
90
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
91 // UnmarshalJSON implements the json.Unmarshaler interface.
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
92 func (cd *ConfigDuration) UnmarshalJSON(data []byte) error {
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
93 var s string
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
94 if err := json.Unmarshal(data, &s); err != nil {
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
95 return err
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
96 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
97 dur, err := time.ParseDuration(s)
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
98 if err != nil {
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
99 return err
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
100 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
101 if dur < 0 {
4847
4847ac70103a Made staticcheck happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4411
diff changeset
102 return errors.New("duration has to be none negative")
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
103 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
104 *cd = ConfigDuration{dur}
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
105 return nil
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
106 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
107
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
108 // MarshalJSON implements the json.Marshaler interface.
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
109 func (cd *ConfigDuration) MarshalJSON() ([]byte, error) {
3002
46ab2cb39471 Fixed serialization of confuguration durations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2298
diff changeset
110 return json.Marshal(cd.Duration.String())
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
111 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
112
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
113 // UnmarshalJSON implements the json.Unmarshaler interface.
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
114 func (ct *ConfigTime) UnmarshalJSON(data []byte) error {
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
115 var s string
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
116 if err := json.Unmarshal(data, &s); err != nil {
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
117 return err
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
118 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
119 t, err := time.Parse(common.TimeFormat, s)
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
120 if err != nil {
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
121 return err
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
122 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
123 *ct = ConfigTime{t}
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
124 return nil
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
125 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
126
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
127 // MarshalJSON implements json.Marshaler interface.
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
128 func (ct *ConfigTime) MarshalJSON() ([]byte, error) {
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
129 s := ct.Time.Format(common.TimeFormat)
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
130 return json.Marshal([]byte(s))
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
131 }
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
132
2016
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 // UnmarshalJSON checks if the incoming string is a valid cron line.
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 func (cs *CronSpec) UnmarshalJSON(data []byte) error {
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135 var spec string
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 if err := json.Unmarshal(data, &spec); err != nil {
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
137 return err
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138 }
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 if _, err := cron.Parse(spec); err != nil {
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 return err
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 }
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
142 *cs = CronSpec(spec)
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 return nil
25967829cf00 Started to simplify the import models.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144 }
2036
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
145
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
146 // MarshalAttributes stores a configuration.
2042
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
147 func (et *EmailType) MarshalAttributes(attrs common.Attributes) error {
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
148 if et.Email {
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
149 attrs.SetBool("email", et.Email)
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
150 }
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
151 return nil
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
152 }
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
153
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
154 // UnmarshalAttributes restores a configuration.
2042
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
155 func (et *EmailType) UnmarshalAttributes(attrs common.Attributes) error {
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
156 et.Email = attrs.Bool("email")
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
157 return nil
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
158 }
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
159
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
160 // MarshalAttributes stores a configuration.
2042
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
161 func (qct *QueueConfigurationType) MarshalAttributes(attrs common.Attributes) error {
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
162 if err := qct.EmailType.MarshalAttributes(attrs); err != nil {
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
163 return err
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
164 }
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
165 if qct.Trys != nil {
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
166 attrs.SetInt("trys", *qct.Trys)
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
167 }
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
168 if qct.WaitRetry != nil {
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
169 attrs.SetDuration("wait-retry", qct.WaitRetry.Duration)
2042
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
170 }
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
171 if qct.Due != nil {
2044
ea0b62b7656b Imports: Unified JSON marshaling of times and durations in imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2042
diff changeset
172 attrs.SetTime("due", qct.Due.Time)
2042
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
173 }
2297
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
174 if qct.Cron != nil {
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
175 attrs.Set("cron", string(*qct.Cron))
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
176 }
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
177 return nil
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
178 }
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
179
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
180 // UnmarshalAttributes restores a configuration.
2297
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
181 func (qct *QueueConfigurationType) UnmarshalAttributes(attrs common.Attributes) error {
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
182 if err := qct.EmailType.UnmarshalAttributes(attrs); err != nil {
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
183 return err
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
184 }
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
185 if trys, found := attrs.Int("trys"); found {
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
186 qct.Trys = &trys
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
187 }
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
188 if duration, found := attrs.Duration("wait-retry"); found {
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
189 qct.WaitRetry = &ConfigDuration{duration}
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
190 }
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
191 if due, found := attrs.Time("due"); found {
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
192 qct.Due = &ConfigTime{due}
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
193 }
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
194 if cron, found := attrs.Get("cron"); found {
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
195 cs := CronSpec(cron)
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
196 qct.Cron = &cs
c8cc875d271c Import config: Marshalling of so properties got lost somehow.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2044
diff changeset
197 }
2042
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
198 return nil
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
199 }
d29ac997eb34 This breaks this branch!!!! Starting to remove the old persistent layer for configured imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2036
diff changeset
200
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
201 // MarshalAttributes stores a configuration.
2036
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
202 func (ut *URLType) MarshalAttributes(attrs common.Attributes) error {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
203 attrs.Set("url", ut.URL)
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
204 if ut.Insecure {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
205 attrs.SetBool("insecure", ut.Insecure)
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
206 }
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
207 if ut.User != nil {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
208 attrs.Set("user", *ut.User)
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
209 }
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
210 if ut.Password != nil {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
211 attrs.Set("password", *ut.Password)
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
212 }
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
213 return nil
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
214 }
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
215
5601
1222b777f51f Made golint finally happy.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4847
diff changeset
216 // UnmarshalAttributes restores a configuration.
2036
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
217 func (ut *URLType) UnmarshalAttributes(attrs common.Attributes) error {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
218 url, found := attrs.Get("url")
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
219 if !found {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
220 return errors.New("missing 'url' attribute")
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
221 }
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
222 ut.URL = url
2298
6f56a43b3bb2 Import config: Add another forgotten flag.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2297
diff changeset
223 if insecure := attrs.Bool("insecure"); insecure {
6f56a43b3bb2 Import config: Add another forgotten flag.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2297
diff changeset
224 ut.Insecure = insecure
6f56a43b3bb2 Import config: Add another forgotten flag.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2297
diff changeset
225 }
2036
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
226 if user, found := attrs.Get("user"); found {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
227 ut.User = &user
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
228 }
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
229 if password, found := attrs.Get("password"); found {
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
230 ut.Password = &password
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
231 }
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
232 return nil
74e24ae3205a Imports: Added a persistent model for the extra attributes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2030
diff changeset
233 }