UNPKG

cmp-aws-database

Version:

The package "cmp-aws-database" is for its database, which defines global tables. These tables are designed to be imported and used across multiple applications of "craft-my-plate."

43 lines 5.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapper = exports.dynamoDB = exports.DatabaseFactory = void 0; const client_dynamodb_1 = require("@aws-sdk/client-dynamodb"); const mapper_1 = require("@nova-odm/mapper"); const environment_config_1 = require("./environment-config"); class DatabaseFactory { static getDynamoDBClient() { if (!DatabaseFactory.dynamoDBInstance) { const config = environment_config_1.envManager.getDatabaseConfig(); const dynamoConfig = { region: config.region, maxAttempts: config.maxAttempts }; // Add endpoint for local development if (config.endpoint) { dynamoConfig.endpoint = config.endpoint; } DatabaseFactory.dynamoDBInstance = new client_dynamodb_1.DynamoDB(dynamoConfig); } return DatabaseFactory.dynamoDBInstance; } static getDataMapper() { if (!DatabaseFactory.mapperInstance) { const client = DatabaseFactory.getDynamoDBClient(); DatabaseFactory.mapperInstance = new mapper_1.DataMapper({ client }); } return DatabaseFactory.mapperInstance; } static getTableName(baseTableName) { const config = environment_config_1.envManager.getDatabaseConfig(); return `${config.tablePrefix}${baseTableName}`; } static resetInstances() { DatabaseFactory.dynamoDBInstance = undefined; DatabaseFactory.mapperInstance = undefined; } } exports.DatabaseFactory = DatabaseFactory; // Export singleton instances for backward compatibility exports.dynamoDB = DatabaseFactory.getDynamoDBClient(); exports.mapper = DatabaseFactory.getDataMapper(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvZGF0YWJhc2UtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4REFBb0Q7QUFDcEQsNkNBQThDO0FBQzlDLDZEQUFrRTtBQUVsRSxNQUFhLGVBQWU7SUFJakIsTUFBTSxDQUFDLGlCQUFpQjtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEMsTUFBTSxNQUFNLEdBQUcsK0JBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRTlDLE1BQU0sWUFBWSxHQUFRO2dCQUN0QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQ3JCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVzthQUNsQyxDQUFDO1lBRUYscUNBQXFDO1lBQ3JDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixZQUFZLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDNUMsQ0FBQztZQUVELGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLDBCQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYTtRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELGVBQWUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxtQkFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQXFCO1FBQzVDLE1BQU0sTUFBTSxHQUFHLCtCQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWM7UUFDeEIsZUFBZSxDQUFDLGdCQUFnQixHQUFHLFNBQWdCLENBQUM7UUFDcEQsZUFBZSxDQUFDLGNBQWMsR0FBRyxTQUFnQixDQUFDO0lBQ3RELENBQUM7Q0FDSjtBQTFDRCwwQ0EwQ0M7QUFFRCx3REFBd0Q7QUFDM0MsUUFBQSxRQUFRLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDL0MsUUFBQSxNQUFNLEdBQUcsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1vREIgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuaW1wb3J0IHsgRGF0YU1hcHBlciB9IGZyb20gJ0Bub3ZhLW9kbS9tYXBwZXInO1xuaW1wb3J0IHsgZW52TWFuYWdlciwgRGF0YWJhc2VDb25maWcgfSBmcm9tICcuL2Vudmlyb25tZW50LWNvbmZpZyc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZUZhY3Rvcnkge1xuICAgIHByaXZhdGUgc3RhdGljIGR5bmFtb0RCSW5zdGFuY2U6IER5bmFtb0RCO1xuICAgIHByaXZhdGUgc3RhdGljIG1hcHBlckluc3RhbmNlOiBEYXRhTWFwcGVyO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXREeW5hbW9EQkNsaWVudCgpOiBEeW5hbW9EQiB7XG4gICAgICAgIGlmICghRGF0YWJhc2VGYWN0b3J5LmR5bmFtb0RCSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGVudk1hbmFnZXIuZ2V0RGF0YWJhc2VDb25maWcoKTtcblxuICAgICAgICAgICAgY29uc3QgZHluYW1vQ29uZmlnOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgICAgICAgICAgIG1heEF0dGVtcHRzOiBjb25maWcubWF4QXR0ZW1wdHNcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIEFkZCBlbmRwb2ludCBmb3IgbG9jYWwgZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgIGlmIChjb25maWcuZW5kcG9pbnQpIHtcbiAgICAgICAgICAgICAgICBkeW5hbW9Db25maWcuZW5kcG9pbnQgPSBjb25maWcuZW5kcG9pbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIERhdGFiYXNlRmFjdG9yeS5keW5hbW9EQkluc3RhbmNlID0gbmV3IER5bmFtb0RCKGR5bmFtb0NvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGF0YWJhc2VGYWN0b3J5LmR5bmFtb0RCSW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXREYXRhTWFwcGVyKCk6IERhdGFNYXBwZXIge1xuICAgICAgICBpZiAoIURhdGFiYXNlRmFjdG9yeS5tYXBwZXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgY29uc3QgY2xpZW50ID0gRGF0YWJhc2VGYWN0b3J5LmdldER5bmFtb0RCQ2xpZW50KCk7XG4gICAgICAgICAgICBEYXRhYmFzZUZhY3RvcnkubWFwcGVySW5zdGFuY2UgPSBuZXcgRGF0YU1hcHBlcih7IGNsaWVudCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXRhYmFzZUZhY3RvcnkubWFwcGVySW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRUYWJsZU5hbWUoYmFzZVRhYmxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gZW52TWFuYWdlci5nZXREYXRhYmFzZUNvbmZpZygpO1xuICAgICAgICByZXR1cm4gYCR7Y29uZmlnLnRhYmxlUHJlZml4fSR7YmFzZVRhYmxlTmFtZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVzZXRJbnN0YW5jZXMoKTogdm9pZCB7XG4gICAgICAgIERhdGFiYXNlRmFjdG9yeS5keW5hbW9EQkluc3RhbmNlID0gdW5kZWZpbmVkIGFzIGFueTtcbiAgICAgICAgRGF0YWJhc2VGYWN0b3J5Lm1hcHBlckluc3RhbmNlID0gdW5kZWZpbmVkIGFzIGFueTtcbiAgICB9XG59XG5cbi8vIEV4cG9ydCBzaW5nbGV0b24gaW5zdGFuY2VzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgY29uc3QgZHluYW1vREIgPSBEYXRhYmFzZUZhY3RvcnkuZ2V0RHluYW1vREJDbGllbnQoKTtcbmV4cG9ydCBjb25zdCBtYXBwZXIgPSBEYXRhYmFzZUZhY3RvcnkuZ2V0RGF0YU1hcHBlcigpO1xuIl19