Return iso dates for everything date related from the api (#130)
Remove traces of unix timestamp Revert renaming reminder table column Fix staticcheck Remove unused table call Add migration for renaming reminders table Fix issues with using TimeStamp Fix lint Updated all created / updated fields to use TimeStamps Add comments Convert all created / updated fields to datetime Add time util package Co-authored-by: kolaente <k@knt.li> Reviewed-on: https://kolaente.dev/vikunja/api/pulls/130
This commit is contained in:
@ -23,6 +23,7 @@ import (
|
||||
"code.vikunja.io/api/pkg/log"
|
||||
"code.vikunja.io/api/pkg/models"
|
||||
"code.vikunja.io/api/pkg/modules/migration"
|
||||
"code.vikunja.io/api/pkg/timeutil"
|
||||
"code.vikunja.io/api/pkg/user"
|
||||
"code.vikunja.io/api/pkg/utils"
|
||||
"encoding/json"
|
||||
@ -144,7 +145,7 @@ func convertListForFolder(listID int, list *list, content *wunderlistContents) (
|
||||
|
||||
l := &models.List{
|
||||
Title: list.Title,
|
||||
Created: list.CreatedAt.Unix(),
|
||||
Created: timeutil.FromTime(list.CreatedAt),
|
||||
}
|
||||
|
||||
// Find all tasks belonging to this list and put them in
|
||||
@ -152,13 +153,13 @@ func convertListForFolder(listID int, list *list, content *wunderlistContents) (
|
||||
if t.ListID == listID {
|
||||
newTask := &models.Task{
|
||||
Text: t.Title,
|
||||
Created: t.CreatedAt.Unix(),
|
||||
Created: timeutil.FromTime(t.CreatedAt),
|
||||
Done: t.Completed,
|
||||
}
|
||||
|
||||
// Set Done At
|
||||
if newTask.Done {
|
||||
newTask.DoneAtUnix = t.CompletedAt.Unix()
|
||||
newTask.DoneAt = timeutil.FromTime(t.CompletedAt)
|
||||
}
|
||||
|
||||
// Parse the due date
|
||||
@ -167,7 +168,7 @@ func convertListForFolder(listID int, list *list, content *wunderlistContents) (
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
newTask.DueDateUnix = dueDate.Unix()
|
||||
newTask.DueDate = timeutil.FromTime(dueDate)
|
||||
}
|
||||
|
||||
// Find related notes
|
||||
@ -198,13 +199,13 @@ func convertListForFolder(listID int, list *list, content *wunderlistContents) (
|
||||
Mime: f.ContentType,
|
||||
Size: uint64(f.FileSize),
|
||||
Created: f.CreatedAt,
|
||||
CreatedUnix: f.CreatedAt.Unix(),
|
||||
CreatedUnix: timeutil.FromTime(f.CreatedAt),
|
||||
// We directly pass the file contents here to have a way to link the attachment to the file later.
|
||||
// Because we don't have an ID for our task at this point of the migration, we cannot just throw all
|
||||
// attachments in a slice and do the work of downloading and properly storing them later.
|
||||
FileContent: buf.Bytes(),
|
||||
},
|
||||
Created: f.CreatedAt.Unix(),
|
||||
Created: timeutil.FromTime(f.CreatedAt),
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -224,7 +225,7 @@ func convertListForFolder(listID int, list *list, content *wunderlistContents) (
|
||||
// Reminders
|
||||
for _, r := range content.reminders {
|
||||
if r.TaskID == t.ID {
|
||||
newTask.RemindersUnix = append(newTask.RemindersUnix, r.Date.Unix())
|
||||
newTask.Reminders = append(newTask.Reminders, timeutil.FromTime(r.Date))
|
||||
}
|
||||
}
|
||||
|
||||
@ -247,8 +248,8 @@ func convertWunderlistToVikunja(content *wunderlistContents) (fullVikunjaHierach
|
||||
namespace := &models.NamespaceWithLists{
|
||||
Namespace: models.Namespace{
|
||||
Name: folder.Title,
|
||||
Created: folder.CreatedAt.Unix(),
|
||||
Updated: folder.UpdatedAt.Unix(),
|
||||
Created: timeutil.FromTime(folder.CreatedAt),
|
||||
Updated: timeutil.FromTime(folder.UpdatedAt),
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@ import (
|
||||
"code.vikunja.io/api/pkg/config"
|
||||
"code.vikunja.io/api/pkg/files"
|
||||
"code.vikunja.io/api/pkg/models"
|
||||
"code.vikunja.io/api/pkg/timeutil"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gopkg.in/d4l3k/messagediff.v1"
|
||||
"io/ioutil"
|
||||
@ -192,18 +193,18 @@ func TestWunderlistParsing(t *testing.T) {
|
||||
{
|
||||
Namespace: models.Namespace{
|
||||
Name: "Lorem Ipsum",
|
||||
Created: time1.Unix(),
|
||||
Updated: time2.Unix(),
|
||||
Created: timeutil.FromTime(time1),
|
||||
Updated: timeutil.FromTime(time2),
|
||||
},
|
||||
Lists: []*models.List{
|
||||
{
|
||||
Created: time1.Unix(),
|
||||
Created: timeutil.FromTime(time1),
|
||||
Title: "Lorem1",
|
||||
Tasks: []*models.Task{
|
||||
{
|
||||
Text: "Ipsum1",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Description: "Lorem Ipsum dolor sit amet",
|
||||
Attachments: []*models.TaskAttachment{
|
||||
{
|
||||
@ -212,18 +213,18 @@ func TestWunderlistParsing(t *testing.T) {
|
||||
Mime: "text/plain",
|
||||
Size: 12345,
|
||||
Created: time2,
|
||||
CreatedUnix: time2.Unix(),
|
||||
CreatedUnix: timeutil.FromTime(time2),
|
||||
FileContent: exampleFile,
|
||||
},
|
||||
Created: time2.Unix(),
|
||||
Created: timeutil.FromTime(time2),
|
||||
},
|
||||
},
|
||||
RemindersUnix: []int64{time4.Unix()},
|
||||
Reminders: []timeutil.TimeStamp{timeutil.FromTime(time4)},
|
||||
},
|
||||
{
|
||||
Text: "Ipsum2",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Description: "Lorem Ipsum dolor sit amet",
|
||||
RelatedTasks: map[models.RelationKind][]*models.Task{
|
||||
models.RelationKindSubtask: {
|
||||
@ -239,15 +240,15 @@ func TestWunderlistParsing(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
Created: time1.Unix(),
|
||||
Created: timeutil.FromTime(time1),
|
||||
Title: "Lorem2",
|
||||
Tasks: []*models.Task{
|
||||
{
|
||||
Text: "Ipsum3",
|
||||
Done: true,
|
||||
DoneAtUnix: time1.Unix(),
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
DoneAt: timeutil.FromTime(time1),
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Description: "Lorem Ipsum dolor sit amet",
|
||||
Attachments: []*models.TaskAttachment{
|
||||
{
|
||||
@ -256,18 +257,18 @@ func TestWunderlistParsing(t *testing.T) {
|
||||
Mime: "text/plain",
|
||||
Size: 12345,
|
||||
Created: time3,
|
||||
CreatedUnix: time3.Unix(),
|
||||
CreatedUnix: timeutil.FromTime(time3),
|
||||
FileContent: exampleFile,
|
||||
},
|
||||
Created: time3.Unix(),
|
||||
Created: timeutil.FromTime(time3),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Text: "Ipsum4",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
RemindersUnix: []int64{time3.Unix()},
|
||||
Text: "Ipsum4",
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Reminders: []timeutil.TimeStamp{timeutil.FromTime(time3)},
|
||||
RelatedTasks: map[models.RelationKind][]*models.Task{
|
||||
models.RelationKindSubtask: {
|
||||
{
|
||||
@ -279,52 +280,52 @@ func TestWunderlistParsing(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
Created: time1.Unix(),
|
||||
Created: timeutil.FromTime(time1),
|
||||
Title: "Lorem3",
|
||||
Tasks: []*models.Task{
|
||||
{
|
||||
Text: "Ipsum5",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
Text: "Ipsum5",
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
},
|
||||
{
|
||||
Text: "Ipsum6",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
Done: true,
|
||||
DoneAtUnix: time1.Unix(),
|
||||
Text: "Ipsum6",
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Done: true,
|
||||
DoneAt: timeutil.FromTime(time1),
|
||||
},
|
||||
{
|
||||
Text: "Ipsum7",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
Done: true,
|
||||
DoneAtUnix: time1.Unix(),
|
||||
Text: "Ipsum7",
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Done: true,
|
||||
DoneAt: timeutil.FromTime(time1),
|
||||
},
|
||||
{
|
||||
Text: "Ipsum8",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
Text: "Ipsum8",
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Created: time1.Unix(),
|
||||
Created: timeutil.FromTime(time1),
|
||||
Title: "Lorem4",
|
||||
Tasks: []*models.Task{
|
||||
{
|
||||
Text: "Ipsum9",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
Done: true,
|
||||
DoneAtUnix: time1.Unix(),
|
||||
Text: "Ipsum9",
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Done: true,
|
||||
DoneAt: timeutil.FromTime(time1),
|
||||
},
|
||||
{
|
||||
Text: "Ipsum10",
|
||||
DueDateUnix: 1378339200,
|
||||
Created: time1.Unix(),
|
||||
Done: true,
|
||||
DoneAtUnix: time1.Unix(),
|
||||
Text: "Ipsum10",
|
||||
DueDate: 1378339200,
|
||||
Created: timeutil.FromTime(time1),
|
||||
Done: true,
|
||||
DoneAt: timeutil.FromTime(time1),
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -336,7 +337,7 @@ func TestWunderlistParsing(t *testing.T) {
|
||||
},
|
||||
Lists: []*models.List{
|
||||
{
|
||||
Created: time4.Unix(),
|
||||
Created: timeutil.FromTime(time4),
|
||||
Title: "List without a namespace",
|
||||
},
|
||||
},
|
||||
|
Reference in New Issue
Block a user