models.go 1.13 KB
Newer Older
Jisan Ahmed's avatar
Jisan Ahmed committed
package models

import (
	"fmt"

	"github.com/beego/beego/orm"
)

type Todo struct {
	Id   int
	Name string
	Done bool
}

type TodoModel struct {
}

func init() {
	orm.RegisterModel(new(Todo))
}

func (c *TodoModel) All() ([]*Todo, error) {
	o := orm.NewOrm()
	var todos []*Todo
	_, err := o.QueryTable("todo").All(&todos)
	return todos, err
}

func (c *TodoModel) Save(name string) error {
	if name == "" {
		return fmt.Errorf("empty name\n")
	}
	o := orm.NewOrm()
	todo := new(Todo)
	todo.Name = name

	_, err := o.Insert(todo)
	return err
}

func (c *TodoModel) Find(id int) *Todo {
	o := orm.NewOrm()
	todo := Todo{Id: id}
	err := o.Read(&todo)
	if err != nil {
		return nil
	}
	return &todo
}

func (c *TodoModel) Update(id int, name string, done bool) error {
	o := orm.NewOrm()
	todo := c.Find(id)
	if todo == nil {
		return fmt.Errorf("not found todo")
	}
	todo.Name = name
	todo.Done = done
	_, err := o.Update(todo)
	if err != nil {
		return err
	}
	return nil
}

func (c *TodoModel) Delete(id int) error {
	o := orm.NewOrm()
	todo := c.Find(id)
	if todo == nil {
		return fmt.Errorf("not found todo")
	}
	_, err := o.Delete(todo)
	return err
}