Add navigation

This commit is contained in:
Senad Uka
2022-02-16 19:11:48 +01:00
parent 47987ff395
commit ba918d1f57
7 changed files with 113 additions and 4 deletions

View File

@@ -133,3 +133,43 @@ func ArticleByID(store *Store, ID int, slug string) (article model.DisplayArticl
return result, nil
}
func PreviousAndNextArticleUrlByID(store *Store, ID int) (nextUrl string, previousUrl string, err error) {
nextResult, previousResult := "#", "#"
query, err := store.Prepare(`
select id,title, content, slug, original_url, source_id, created_at from articles where id = $1;
`)
if err != nil {
return nextResult, previousResult, err
}
defer query.Close()
row := query.QueryRow(ID - 1)
if err != nil {
return nextResult, previousResult, err
}
r := model.DisplayArticle{}
content := ""
err = row.Scan(&r.ID, &r.Title, &content, &r.Slug, &r.OriginalUrl, &r.SourceId, &r.CreatedAt)
if err != nil {
return nextResult, previousResult, err
}
previousResult = fmt.Sprintf("/%d/%s", r.ID, r.Slug)
row = query.QueryRow(ID + 1)
if err != nil {
return nextResult, previousResult, err
}
content = ""
err = row.Scan(&r.ID, &r.Title, &content, &r.Slug, &r.OriginalUrl, &r.SourceId, &r.CreatedAt)
if err != nil {
return nextResult, previousResult, err
}
nextResult = fmt.Sprintf("/%d/%s", r.ID, r.Slug)
return nextResult, previousResult, nil
}