2do/models.go
Kevin Thomas f19a16b836
Add configurable max items and max title length (#25)
* Fix git conflicts, use flag package for parsing environment variables

* Remove title length limit logic from models.go

* Update main.go

Co-authored-by: James Mills <prologic@shortcircuit.net.au>

* Update main.go

Co-authored-by: James Mills <prologic@shortcircuit.net.au>

* Update main.go

* Remove hyphens from flag env variable names

Co-authored-by: James Mills <prologic@shortcircuit.net.au>
2020-08-06 16:20:43 +10:00

40 lines
746 B
Go

package main
import (
"time"
)
// Todo represents a single item on the todo list
type Todo struct {
ID uint64
Done bool
Title string
CreatedAt time.Time
UpdatedAt time.Time
}
func newTodo(title string) *Todo {
return &Todo{
Title: title,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
}
func (t *Todo) setTitle(title string) {
t.Title = title
t.UpdatedAt = time.Now()
}
func (t *Todo) toggleDone() {
t.Done = !t.Done
t.UpdatedAt = time.Now()
}
// TodoList represents a slice of todo items
type TodoList []*Todo
func (a TodoList) Len() int { return len(a) }
func (a TodoList) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a TodoList) Less(i, j int) bool { return a[i].ID < a[j].ID }