feat: Complete CouchDB migration and Docker configuration

- Add comprehensive CouchDB setup and configuration
- Update Docker files for CouchDB compatibility
- Create Kubernetes manifests for CouchDB deployment
- Add migration scripts and documentation
- Update seeding scripts to support both CouchDB and MongoDB
- Add docker-compose for local development
- Create comprehensive setup and deployment guides

🤖 Generated with [AI Assistant]

Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
This commit is contained in:
William Valentin
2025-11-01 13:32:39 -07:00
parent df94c17e1f
commit 5aca521c52
949 changed files with 214621 additions and 8 deletions

View File

@@ -0,0 +1,12 @@
'use strict';
const getConstructorName = require('../getConstructorName');
module.exports = function allServersUnknown(topologyDescription) {
if (getConstructorName(topologyDescription) !== 'TopologyDescription') {
return false;
}
const servers = Array.from(topologyDescription.servers.values());
return servers.length > 0 && servers.every(server => server.type === 'Unknown');
};

31
node_modules/mongoose/lib/helpers/topology/isAtlas.js generated vendored Normal file
View File

@@ -0,0 +1,31 @@
'use strict';
const getConstructorName = require('../getConstructorName');
/**
* @typedef { import('mongodb').TopologyDescription } TopologyDescription
*/
/**
* Checks if topologyDescription contains servers connected to an atlas instance
*
* @param {TopologyDescription} topologyDescription
* @returns {boolean}
*/
module.exports = function isAtlas(topologyDescription) {
if (getConstructorName(topologyDescription) !== 'TopologyDescription') {
return false;
}
if (topologyDescription.servers.size === 0) {
return false;
}
for (const server of topologyDescription.servers.values()) {
if (server.host.endsWith('.mongodb.net') === false || server.port !== 27017) {
return false;
}
}
return true;
};

View File

@@ -0,0 +1,16 @@
'use strict';
const getConstructorName = require('../getConstructorName');
const nonSSLMessage = 'Client network socket disconnected before secure TLS ' +
'connection was established';
module.exports = function isSSLError(topologyDescription) {
if (getConstructorName(topologyDescription) !== 'TopologyDescription') {
return false;
}
const descriptions = Array.from(topologyDescription.servers.values());
return descriptions.length > 0 &&
descriptions.every(descr => descr.error && descr.error.message.indexOf(nonSSLMessage) !== -1);
};