diff --git a/src/feeds/db.go b/src/feeds/db.go index cccedce..dde9229 100644 --- a/src/feeds/db.go +++ b/src/feeds/db.go @@ -128,20 +128,20 @@ func (f *Feeds) Get(ctx context.Context, id string) (Feed, error) { versions.created_at AS "Version.Created", versions.url AS "Version.URL", versions.cron AS "Version.Cron", - ( - SELECT executed_at - FROM "feed.executions" - WHERE entries_id = entry.ID + ( + SELECT executed_at + FROM "feed.executions" + WHERE entries_id = entry.ID ORDER BY executed_at DESC LIMIT 1 - ) AS "Execution.Executed", - ( - SELECT versions_created_at - FROM "feed.executions" - WHERE entries_id = entry.ID + ) AS "Execution.Executed", + ( + SELECT versions_created_at + FROM "feed.executions" + WHERE entries_id = entry.ID ORDER BY executed_at DESC LIMIT 1 - ) AS "Execution.Version" + ) AS "Execution.Version" FROM entry JOIN "feed.versions" version_entries_id ON version_entries_id.entries_id=entry.ID @@ -196,22 +196,21 @@ func (f *Feeds) oldGet(ctx context.Context, id string) (Feed, error) { func (f *Feeds) Insert(ctx context.Context, url, cron string) (string, error) { now := time.Now() id := uuid.New().String() - q := ` - BEGIN; - INSERT INTO "feed.entries" ( - id, - created_at, - updated_at - ) VALUES (?, ?, ?); - INSERT INTO "feed.versions" ( - entries_id, - created_at, - url, - cron - ) VALUES (?, ?, ?, ?); - COMMIT; - ` - return id, db.Exec(ctx, q, + return id, db.Exec(ctx, ` + BEGIN; + INSERT INTO "feed.entries" ( + id, + created_at, + updated_at + ) VALUES ($1, $2, $3); + INSERT INTO "feed.versions" ( + entries_id, + created_at, + url, + cron + ) VALUES ($4, $5, $6, $7); + COMMIT; + `, id, now, now, id, now, url, cron, ) diff --git a/src/feeds/db_test.go b/src/feeds/db_test.go index 6e67314..df3bff7 100644 --- a/src/feeds/db_test.go +++ b/src/feeds/db_test.go @@ -51,6 +51,36 @@ func TestFeeds(t *testing.T) { if err != nil { t.Fatal("cannot get:", err) } - t.Errorf("%+v", got) + t.Logf("%+v", got) + + if got.Entry.ID == "" { + t.Error("no entry.id") + } + if got.Entry.Created.IsZero() { + t.Error("no entry.created") + } + if got.Entry.Updated.IsZero() { + t.Error("no entry.updated") + } + if !got.Entry.Deleted.IsZero() { + t.Error("entry.deleted") + } + + if got.Version.Created.IsZero() { + t.Error("no version.created") + } + if got.Version.URL != "url" { + t.Error("no version.url") + } + if got.Version.Cron != "cron" { + t.Error("no version.cron") + } + + if !got.Execution.Executed.IsZero() { + t.Error("execution.executed") + } + if !got.Execution.Version.IsZero() { + t.Error("execution.version") + } }) }