Mercurial > gemma
view pkg/models/import.go @ 1755:d3fe20a13339
Import: Filter fairway availabilities by period and resolve insert confilcts.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Thu, 10 Jan 2019 16:43:42 +0100 |
parents | ccf4fc8a6402 |
children | 20d9b71f4125 |
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" ) type ( ImportTime struct{ time.Time } Import struct { ID int64 `json:"id"` State string `json:"state"` Enqueued ImportTime `json:"enqueued"` Kind string `json:"kind"` User string `json:"user"` Signer string `json:"signer,omitempty"` Summary interface{} `json:"summary,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("2006-01-02T15:04:05.000")) } func (it *ImportTime) Scan(x interface{}) error { t, ok := x.(time.Time) if !ok { *it = ImportTime{} } else { *it = ImportTime{t} } return nil }