package main

import (
	"fmt"
)

type Todo struct {
	Title   string
	Content string
}

type Todos struct {
	Items []Todo
}

func (todo *Todos) AddTodo(newTodo Todo) {
	todo.Items = append(todo.Items, newTodo)
}

func (todo *Todos) RemoveTodo(index int) {
	//remove todo via index
	todo.Items = append(todo.Items[:index], todo.Items[index+1:]...)
}

func (todo *Todos) ListTodosFull() {
	//List all the contents
	if len(todo.Items) == 0 {
		fmt.Printf("empty\n")
	}
	for k, v := range todo.Items {
		fmt.Printf("%d:%s\n", k, v)
	}
}

func ListTodosSmall() {
	fmt.Println("ListTodosSmall func. not implemented")
	//List all the contents
}
func main() {
	fmt.Println("TODO APP")

	list := Todos{}
	//todos := []Todo{}
	//list := Todos{todos}
	fmt.Println("Empty list: ")
	list.ListTodosFull()

	fmt.Println("Adding entries...")
	items := []Todo{
		{
			Title:   "test",
			Content: "Here is some content",
		},
		{
			Title:   "test1",
			Content: "Here is some more content",
		},
		{
			Title:   "test2",
			Content: "Here is even MORE content",
		},
	}

	//Add the items for testing
	for item := range items {
		list.AddTodo(items[item])
	}

	fmt.Println("Listing...")
	list.ListTodosFull()
	fmt.Println("Listing again...")
	list.ListTodosFull()

	fmt.Println("Removing item2 via index 1")
	list.RemoveTodo(1)
	fmt.Println("Listing again...")
	list.ListTodosFull()
}
