import { TmpDataEnum, TmpDataExpireTime, TmpDataMetadata, TmpDataType } from '@fastgpt/global/support/tmpData/constant'; import { MongoTmpData } from './schema'; import { TmpDataSchema } from '@fastgpt/global/support/tmpData/type'; import { addMilliseconds } from 'date-fns'; function getDataId(type: T, metadata: TmpDataMetadata) { return `${type}--${Object.values(metadata).join('--')}`; } export async function getTmpData({ type, metadata }: { type: T; metadata: TmpDataMetadata; }) { return (await MongoTmpData.findOne({ dataId: getDataId(type, metadata) }).lean()) as TmpDataSchema> | null; } export async function setTmpData({ type, metadata, data }: { type: T; metadata: TmpDataMetadata; data: TmpDataType; }) { return await MongoTmpData.updateOne( { dataId: getDataId(type, metadata) }, { dataId: getDataId(type, metadata), data, expireAt: addMilliseconds(Date.now(), TmpDataExpireTime[type]) }, { upsert: true } ); }