rsnext/examples/cms-prepr/lib/preprio.js
Tim 1f5c2c8513
Add example prepr cms (#22776)
Added preview example with Prepr CMS.

Working demo at https://next-blog-prepr.vercel.app/
2021-03-04 19:12:42 +00:00

156 lines
3.2 KiB
JavaScript

import { createPreprClient } from '@preprio/nodejs-sdk'
const prepr = createPreprClient({
token: process.env.PREPRIO_PRODUCTION_TOKEN,
timeout: 4000,
baseUrl: process.env.PREPRIO_API,
})
export { prepr }
export async function getAllPostsForHome(preview) {
// Query publications
const data =
(await prepr
.graphqlQuery(
`
query {
Posts {
items {
_id,
_slug,
date: _publish_on
title,
summary,
author {
name
cover {
cdn_files {
url(width: 100, height:100)
}
}
}
cover {
cdn_files {
url(width:2000, height:1000)
}
}
}
}
}`
)
.token(
preview
? process.env.PREPRIO_PREVIEW_TOKEN
: process.env.PREPRIO_PRODUCTION_TOKEN
)
.fetch()) || []
return data.data.Posts.items
}
export async function getAllPostsWithSlug() {
// Query publications
const data =
(await prepr
.graphqlQuery(
`
query {
Posts {
items {
slug : _slug,
}
}
}`
)
.fetch()) || []
return data.data.Posts.items
}
export async function getPostAndMorePosts(slug, preview) {
// Query publications
const data =
(await prepr
.graphqlQuery(
`
query slugPost($slug: String!) {
Post ( slug : $slug) {
_id,
_slug,
date: _publish_on
title,
summary,
content,
author {
name
cover {
cdn_files {
url(width: 100, height:100)
}
}
}
cover {
cdn_files {
url(width:2000, height:1000)
}
}
}
morePosts : Posts(where : { _slug_nany : [$slug] }) {
items {
_id,
_slug,
date: _publish_on
title,
summary,
author {
name
cover {
cdn_files {
url(width: 100, height:100)
}
}
}
cover {
cdn_files {
url(width:2000, height:1000)
}
}
}
}
}`
)
.graphqlVariables({
slug: slug,
})
.token(
preview
? process.env.PREPRIO_PREVIEW_TOKEN
: process.env.PREPRIO_PRODUCTION_TOKEN
)
.fetch()) || []
return data.data
}
export async function getPreviewPostBySlug(slug) {
// Query publications
const data =
(await prepr
.graphqlQuery(
`
query preview($slug: String!) {
Post ( slug : $slug) {
_id,
slug : _slug
}
}`
)
.token(process.env.PREPRIO_PREVIEW_TOKEN)
.graphqlVariables({
slug: slug,
})
.fetch()) || []
return data.data.Post
}