@altostra/core
Version:
Core library for shared types and logic
1 lines • 1.88 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.isDbVersionValidForProxy=exports.isRelationalDBProxy=exports.isConnectionPoolConfiguration=void 0;const Numerics_1=require("../../../common/CustomTypes/Numerics"),type_validations_1=require("@altostra/type-validations"),Common_1=require("../Common");exports.isConnectionPoolConfiguration=(0,type_validations_1.objectOf)({connectionBorrowTimeout:(0,type_validations_1.maybe)(isConnectionPoolTimeout),maxIdleConnectionsPercent:(0,type_validations_1.maybe)(isPercentageValue),maxConnectionsPercent:(0,type_validations_1.maybe)(isNonZeroPercentage)}),exports.isRelationalDBProxy=(0,type_validations_1.objectOf)(Object.assign(Object.assign({},Common_1.resourceBaseValidators),{type:(0,type_validations_1.is)("resource.rdb.proxy"),connectionTimeout:(0,type_validations_1.maybe)(Numerics_1.isNaturalNumber),connectionPoolConfiguration:(0,type_validations_1.maybe)(exports.isConnectionPoolConfiguration),vpc:Common_1.isVPC}));const CONNECTION_TIMEOUT_MAX_VALUE=3600,MAX_PERCENTAGE=100;function isConnectionPoolTimeout(o){return(0,Numerics_1.isNaturalNumber)(o)&&o<=3600&&o>=1}function isNonZeroPercentage(o){return(0,Numerics_1.isNaturalNumber)(o)&&o<=100&&o>=1}function isPercentageValue(o){return(0,Numerics_1.isNaturalNumber)(o)&&o<=100&&o>=0}const supportedSqlVersions=[{major:"5",minor:"7"},{major:"8",minor:"0"}],supportedPostgresVersions=[{major:"10",minor:"1"},{major:"11",minor:"5"},{major:"12",minor:"5"},{major:"13",minor:"1"}];function isDbVersionValidForProxy(o,e){switch(e){case"mysql":return supportedSqlVersions.some(e=>isVersionSupported(o,e));case"postgresql":return supportedPostgresVersions.some(e=>isVersionSupported(o,e));default:return!1}}function isVersionSupported(o,e){const i=o.split(".");return i[0]===e.major&&i[1]>=e.minor}exports.isDbVersionValidForProxy=isDbVersionValidForProxy;