package main import "time" /* This file is part of taler-dashboard Copyright (C) 2023 Özgür Kesim taler-dashboard is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. taler-dashboard is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You can receive a copy of the GNU Affero General Public License from @author Özgür Kesim */ type Project struct { Id int Name string Description string Status KeyVal ViewState KeyVal `json:"view_state"` Enabled bool InheritGlobal bool `json:"inherit_global"` AccessLevel KeyVal `json:"AccessLevel"` Versions Versions Categories Categories // CustomFields []any `json:"custom_fields"` } type Versions []Version type Version struct { KeyVal Description string Released bool Obsolete bool Timestamp time.Time } type VersionsByDate []Version func (v VersionsByDate) Len() int { return len(v) } func (v VersionsByDate) Less(i, j int) bool { return v[i].Timestamp.Before(v[j].Timestamp) } func (v VersionsByDate) Swap(i, j int) { v[i], v[j] = v[j], v[i] } type Categories []Category type Category struct { KeyVal Project KeyVal } func (vs VersionsByDate) Get(version string) *Version { for i, v := range vs { if v.Name == version { return &vs[i] } } return nil }