Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 79 additions & 47 deletions lib/sync/dataAdapters/index.js
Original file line number Diff line number Diff line change
@@ -1,66 +1,98 @@
const mysqlDataAdapter = require('./mysql/mysql')
const solrDataAdapter = require('./solr/solr')
const devnullDataAdapter = require('./devnull')
const mysqlDataAdapter = require("./mysql/mysql");
const mongodbDataAdapter = require("./mongoDB/mongodb");
const solrDataAdapter = require("./solr/solr");
const devnullDataAdapter = require("./devnull");

// I'm not happy about this. Previously, I was using require() in the buildDataAdapter() method below.
// As in, I was doing conditional requires. Jest tests would break with the message MODULE NOT FOUND.
// I think it was happening because require() was being called after a test had started, so it wasn't
// using the real require() but rather Jest's monkey-patched version. I don't want to fight it right now.
const bridgeInteractivePlatformAdapter = require('../platformAdapters/bridgeInteractive')
const trestlePlatformAdapter = require('../platformAdapters/trestle')
const mlsGridPlatformAdapter = require('../platformAdapters/mlsGrid')
const rmlsPlatformAdapter = require('../platformAdapters/rmls')
const bridgeInteractiveMysqlPlatformDataAdapter = require('../platformDataAdapters/bridgeInteractive/mysql')
const trestleMysqlPlatformDataAdapter = require('../platformDataAdapters/trestle/mysql')
const mlsGridMysqlPlatformDataAdapter = require('../platformDataAdapters/mlsGrid/mysql')
const rmlsMysqlPlatformDataAdapter = require('../platformDataAdapters/rmls/mysql')
const bridgeInteractivePlatformAdapter = require("../platformAdapters/bridgeInteractive");
const trestlePlatformAdapter = require("../platformAdapters/trestle");
const mlsGridPlatformAdapter = require("../platformAdapters/mlsGrid");
const rmlsPlatformAdapter = require("../platformAdapters/rmls");
const bridgeInteractiveMysqlPlatformDataAdapter = require("../platformDataAdapters/bridgeInteractive/mysql");
const bridgeInteractiveMongodbPlatformDataAdapter = require("../platformDataAdapters/bridgeInteractive/mongodb");
const trestleMysqlPlatformDataAdapter = require("../platformDataAdapters/trestle/mysql");
const mlsGridMysqlPlatformDataAdapter = require("../platformDataAdapters/mlsGrid/mysql");
const rmlsMysqlPlatformDataAdapter = require("../platformDataAdapters/rmls/mysql");

function buildDataAdapter({ destinationConfig, platformAdapterName }) {
const dataAdapterType = destinationConfig.type
let dataAdapter
if (dataAdapterType === 'mysql') {
dataAdapter = mysqlDataAdapter({ destinationConfig: destinationConfig.config })
} else if (dataAdapterType === 'solr') {
dataAdapter = solrDataAdapter({ destinationConfig: destinationConfig.config })
} else if (dataAdapterType === 'devnull') {
dataAdapter = devnullDataAdapter()
const dataAdapterType = destinationConfig.type;
let dataAdapter;
if (dataAdapterType === "mysql") {
dataAdapter = mysqlDataAdapter({
destinationConfig: destinationConfig.config
});
}
// ------- Updated to support MongoDB
if (dataAdapterType === "mongodb") {
dataAdapter = mongodbDataAdapter({
destinationConfig: destinationConfig.config
});
} else if (dataAdapterType === "solr") {
dataAdapter = solrDataAdapter({
destinationConfig: destinationConfig.config
});
} else if (dataAdapterType === "devnull") {
dataAdapter = devnullDataAdapter();
} else {
throw new Error('Unknown data adapter: ' + dataAdapterType)
throw new Error("Unknown data adapter: " + dataAdapterType);
}

let platformAdapter
if (platformAdapterName === 'bridgeInteractive') {
platformAdapter = bridgeInteractivePlatformAdapter()
} else if (platformAdapterName === 'trestle') {
platformAdapter = trestlePlatformAdapter()
} else if (platformAdapterName === 'mlsGrid') {
platformAdapter = mlsGridPlatformAdapter()
} else if (platformAdapterName === 'rmls') {
platformAdapter = rmlsPlatformAdapter()
let platformAdapter;
if (platformAdapterName === "bridgeInteractive") {
platformAdapter = bridgeInteractivePlatformAdapter();
} else if (platformAdapterName === "trestle") {
platformAdapter = trestlePlatformAdapter();
} else if (platformAdapterName === "mlsGrid") {
platformAdapter = mlsGridPlatformAdapter();
} else if (platformAdapterName === "rmls") {
platformAdapter = rmlsPlatformAdapter();
} else {
throw new Error('Unknown platform adapter: ' + platformAdapterName)
throw new Error("Unknown platform adapter: " + platformAdapterName);
}
dataAdapter.setPlatformAdapter(platformAdapter)
dataAdapter.setPlatformAdapter(platformAdapter);

let platformDataAdapter
if (dataAdapterType === 'mysql') {
if (platformAdapterName === 'bridgeInteractive') {
platformDataAdapter = bridgeInteractiveMysqlPlatformDataAdapter()
} else if (platformAdapterName === 'trestle') {
platformDataAdapter = trestleMysqlPlatformDataAdapter()
} else if (platformAdapterName === 'mlsGrid') {
platformDataAdapter = mlsGridMysqlPlatformDataAdapter()
} else if (platformAdapterName === 'rmls') {
platformDataAdapter = rmlsMysqlPlatformDataAdapter()
let platformDataAdapter;
if (dataAdapterType === "mysql") {
if (platformAdapterName === "bridgeInteractive") {
platformDataAdapter = bridgeInteractiveMysqlPlatformDataAdapter();
} else if (platformAdapterName === "trestle") {
platformDataAdapter = trestleMysqlPlatformDataAdapter();
} else if (platformAdapterName === "mlsGrid") {
platformDataAdapter = mlsGridMysqlPlatformDataAdapter();
} else if (platformAdapterName === "rmls") {
platformDataAdapter = rmlsMysqlPlatformDataAdapter();
} else {
throw new Error(`Unknown platform adapter and data adapter combo: ${platformAdapterName}, ${dataAdapterType}`)
throw new Error(
`Unknown platform adapter and data adapter combo: ${platformAdapterName}, ${dataAdapterType}`
);
}
dataAdapter.setPlatformDataAdapter(platformDataAdapter);
} else if (dataAdapterType === "mongodb") {
if (platformAdapterName === "bridgeInteractive") {
platformDataAdapter = bridgeInteractiveMongodbPlatformDataAdapter();
}
dataAdapter.setPlatformDataAdapter(platformDataAdapter)
}

return dataAdapter
//--------Pending for now-----
// else if (platformAdapterName === "trestle") {
// platformDataAdapter = trestleMysqlPlatformDataAdapter();
// } else if (platformAdapterName === "mlsGrid") {
// platformDataAdapter = mlsGridMysqlPlatformDataAdapter();
// } else if (platformAdapterName === "rmls") {
// platformDataAdapter = rmlsMysqlPlatformDataAdapter();
// }
else {
throw new Error(
`Unknown platform adapter and data adapter combo: ${platformAdapterName}, ${dataAdapterType}`
);
}
dataAdapter.setPlatformDataAdapter(platformDataAdapter);
}
return dataAdapter;
}

module.exports = {
buildDataAdapter,
}
buildDataAdapter
};
Loading