Mercurial > gemma
annotate pkg/models/importbase.go @ 5601:1222b777f51f
Made golint finally happy.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 06 Aug 2022 02:09:57 +0200 |
parents | 4847ac70103a |
children |
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 } |