37 lines
812 B
TypeScript
37 lines
812 B
TypeScript
|
import payloadConfig from "@/payload.config";
|
||
|
import { getPayload } from "payload";
|
||
|
|
||
|
export const fetchPageBySlug = async ({ slug }: { slug: string | undefined }) => {
|
||
|
const payload = await getPayload({ config: payloadConfig });
|
||
|
|
||
|
const result = await payload.find({
|
||
|
collection: "pages",
|
||
|
// draft,
|
||
|
limit: 1,
|
||
|
pagination: false,
|
||
|
// overrideAccess: draft,
|
||
|
where: {
|
||
|
slug: {
|
||
|
equals: slug,
|
||
|
},
|
||
|
},
|
||
|
});
|
||
|
|
||
|
if (!result.docs?.[0]) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
const data = result.docs[0];
|
||
|
|
||
|
const heroImgUrl = typeof data.hero_img !== "number" ? (data?.hero_img?.url ?? "") : "";
|
||
|
const heroImgAlt = typeof data.hero_img !== "number" ? (data?.hero_img?.alt ?? "") : "";
|
||
|
|
||
|
return {
|
||
|
...data,
|
||
|
heroImg: {
|
||
|
url: heroImgUrl,
|
||
|
alt: heroImgAlt,
|
||
|
},
|
||
|
};
|
||
|
};
|