// SPDX-License-Identifier: AGPL-3.0-or-later import {Config} from '../Config'; import type {KvQueryMeta, KvTableSpec} from './CassandraTypes'; export function getIsDev(): boolean { return Config.nodeEnv === 'development'; } interface TableMetadata { name: string; columns: ReadonlyArray; primaryKey: ReadonlyArray; partitionKey: ReadonlyArray; } const kvMetaRegistry = new Map>>(); const kvMetaKeyCache = new Map(); const tableRegistry = new Map(); export function registerTableSpec(tableSpec: KvTableSpec): void { const metadata: TableMetadata = { name: tableSpec.name, columns: tableSpec.columns as ReadonlyArray, primaryKey: tableSpec.primaryKey as ReadonlyArray, partitionKey: tableSpec.partitionKey as ReadonlyArray, }; tableRegistry.set(tableSpec.name, metadata); } function normalizeCqlForRegistry(cql: string): string { return cql.replace(/\s+/g, ' ').trim(); } export function registerKvMeta(cql: string, meta: KvQueryMeta): void { let key = kvMetaKeyCache.get(cql); if (key === undefined) { key = normalizeCqlForRegistry(cql); kvMetaKeyCache.set(cql, key); } kvMetaRegistry.set(key, meta); } export function getKvMeta(cql: string): KvQueryMeta | undefined { const key = kvMetaKeyCache.get(cql); if (key !== undefined) return kvMetaRegistry.get(key); return kvMetaRegistry.get(normalizeCqlForRegistry(cql)); } export function getTableMetadata(tableName: string): TableMetadata | undefined { return tableRegistry.get(tableName); }