UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

78 lines (77 loc) 3.53 kB
import { Effect } from '../../../effect.js'; import { SDKCoreError } from '../errors.js'; import type { CombinedPageData, CombinedUserData, FolderNode, MetaOnlyPageData, tsPageDataSelect, tsUsersSelect } from '../types/index.js'; import { AstroDB } from './db.js'; import { SDKCore_FolderTree } from './foldertree.js'; import { SDKCore_Parsers } from './parsers.js'; declare const SDKCore_Collectors_base: Effect.Service.Class<SDKCore_Collectors, "SDKCore_Collectors", { readonly effect: Effect.Effect<{ collectCategories: (categoryIds: number[]) => Effect.Effect<{ name: string; description: string; slug: string; id: number; parent: number | null; meta: unknown; }[], import("@withstudiocms/effect/drizzle").LibSQLClientError, never>; collectTags: (tagIds: number[]) => Effect.Effect<{ name: string; description: string; slug: string; id: number; meta: unknown; }[], import("@withstudiocms/effect/drizzle").LibSQLClientError, never>; collectPageData: { (page: tsPageDataSelect, tree: FolderNode[]): Effect.Effect<CombinedPageData, SDKCoreError, never>; (page: tsPageDataSelect, tree: FolderNode[], metaOnly: boolean): Effect.Effect<MetaOnlyPageData, SDKCoreError, never>; }; collectUserData: (user: tsUsersSelect) => Effect.Effect<CombinedUserData, SDKCoreError, never>; }, never, AstroDB | SDKCore_FolderTree | SDKCore_Parsers>; readonly dependencies: readonly [import("effect/Layer").Layer<AstroDB, never, never>, import("effect/Layer").Layer<SDKCore_FolderTree, never, never>, import("effect/Layer").Layer<SDKCore_Parsers, never, never>]; }>; /** * Effect service providing core data collectors for StudioCMS SDK. * * @remarks * This service includes methods for collecting categories, tags, page data, and user data, * aggregating information from the database and related services. All methods return * `Effect.Effect` instances for composable error handling and async operations. * * @example * ```typescript * const collectors = yield* SDKCore_Collectors; * const categories = yield* collectors.collectCategories([1, 2, 3]); * ``` * * @service SDKCore_Collectors * @dependencies AstroDB, SDKCore_FolderTree, SDKCore_Parsers * * @method collectCategories * Collects categories by their IDs. * @param categoryIds - Array of category IDs. * @returns Effect resolving to array of categories. * @throws SDKCoreError if database error occurs. * * @method collectTags * Collects tags by their IDs. * @param tagIds - Array of tag IDs. * @returns Effect resolving to array of tags. * @throws SDKCoreError if database error occurs. * * @method collectPageData * Collects and combines all data related to a page, including categories, tags, contributors, author, and content. * @param page - Page data object. * @param tree - FolderNode tree. * @param metaOnly - If true, returns only metadata. * @returns Effect resolving to combined page data or meta-only data. * @throws SDKCoreError if database or unknown error occurs. * * @method collectUserData * Collects user data including OAuth and permissions. * @param user - User data object. * @returns Effect resolving to combined user data. * @throws SDKCoreError if database error occurs. */ export declare class SDKCore_Collectors extends SDKCore_Collectors_base { } export {};