studiocms
Version:
Astro Native CMS for AstroDB. Built from the ground up by the Astro community.
78 lines (77 loc) • 3.53 kB
TypeScript
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 {};