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
JavaScript
;
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