Loggest thy stuff
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
1.8 KiB

package models
import "time"
type ProjectEntry struct {
ID int `json:"id"`
OwnerID string `json:"ownerId,omitempty"`
CreatedTime time.Time `json:"createdTime"`
Name string `json:"name"`
Status Status `json:"status"`
}
type ProjectRequirement struct {
ID int `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Status Status `json:"status"`
Stats []StatProgressEntry `json:"stats,omitempty"`
Items []Item `json:"items,omitempty"`
}
func (requirement *ProjectRequirement) Update(update ProjectRequirementUpdate) {
if update.Name != nil {
requirement.Name = *update.Name
}
if update.Description != nil {
requirement.Description = *update.Description
}
if update.Status != nil {
requirement.Status = *update.Status
}
deleteList := make([]int, 0, len(update.Stats))
for i, stat := range update.Stats {
if stat.Acquired == 0 && stat.Required == 0 {
deleteList = append(deleteList, i-len(deleteList))
}
found := false
for j := range requirement.Stats {
if requirement.Stats[j].ID == stat.ID {
requirement.Stats[j].Required = stat.Required
requirement.Stats[j].Acquired = stat.Acquired
found = true
break
}
}
if !found {
requirement.Stats = append(requirement.Stats, stat)
}
}
}
type ProjectRequirementUpdate struct {
Name *string `json:"name"`
Description *string `json:"description"`
Status *Status `json:"status"`
Stats []StatProgressEntry `json:"stats"`
}
type Project struct {
ProjectEntry
Description string `json:"description"`
Requirements []ProjectRequirement `json:"requirements"`
}