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 Versions
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
}