diff --git a/packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts b/packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts new file mode 100644 index 0000000..eea22d6 --- /dev/null +++ b/packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts @@ -0,0 +1,43 @@ +import "reflect-metadata"; +import { injectable } from "inversify"; + +import type { IPagesRepository } from "../../application/repositories/pages-repository.interface"; +import type { Page } from "../../entities/page"; + +const SEED_DATE = new Date("2026-01-01T00:00:00.000Z"); + +@injectable() +export class MockPagesRepository implements IPagesRepository { + private _pages: Page[] = [ + { + id: "p1", + title: "About", + slug: "about", + hero: { heading: "About us" }, + layout: [], + status: "published", + publishedAt: SEED_DATE, + seo: { title: "About — My App" }, + createdAt: SEED_DATE, + updatedAt: SEED_DATE, + }, + ]; + + async getPageBySlug(slug: string): Promise { + return this._pages.find((p) => p.slug === slug); + } + + async getPages(options?: { + status?: string; + limit?: number; + offset?: number; + }): Promise { + let result = [...this._pages]; + if (options?.status) { + result = result.filter((p) => p.status === options.status); + } + const offset = options?.offset ?? 0; + const limit = options?.limit ?? 50; + return result.slice(offset, offset + limit); + } +} diff --git a/packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts b/packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts new file mode 100644 index 0000000..cf5ec8a --- /dev/null +++ b/packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts @@ -0,0 +1,15 @@ +import "reflect-metadata"; +import { injectable } from "inversify"; + +import type { ISiteSettingsRepository } from "../../application/repositories/site-settings-repository.interface"; +import type { SiteSettings } from "../../entities/site-settings"; + +@injectable() +export class MockSiteSettingsRepository implements ISiteSettingsRepository { + async getSiteSettings(): Promise { + return { + siteName: "My App", + siteDescription: "A vertical-feature monorepo template", + }; + } +}