- **Today:** Display tasks of today and overdue - **Tomorrow:** Tasks scheduled for tomorrow - **Upcoming:** Tasks scheduled for next 7 days - Keep "Today" focused on starting - Order Tasks of dynamic list by Project - Parsing date input using local TZ - Fixes #7
87 lines
2.0 KiB
Go
87 lines
2.0 KiB
Go
package storm
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/asdine/storm/v3"
|
|
|
|
"github.com/ajaxray/geek-life/model"
|
|
"github.com/ajaxray/geek-life/repository"
|
|
)
|
|
|
|
type taskRepository struct {
|
|
DB *storm.DB
|
|
}
|
|
|
|
// NewTaskRepository will create an object that represent the repository.Task interface
|
|
func NewTaskRepository(db *storm.DB) repository.TaskRepository {
|
|
return &taskRepository{db}
|
|
}
|
|
|
|
func (t *taskRepository) GetAll() ([]model.Task, error) {
|
|
panic("implement me")
|
|
}
|
|
|
|
func (t *taskRepository) GetAllByProject(project model.Project) ([]model.Task, error) {
|
|
var tasks []model.Task
|
|
//err = db.Find("ProjetID", project.ID, &tasks, storm.Limit(10), storm.Skip(10), storm.Reverse())
|
|
err := t.DB.Find("ProjectID", project.ID, &tasks)
|
|
|
|
return tasks, err
|
|
}
|
|
|
|
func (t *taskRepository) GetAllByDate(date time.Time) ([]model.Task, error) {
|
|
var tasks []model.Task
|
|
|
|
err := t.DB.Find("DueDate", getRoundedDueDate(date), &tasks)
|
|
return tasks, err
|
|
}
|
|
|
|
func (t *taskRepository) GetAllByDateRange(from, to time.Time) ([]model.Task, error) {
|
|
var tasks []model.Task
|
|
|
|
err := t.DB.Range("DueDate", getRoundedDueDate(from), getRoundedDueDate(to), &tasks)
|
|
return tasks, err
|
|
}
|
|
|
|
func (t *taskRepository) GetByID(ID string) (model.Task, error) {
|
|
panic("implement me")
|
|
}
|
|
|
|
func (t *taskRepository) GetByUUID(UUID string) (model.Task, error) {
|
|
panic("implement me")
|
|
}
|
|
|
|
func (t *taskRepository) Create(project model.Project, title, details, UUID string, dueDate int64) (model.Task, error) {
|
|
task := model.Task{
|
|
ProjectID: project.ID,
|
|
Title: title,
|
|
Details: details,
|
|
UUID: UUID,
|
|
DueDate: dueDate,
|
|
}
|
|
|
|
err := t.DB.Save(&task)
|
|
return task, err
|
|
}
|
|
|
|
func (t *taskRepository) Update(task *model.Task) error {
|
|
return t.DB.Update(task)
|
|
}
|
|
|
|
func (t *taskRepository) UpdateField(task *model.Task, field string, value interface{}) error {
|
|
return t.DB.UpdateField(task, field, value)
|
|
}
|
|
|
|
func (t *taskRepository) Delete(task *model.Task) error {
|
|
return t.DB.DeleteStruct(task)
|
|
}
|
|
|
|
func getRoundedDueDate(date time.Time) int64 {
|
|
if date.IsZero() {
|
|
return 0
|
|
}
|
|
|
|
return date.Unix()
|
|
}
|