74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
const apiSsrBaseURL =
|
|
"http://localhost:" + context.config.server().api.port + "/api/v1/_/" + context.api().namespace + "/"
|
|
|
|
const now = { $date: new Date().toISOString() }
|
|
const publishedFilter = {
|
|
active: true,
|
|
$or: [
|
|
{ publication: { $exists: false } },
|
|
{ publication: null },
|
|
{
|
|
$and: [
|
|
{
|
|
$or: [
|
|
{ "publication.from": { $exists: false } },
|
|
{ "publication.from": null },
|
|
{ "publication.from": { $lte: now } },
|
|
],
|
|
},
|
|
{
|
|
$or: [
|
|
{ "publication.to": { $exists: false } },
|
|
{ "publication.to": null },
|
|
{ "publication.to": { $gte: now } },
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
module.exports = {
|
|
apiSsrBaseURL,
|
|
publishedFilter,
|
|
ssrValidatePath: function (/** @type {string} */ path) {
|
|
// validate if path ssr rendering is ok, -1 = NOTFOUND, 0 = NO SSR, 1 = SSR
|
|
// pe. use context.readCollection("product", {filter: {path: path}}) ... to validate dynamic urls
|
|
|
|
// / is fixed url
|
|
if (path == "/cart") return 1
|
|
|
|
// path starts with /products/ is product
|
|
if (path?.startsWith("/products/")) {
|
|
const slug = path?.replace(/^\/products\//, "")
|
|
const resp = context.db.find("product", {
|
|
filter: {
|
|
$and: [{ slug: slug }, publishedFilter],
|
|
},
|
|
|
|
selector: { _id: 1 },
|
|
})
|
|
if (resp && resp.length) {
|
|
return 1
|
|
}
|
|
}
|
|
|
|
// // all other sites are in db
|
|
//path = path?.replace(/^\//, "")
|
|
const resp = context.db.find("content", {
|
|
filter: {
|
|
$and: [{ $or: [{ path }, { "alternativePaths.path": path }] }, publishedFilter],
|
|
},
|
|
|
|
selector: { _id: 1 },
|
|
})
|
|
if (resp && resp.length) {
|
|
return 1
|
|
}
|
|
|
|
// not found
|
|
return -1
|
|
},
|
|
ssrPublishCheckCollections: ["content", "product"],
|
|
}
|