/** * This file is part of the NocoBase (R) project. * Copyright (c) 2020-2024 NocoBase Co., Ltd. * Authors: NocoBase Team. * * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. * For more information, please refer to: https://www.nocobase.com/agreement. */ import type { Collection, RelationRepository, Repository } from '@nocobase/database'; import type { IRepository } from '@nocobase/data-source-manager'; import type { ResourcerContext } from '@nocobase/resourcer'; type FilterTargetKey = string | string[] | undefined; type RecordRepository = IRepository | Repository | RelationRepository; export type RecordParams = { associationName?: string; collection: string; dataSourceKey?: string; filterByTk: unknown; sourceId?: unknown; fields?: string[]; appends?: string[]; }; export type RecordTarget = { repository: RecordRepository; dataSourceKey: string; collection: Collection; collectionName: string; filterTargetKey: FilterTargetKey; pkAttr?: string; pkIsValid: boolean; rawAttributes?: Record; cacheIdentity: Readonly<{ ds: string; c: string; assoc?: string; sid?: unknown; }>; }; export type RecordQuery = RecordTarget & { filterByTk: unknown; fields?: string[]; appends?: string[]; preferFullRecord: boolean; strictSelects: boolean; cacheKey: string; }; export declare function isRecordParams(value: unknown): value is RecordParams; export declare function resolveRecordTarget(koaCtx: ResourcerContext, params: RecordParams): RecordTarget | undefined; export declare function prepareRecordQuery(koaCtx: ResourcerContext, target: RecordTarget, filterByTk: unknown, fields?: string[], appends?: string[], strictSelects?: boolean, preferFullRecord?: boolean): RecordQuery; export declare function getRecordRequestCache(koaCtx: ResourcerContext): Map; export declare function setRecordRequestCache(cache: Map, query: RecordQuery, value: unknown): Map; export declare function findRecordRequestCacheValue(cache: Map, query: RecordQuery): { hit: boolean; value: unknown; }; export declare function fetchRecordWithRequestCache(koaCtx: ResourcerContext, params: RecordParams, fields?: string[], appends?: string[], strictSelects?: boolean, preferFullRecord?: boolean): Promise; /** * 为了: * - 关联加载/缓存:fields 模式下确保包含主键 * - filterByTk 为数组时:尽量包含 filterTargetKey,以便按输入顺序对齐结果 * * 该函数只返回“建议追加”的 key 字段(不会决定是否追加,由调用方根据是否启用 fields 决定)。 */ export declare function getExtraKeyFieldsForSelect(filterByTk: unknown, options: { filterTargetKey?: FilterTargetKey; pkAttr?: string; pkIsValid?: boolean; rawAttributes?: Record; }): string[]; export declare function mergeFieldsWithExtras(fields?: string[], extras?: string[]): string[] | undefined; /** * 根据 filterByTk 类型(单值/数组)查询并返回 JSON 数据: * - 单值:返回 object | undefined * - 数组:返回 array(空数组时返回 [],不会退化为无条件查询) */ export declare function fetchRecordOrRecordsJson(repo: RecordRepository, params: { filterByTk: unknown; preferFullRecord?: boolean; fields?: string[]; appends?: string[]; filterTargetKey?: FilterTargetKey; pkAttr?: string; pkIsValid?: boolean; }, context: ResourcerContext): Promise; export {};