Mercurial > gemma
view pkg/models/import.go @ 4904:53d929f658f3 fairway-marks-import
Separate code common to all types of fairway mark imports
Currently the only implemented type of fairway marks is BCNLAT.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 06 Feb 2020 19:09:14 +0100 |
parents | 47922c1a088d |
children | 1222b777f51f |
line wrap: on
line source
// This is Free Software under GNU Affero General Public License v >= 3.0 // without warranty, see README.md and license for details. // // SPDX-License-Identifier: AGPL-3.0-or-later // License-Filename: LICENSES/AGPL-3.0.txt // // Copyright (C) 2018 by via donau // – Österreichische Wasserstraßen-Gesellschaft mbH // Software engineering by Intevation GmbH // // Author(s): // * Sascha L. Teichmann <sascha.teichmann@intevation.de> package models import ( "encoding/json" "errors" "time" "gemma.intevation.de/gemma/pkg/common" ) type ( ImportTime struct{ time.Time } Import struct { ID int64 `json:"id"` State string `json:"state"` Enqueued ImportTime `json:"enqueued"` Changed ImportTime `json:"changed"` Kind string `json:"kind"` User string `json:"user"` Signer string `json:"signer,omitempty"` Summary bool `json:"summary,omitempty"` Errors bool `json:"errors,omitempty"` Warnings bool `json:"warnings,omitempty"` } ImportLogEntry struct { Time ImportTime `json:"time"` Kind string `json:"kind"` Message string `json:"message"` } ReviewState string Review struct { ID int64 `json:"id"` State ReviewState `json:"state"` } ) var errInvalidReviewState = errors.New("state is wether 'accepted' nor 'declined'") func (rs *ReviewState) UnmarshalJSON(data []byte) error { var s string if err := json.Unmarshal(data, &s); err != nil { return err } if s != "accepted" && s != "declined" { return errInvalidReviewState } *rs = ReviewState(s) return nil } func (it ImportTime) MarshalJSON() ([]byte, error) { return json.Marshal(it.Format(common.TimeFormatMicro)) } func (it *ImportTime) Scan(x interface{}) error { t, ok := x.(time.Time) if !ok { *it = ImportTime{} } else { *it = ImportTime{t} } return nil }