mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-30 02:10:12 -06:00
67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
import { revalidateTag } from "next/cache";
|
|
import { type TSurveyQuestionId } from "@formbricks/types/surveys/types";
|
|
|
|
interface RevalidateProps {
|
|
id?: string;
|
|
environmentId?: string | null;
|
|
surveyId?: string | null;
|
|
responseId?: string | null;
|
|
questionId?: string | null;
|
|
insightId?: string | null;
|
|
}
|
|
|
|
export const documentCache = {
|
|
tag: {
|
|
byId(id: string) {
|
|
return `documents-${id}`;
|
|
},
|
|
byEnvironmentId(environmentId: string) {
|
|
return `environments-${environmentId}-documents`;
|
|
},
|
|
byResponseId(responseId: string) {
|
|
return `responses-${responseId}-documents`;
|
|
},
|
|
byResponseIdQuestionId(responseId: string, questionId: TSurveyQuestionId) {
|
|
return `responses-${responseId}-questions-${questionId}-documents`;
|
|
},
|
|
bySurveyId(surveyId: string) {
|
|
return `surveys-${surveyId}-documents`;
|
|
},
|
|
bySurveyIdQuestionId(surveyId: string, questionId: TSurveyQuestionId) {
|
|
return `surveys-${surveyId}-questions-${questionId}-documents`;
|
|
},
|
|
byInsightId(insightId: string) {
|
|
return `insights-${insightId}-documents`;
|
|
},
|
|
byInsightIdSurveyIdQuestionId(insightId: string, surveyId: string, questionId: TSurveyQuestionId) {
|
|
return `insights-${insightId}-surveys-${surveyId}-questions-${questionId}-documents`;
|
|
},
|
|
},
|
|
revalidate: ({ id, environmentId, surveyId, responseId, questionId, insightId }: RevalidateProps): void => {
|
|
if (id) {
|
|
revalidateTag(documentCache.tag.byId(id));
|
|
}
|
|
if (environmentId) {
|
|
revalidateTag(documentCache.tag.byEnvironmentId(environmentId));
|
|
}
|
|
if (responseId) {
|
|
revalidateTag(documentCache.tag.byResponseId(responseId));
|
|
}
|
|
if (surveyId) {
|
|
revalidateTag(documentCache.tag.bySurveyId(surveyId));
|
|
}
|
|
if (responseId && questionId) {
|
|
revalidateTag(documentCache.tag.byResponseIdQuestionId(responseId, questionId));
|
|
}
|
|
if (surveyId && questionId) {
|
|
revalidateTag(documentCache.tag.bySurveyIdQuestionId(surveyId, questionId));
|
|
}
|
|
if (insightId) {
|
|
revalidateTag(documentCache.tag.byInsightId(insightId));
|
|
}
|
|
if (insightId && surveyId && questionId) {
|
|
revalidateTag(documentCache.tag.byInsightIdSurveyIdQuestionId(insightId, surveyId, questionId));
|
|
}
|
|
},
|
|
};
|