Support data-driven tables (#57806)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
26
src/data-directory/middleware/data-tables.ts
Normal file
26
src/data-directory/middleware/data-tables.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import type { NextFunction, Response } from 'express'
|
||||
import { ExtendedRequest } from '@/types'
|
||||
import { getDeepDataByLanguage } from '@/data-directory/lib/get-data'
|
||||
|
||||
let tablesCache: Record<string, unknown> | null = null
|
||||
|
||||
// Lazy loading function
|
||||
const getTables = () => {
|
||||
if (!tablesCache) {
|
||||
// Keep product-name-heavy reference tables in English only for now
|
||||
tablesCache = getDeepDataByLanguage('tables', 'en')
|
||||
}
|
||||
return tablesCache
|
||||
}
|
||||
|
||||
/**
|
||||
* Middleware that loads data-driven table content into the request context.
|
||||
* Tables are sourced from YAML files in data/tables/ directory.
|
||||
*/
|
||||
export default async function dataTables(req: ExtendedRequest, res: Response, next: NextFunction) {
|
||||
if (!req.context) throw new Error('request not contextualized')
|
||||
|
||||
req.context.tables = getTables()
|
||||
|
||||
return next()
|
||||
}
|
||||
Reference in New Issue
Block a user