From b88532e089a33b85b62781b3cd888912033a4cec Mon Sep 17 00:00:00 2001 From: Dave Date: Wed, 19 Nov 2025 09:35:58 +0100 Subject: [PATCH] Added WBArticle --- keystatic.config.ts | 2 ++ src/keystatic/collections/worldburner/index.ts | 7 +++++++ src/keystatic/collections/worldburner/posts.ts | 16 ++++++++++++++++ src/lib/readers/worldburner/posts.ts | 9 +++++++++ src/lib/types/content.ts | 3 +++ src/lib/types/worldburner.ts | 6 ++++++ 6 files changed, 43 insertions(+) create mode 100644 src/keystatic/collections/worldburner/index.ts create mode 100644 src/keystatic/collections/worldburner/posts.ts create mode 100644 src/lib/readers/worldburner/posts.ts create mode 100644 src/lib/types/content.ts create mode 100644 src/lib/types/worldburner.ts diff --git a/keystatic.config.ts b/keystatic.config.ts index 644d236..f8b9891 100644 --- a/keystatic.config.ts +++ b/keystatic.config.ts @@ -1,6 +1,7 @@ import { config } from '@keystatic/core'; import taxonomyCollections from '@/keystatic/collections/taxonomy'; +import worldburnerCollections from '@/keystatic/collections/worldburner'; export default config({ storage: { @@ -8,5 +9,6 @@ export default config({ }, collections: { ...taxonomyCollections, + ...worldburnerCollections, }, }); diff --git a/src/keystatic/collections/worldburner/index.ts b/src/keystatic/collections/worldburner/index.ts new file mode 100644 index 0000000..e498ea9 --- /dev/null +++ b/src/keystatic/collections/worldburner/index.ts @@ -0,0 +1,7 @@ +import posts from '@/keystatic/collections/worldburner/posts'; + +const wbCollections = { + wb_posts: posts, +}; + +export default wbCollections; diff --git a/src/keystatic/collections/worldburner/posts.ts b/src/keystatic/collections/worldburner/posts.ts new file mode 100644 index 0000000..1759517 --- /dev/null +++ b/src/keystatic/collections/worldburner/posts.ts @@ -0,0 +1,16 @@ +import { collection } from '@keystatic/core'; + +import { createArticleField } from '@/keystatic/fields/general/article'; + +export default collection({ + label: 'WB – Posts', + slugField: 'title', + path: 'content/worldburner/posts/*', + format: { + contentField: 'content', + }, + entryLayout: 'content', + schema: { + ...createArticleField('worldburner/posts', ''), + }, +}); diff --git a/src/lib/readers/worldburner/posts.ts b/src/lib/readers/worldburner/posts.ts new file mode 100644 index 0000000..b07c751 --- /dev/null +++ b/src/lib/readers/worldburner/posts.ts @@ -0,0 +1,9 @@ +import { cache, reader } from '@/lib/readers/base'; + +export const getWBPosts = cache(async () => + reader.collections['wb_posts'].all() +); + +export const getWBPostsBySlug = cache(async (slug: string) => + reader.collections['wb_posts'].read(slug) +); diff --git a/src/lib/types/content.ts b/src/lib/types/content.ts new file mode 100644 index 0000000..53ef195 --- /dev/null +++ b/src/lib/types/content.ts @@ -0,0 +1,3 @@ +import { WBContent } from '@/lib/types/worldburner'; + +export type ArticleContent = WBContent; diff --git a/src/lib/types/worldburner.ts b/src/lib/types/worldburner.ts new file mode 100644 index 0000000..dd83edb --- /dev/null +++ b/src/lib/types/worldburner.ts @@ -0,0 +1,6 @@ +import { Entry } from '@keystatic/core/reader'; +import keystaticConfig from '~/keystatic.config'; + +export type WBPost = Entry<(typeof keystaticConfig.collections)['wb_posts']>; + +export type WBContent = WBPost;