added a func to query articles by page
This commit is contained in:
parent
6629a55157
commit
6e8df73bd2
@ -948,6 +948,55 @@ func (q *Queries) ListArticlesByDate(ctx context.Context, limit int32) ([]Articl
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listArticlesByPage = `-- name: ListArticlesByPage :many
|
||||
select id, sourceid, tags, title, url, pubdate, video, videoheight, videowidth, thumbnail, description, authorname, authorimage from articles
|
||||
order by pubdate desc
|
||||
offset $2
|
||||
fetch next $1 rows only
|
||||
`
|
||||
|
||||
type ListArticlesByPageParams struct {
|
||||
Limit int32
|
||||
Offset int32
|
||||
}
|
||||
|
||||
func (q *Queries) ListArticlesByPage(ctx context.Context, arg ListArticlesByPageParams) ([]Article, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listArticlesByPage, arg.Limit, arg.Offset)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []Article
|
||||
for rows.Next() {
|
||||
var i Article
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.Sourceid,
|
||||
&i.Tags,
|
||||
&i.Title,
|
||||
&i.Url,
|
||||
&i.Pubdate,
|
||||
&i.Video,
|
||||
&i.Videoheight,
|
||||
&i.Videowidth,
|
||||
&i.Thumbnail,
|
||||
&i.Description,
|
||||
&i.Authorname,
|
||||
&i.Authorimage,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listDiscordQueueItems = `-- name: ListDiscordQueueItems :many
|
||||
Select id, articleid from DiscordQueue LIMIT $1
|
||||
`
|
||||
|
@ -35,6 +35,12 @@ Left Join sources
|
||||
On articles.sourceid = sources.id
|
||||
Where name = $1;
|
||||
|
||||
-- name: ListArticlesByPage :many
|
||||
select * from articles
|
||||
order by pubdate desc
|
||||
offset $2
|
||||
fetch next $1 rows only;
|
||||
|
||||
-- name: CreateArticle :exec
|
||||
INSERT INTO Articles
|
||||
(ID, SourceId, Tags, Title, Url, PubDate, Video, VideoHeight, VideoWidth, Thumbnail, Description, AuthorName, AuthorImage)
|
||||
|
28
docs/docs.go
28
docs/docs.go
@ -35,6 +35,34 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/articles/by/page": {
|
||||
"get": {
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"Articles"
|
||||
],
|
||||
"summary": "List 50 items based on the requested page",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
"description": "page number",
|
||||
"name": "page",
|
||||
"in": "query",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/routes.ArticlesListResults"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/articles/by/sourceid": {
|
||||
"get": {
|
||||
"produces": [
|
||||
|
@ -26,6 +26,34 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/articles/by/page": {
|
||||
"get": {
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"Articles"
|
||||
],
|
||||
"summary": "List 50 items based on the requested page",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
"description": "page number",
|
||||
"name": "page",
|
||||
"in": "query",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/routes.ArticlesListResults"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/articles/by/sourceid": {
|
||||
"get": {
|
||||
"produces": [
|
||||
|
@ -287,6 +287,24 @@ paths:
|
||||
summary: Returns an article and source based on defined ID.
|
||||
tags:
|
||||
- Articles
|
||||
/articles/by/page:
|
||||
get:
|
||||
parameters:
|
||||
- description: page number
|
||||
in: query
|
||||
name: page
|
||||
required: true
|
||||
type: string
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/routes.ArticlesListResults'
|
||||
summary: List 50 items based on the requested page
|
||||
tags:
|
||||
- Articles
|
||||
/articles/by/sourceid:
|
||||
get:
|
||||
parameters:
|
||||
|
@ -35,6 +35,24 @@ func (c DtoClient) ListArticles(ctx context.Context, limit int) ([]models.Articl
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (c DtoClient) ListArticlesByPage(ctx context.Context, page, limit int32 ) ([]models.ArticleDto, error) {
|
||||
var res []models.ArticleDto
|
||||
|
||||
a, err := c.db.ListArticlesByPage(ctx, database.ListArticlesByPageParams{
|
||||
Limit: limit,
|
||||
Offset: page * limit,
|
||||
})
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
for _, article := range a {
|
||||
res = append(res, c.convertArticle(article))
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (c DtoClient) GetArticle(ctx context.Context, ID uuid.UUID) (models.ArticleDto, error) {
|
||||
a, err := c.db.GetArticleByID(ctx, ID)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user