"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.rowDataCache = void 0;
function buildKey(tableId, rowId) {
    return `${tableId}:${String(rowId)}`;
}
class RowDataCache {
    constructor() {
        this.store = new Map();
        this.tableIndex = new Map();
    }
    /** 批量写入某个 tableId 下的行 DTO，先清除旧数据再写入。 */
    setBatch(tableId, rows) {
        this.clearByTableId(tableId);
        const keys = new Set();
        for (const row of rows) {
            const key = buildKey(tableId, String(row.rowId));
            this.store.set(key, { ...row });
            keys.add(key);
        }
        this.tableIndex.set(tableId, keys);
    }
    /** 读取单行 DTO，返回浅拷贝避免外部意外修改缓存。 */
    get(tableId, rowId) {
        const entry = this.store.get(buildKey(tableId, String(rowId)));
        return entry ? { rowId: entry.rowId, rowData: { ...entry.rowData } } : undefined;
    }
    /** 清除指定 tableId 的所有缓存行。 */
    clearByTableId(tableId) {
        const keys = this.tableIndex.get(tableId);
        if (keys) {
            for (const key of keys) {
                this.store.delete(key);
            }
            this.tableIndex.delete(tableId);
        }
    }
    clear() {
        this.store.clear();
        this.tableIndex.clear();
    }
}
exports.rowDataCache = new RowDataCache();
