Skip to main content
Glama

Memory Bank MCP Server

by yywdandan
moveImmutableProperties.js1.26 kB
'use strict'; const get = require('../get'); /** * Given an update, move all $set on immutable properties to $setOnInsert. * This should only be called for upserts, because $setOnInsert bypasses the * strictness check for immutable properties. */ module.exports = function moveImmutableProperties(schema, update, ctx) { if (update == null) { return; } const keys = Object.keys(update); for (const key of keys) { const isDollarKey = key.startsWith('$'); if (key === '$set') { const updatedPaths = Object.keys(update[key]); for (const path of updatedPaths) { _walkUpdatePath(schema, update[key], path, update, ctx); } } else if (!isDollarKey) { _walkUpdatePath(schema, update, key, update, ctx); } } }; function _walkUpdatePath(schema, op, path, update, ctx) { const schematype = schema.path(path); if (schematype == null) { return; } let immutable = get(schematype, 'options.immutable', null); if (immutable == null) { return; } if (typeof immutable === 'function') { immutable = immutable.call(ctx, ctx); } if (!immutable) { return; } update.$setOnInsert = update.$setOnInsert || {}; update.$setOnInsert[path] = op[path]; delete op[path]; }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yywdandan/memory-bank-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server