@aws-amplify/graphql-transformer-core
Version:
A framework to transform from GraphQL SDL to AWS CloudFormation.
131 lines • 5.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeDbType = exports.getStrategyDbTypeFromModel = exports.isSqlStrategy = exports.isPostgresDbType = exports.isPostgresModel = exports.isSqlModel = exports.isSqlDbType = exports.isModelType = exports.isDynamoDbType = exports.isDynamoDbModel = exports.isDefaultDynamoDbModelDataSourceStrategy = exports.isAmplifyDynamoDbModelDataSourceStrategy = exports.isImportedAmplifyDynamoDbModelDataSourceStrategy = exports.getModelDataSourceStrategy = exports.getImportedRDSTypeFromStrategyDbType = exports.getModelDataSourceNameForTypeName = void 0;
const types_1 = require("../types");
const graphql_utils_1 = require("./graphql-utils");
const resource_name_1 = require("./resource-name");
const getModelDataSourceNameForTypeName = (ctx, typeName) => {
let dataSourceName;
const strategy = (0, exports.getModelDataSourceStrategy)(ctx, typeName);
if ((0, exports.isSqlStrategy)(strategy)) {
const resourceNames = (0, resource_name_1.getResourceNamesForStrategy)(strategy);
dataSourceName = resourceNames.sqlLambdaDataSource;
}
else {
dataSourceName = `${typeName}Table`;
}
return dataSourceName;
};
exports.getModelDataSourceNameForTypeName = getModelDataSourceNameForTypeName;
const getImportedRDSTypeFromStrategyDbType = (dbType) => {
switch (dbType) {
case types_1.MYSQL_DB_TYPE:
return types_1.ImportedRDSType.MYSQL;
case types_1.POSTGRES_DB_TYPE:
return types_1.ImportedRDSType.POSTGRESQL;
default:
throw new Error(`Unsupported RDS datasource type: ${dbType}`);
}
};
exports.getImportedRDSTypeFromStrategyDbType = getImportedRDSTypeFromStrategyDbType;
const getModelDataSourceStrategy = (ctx, typename) => {
const strategy = ctx.dataSourceStrategies[typename];
if (!strategy) {
throw new Error(`Cannot find datasource type for model ${typename}`);
}
return strategy;
};
exports.getModelDataSourceStrategy = getModelDataSourceStrategy;
const isImportedAmplifyDynamoDbModelDataSourceStrategy = (strategy) => {
return ((0, exports.isDynamoDbType)(strategy.dbType) &&
typeof strategy['provisionStrategy'] === 'string' &&
strategy['provisionStrategy'] === 'IMPORTED_AMPLIFY_TABLE' &&
typeof strategy['tableName'] === 'string' &&
strategy['tableName'] !== '');
};
exports.isImportedAmplifyDynamoDbModelDataSourceStrategy = isImportedAmplifyDynamoDbModelDataSourceStrategy;
const isAmplifyDynamoDbModelDataSourceStrategy = (strategy) => {
return ((0, exports.isDynamoDbType)(strategy.dbType) &&
typeof strategy['provisionStrategy'] === 'string' &&
strategy['provisionStrategy'] === 'AMPLIFY_TABLE');
};
exports.isAmplifyDynamoDbModelDataSourceStrategy = isAmplifyDynamoDbModelDataSourceStrategy;
const isDefaultDynamoDbModelDataSourceStrategy = (strategy) => {
return ((0, exports.isDynamoDbType)(strategy.dbType) &&
typeof strategy['provisionStrategy'] === 'string' &&
strategy['provisionStrategy'] === 'DEFAULT');
};
exports.isDefaultDynamoDbModelDataSourceStrategy = isDefaultDynamoDbModelDataSourceStrategy;
const isDynamoDbModel = (ctx, typename) => {
if ((0, graphql_utils_1.isBuiltInGraphqlType)(typename)) {
return false;
}
const modelDataSourceType = (0, exports.getModelDataSourceStrategy)(ctx, typename);
return (0, exports.isDynamoDbType)(modelDataSourceType.dbType);
};
exports.isDynamoDbModel = isDynamoDbModel;
const isDynamoDbType = (dbType) => {
return dbType === 'DYNAMODB';
};
exports.isDynamoDbType = isDynamoDbType;
const isModelType = (ctx, typename) => {
const strategy = ctx.dataSourceStrategies[typename];
if (!strategy) {
return false;
}
return true;
};
exports.isModelType = isModelType;
const isSqlDbType = (dbType) => {
return [types_1.MYSQL_DB_TYPE, types_1.POSTGRES_DB_TYPE].includes(dbType);
};
exports.isSqlDbType = isSqlDbType;
const isSqlModel = (ctx, typename) => {
if ((0, graphql_utils_1.isBuiltInGraphqlType)(typename)) {
return false;
}
const modelDataSourceType = (0, exports.getModelDataSourceStrategy)(ctx, typename);
return (0, exports.isSqlDbType)(modelDataSourceType.dbType);
};
exports.isSqlModel = isSqlModel;
const isPostgresModel = (ctx, typename) => {
if ((0, graphql_utils_1.isBuiltInGraphqlType)(typename)) {
return false;
}
const modelDataSourceType = (0, exports.getModelDataSourceStrategy)(ctx, typename);
return (0, exports.isPostgresDbType)(modelDataSourceType.dbType);
};
exports.isPostgresModel = isPostgresModel;
const isPostgresDbType = (dbType) => {
return dbType === types_1.POSTGRES_DB_TYPE;
};
exports.isPostgresDbType = isPostgresDbType;
const isSqlStrategy = (strategy) => {
return ((0, exports.isSqlDbType)(strategy.dbType) && typeof strategy.name === 'string' && typeof strategy.dbConnectionConfig === 'object');
};
exports.isSqlStrategy = isSqlStrategy;
const getStrategyDbTypeFromModel = (ctx, typename) => {
if ((0, graphql_utils_1.isBuiltInGraphqlType)(typename)) {
return types_1.DDB_DB_TYPE;
}
return (0, exports.getModelDataSourceStrategy)(ctx, typename).dbType;
};
exports.getStrategyDbTypeFromModel = getStrategyDbTypeFromModel;
const normalizeDbType = (candidate) => {
switch (candidate.toLowerCase()) {
case 'mysql':
return types_1.MYSQL_DB_TYPE;
case 'ddb':
case 'dynamodb':
case 'dynamo_db':
return types_1.DDB_DB_TYPE;
case 'pg':
case 'postgres':
case 'postgresql':
return types_1.POSTGRES_DB_TYPE;
default:
throw new Error(`Unknown database type ${candidate}`);
}
};
exports.normalizeDbType = normalizeDbType;
//# sourceMappingURL=model-datasource-strategy-utils.js.map