First working version. Can add Projects and Tasks
This commit is contained in:
13
repository/project.go
Normal file
13
repository/project.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package repository
|
||||
|
||||
import "github.com/ajaxray/geek-life/model"
|
||||
|
||||
type ProjectRepository interface {
|
||||
GetAll() ([]model.Project, error)
|
||||
GetByID(id int64) (model.Project, error)
|
||||
GetByTitle(title string) (model.Project, error)
|
||||
GetByUUID(UUID string) (model.Project, error)
|
||||
Create(title, UUID string) (model.Project, error)
|
||||
Update(p *model.Project) error
|
||||
Delete(p *model.Project) error
|
||||
}
|
||||
61
repository/storm/project.go
Normal file
61
repository/storm/project.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package storm
|
||||
|
||||
import (
|
||||
"github.com/asdine/storm/v3"
|
||||
|
||||
"github.com/ajaxray/geek-life/model"
|
||||
"github.com/ajaxray/geek-life/repository"
|
||||
)
|
||||
|
||||
type projectRepository struct {
|
||||
DB *storm.DB
|
||||
}
|
||||
|
||||
// NewProjectRepository will create an object that represent the repository.Project interface
|
||||
func NewProjectRepository(db *storm.DB) repository.ProjectRepository {
|
||||
return &projectRepository{db}
|
||||
}
|
||||
|
||||
func (repo *projectRepository) GetAll() ([]model.Project, error) {
|
||||
var projects []model.Project
|
||||
err := repo.DB.All(&projects)
|
||||
|
||||
return projects, err
|
||||
}
|
||||
|
||||
func (repo *projectRepository) GetByID(id int64) (model.Project, error) {
|
||||
return repo.getOneByField("ID", id)
|
||||
}
|
||||
|
||||
func (repo *projectRepository) GetByTitle(title string) (model.Project, error) {
|
||||
return repo.getOneByField("Title", title)
|
||||
}
|
||||
|
||||
func (repo *projectRepository) GetByUUID(UUID string) (model.Project, error) {
|
||||
return repo.getOneByField("CloudId", UUID)
|
||||
}
|
||||
|
||||
func (repo *projectRepository) Create(title, UUID string) (model.Project, error) {
|
||||
project := model.Project{
|
||||
Title: title,
|
||||
UUID: UUID,
|
||||
}
|
||||
|
||||
err := repo.DB.Save(&project)
|
||||
return project, err
|
||||
}
|
||||
|
||||
func (repo *projectRepository) Update(project *model.Project) error {
|
||||
return repo.DB.Save(project)
|
||||
}
|
||||
|
||||
func (repo *projectRepository) Delete(project *model.Project) error {
|
||||
return repo.DB.DeleteStruct(project)
|
||||
}
|
||||
|
||||
func (repo *projectRepository) getOneByField(fieldName string, val interface{}) (model.Project, error) {
|
||||
var project model.Project
|
||||
err := repo.DB.One(fieldName, val, &project)
|
||||
|
||||
return project, err
|
||||
}
|
||||
64
repository/storm/task.go
Normal file
64
repository/storm/task.go
Normal file
@@ -0,0 +1,64 @@
|
||||
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(from, to time.Time) ([]model.Task, error) {
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
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(p *model.Task) error {
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (t taskRepository) Delete(p *model.Task) error {
|
||||
panic("implement me")
|
||||
}
|
||||
18
repository/task.go
Normal file
18
repository/task.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/ajaxray/geek-life/model"
|
||||
)
|
||||
|
||||
type TaskRepository interface {
|
||||
GetAll() ([]model.Task, error)
|
||||
GetAllByProject(project model.Project) ([]model.Task, error)
|
||||
GetAllByDate(from, to time.Time) ([]model.Task, error)
|
||||
GetByID(ID string) (model.Task, error)
|
||||
GetByUUID(UUID string) (model.Task, error)
|
||||
Create(project model.Project, title, details, UUID string, dueDate int64) (model.Task, error)
|
||||
Update(p *model.Task) error
|
||||
Delete(p *model.Task) error
|
||||
}
|
||||
Reference in New Issue
Block a user