async function getStructuredFieldsData()

in packages/app/src/structuredFields.ts [93:117]


async function getStructuredFieldsData(
	s3: S3,
	bucket: string,
	key: string,
): Promise<LogGroupToStructuredFields> {
	if (structuredFields) {
		console.log('Structured fields cache is available!');
	} else {
		console.log('Structured fields cache is unavailable. Fetching from S3.');
	}

	try {
		if (!structuredFields) {
			const s3Data = await getData(s3, bucket, key);
			structuredFields = JSON.parse(s3Data) as LogGroupToStructuredFields; // TODO add a JSON validation library (e.g zod) here?
		}
		return structuredFields;
	} catch {
		return Promise.reject(
			new Error(
				`Unable to get structured fields data from s3://${bucket}/${key}`,
			),
		);
	}
}