UNPKG

@aws-amplify/graphql-transformer-core

Version:

A framework to transform from GraphQL SDL to AWS CloudFormation.

131 lines 5.9 kB
"use strict"; 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