diff --git a/.github/workflows/docker-dev.yml b/.github/workflows/docker-dev.yml index efb4b52..96f3d03 100644 --- a/.github/workflows/docker-dev.yml +++ b/.github/workflows/docker-dev.yml @@ -13,6 +13,9 @@ jobs: - name: Checkout code uses: actions/checkout@v3 + - name: Extract branch name + run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')" >> $GITHUB_ENV + - name: Login to DockerHub uses: docker/login-action@v3 with: @@ -24,4 +27,6 @@ jobs: with: context: . push: true - tags: themranderson/conversionapi:latest + tags: | + themranderson/conversionapi:latest + themranderson/conversionapi:${{ env.BRANCH_NAME }} diff --git a/src/app.js b/src/app.js index 7c2c1d1..358087f 100644 --- a/src/app.js +++ b/src/app.js @@ -29,6 +29,7 @@ app.use(limiter); require('./controllers/v2/area')(app); require('./controllers/v2/capacity')(app); require('./controllers/v2/distance')(app); +require('./controllers/v2/diving')(app); require('./controllers/v2/electricity')(app); require('./controllers/v2/gearing')(app); require('./controllers/v2/hydraulic')(app); diff --git a/src/controllers/v2/diving.js b/src/controllers/v2/diving.js index fa892ff..9ae1dbc 100644 --- a/src/controllers/v2/diving.js +++ b/src/controllers/v2/diving.js @@ -1,48 +1,99 @@ +function absolutePressureAtDepthImperial(feetSeaWater) { + return ((feetSeaWater / 33) + 1); +} + +function absolutePressureAtDepthMetric(metersSeaWater) { + return ((metersSeaWater / 10) + 1); +} + module.exports = (app) => { app.get('/api/v2/Diving/AbsolutePressureAtDepth/Imperial/:feetSeaWater', (req, res) => { + // #swagger.tags = ['Diving'] const { feetSeaWater } = req.params; res.json({ - result: (feetSeaWater + 33) / 33 + result: absolutePressureAtDepthImperial(feetSeaWater).toFixed(2) }) }) app.get('/api/v2/Diving/AbsolutePressureAtDepth/Metric/:metersSeaWater', (req, res) => { + // #swagger.tags = ['Diving'] const { metersSeaWater } = req.params; res.json({ - result: (metersSeaWater + 10) / 10 + result: absolutePressureAtDepthMetric(metersSeaWater).toFixed(2) }) }) app.get('/api/v2/Diving/PartialPressureOfO2AtDepth/Imperial/:feetSeaWater/:fO2', (req,res) => { + // #swagger.tags = ['Diving'] const { feetSeaWater } = req.params; const { fO2 } = req.params; res.json({ - result: ((feetSeaWater / 33) + 1) * fO2 + result: (absolutePressureAtDepthImperial(feetSeaWater) * fO2).toFixed(2) + }) + }) + + app.get('/api/v2/Diving/PartialPressureOfO2AtDepth/Metric/:metersSeaWater/:fO2', (req, res) => { + // #swagger.tags = ['Diving'] + const { metersSeaWater } = req.params; + const { fO2 } = req.params; + res.json({ + result: (absolutePressureAtDepthMetric(metersSeaWater) * fO2).toFixed(2) }) }) app.get('/api/v2/Diving/MaximumOperatingDepth/Imperial/:ppO2/:fO2', (req, res) => { + // #swagger.tags = ['Diving'] + const { ppO2 } = req.params; + const { fO2 } = req.params; + res.json({ + result: (((ppO2 / fO2) - 1) * 33).toFixed(2) + }) + }) + + app.get('/api/v2/Diving/MaximumOperatingDepth/Metric/:ppO2/:fO2', (req, res) => { + // #swagger.tags = ['Diving'] const { ppO2 } = req.params; const { fO2 } = req.params; res.json({ - result: ((ppO2 / fO2) - 1) * 33 + result: (((ppO2 / fO2) - 1) * 10).toFixed(2) }) }) app.get('/api/v2/Diving/BestFO2Mix/Imperial/:feetSeaWater/:ppO2', (req, res) => { + // #swagger.tags = ['Diving'] const { feetSeaWater } = req.params; const { ppO2 } = req.params; res.json({ - result: (ppO2 / ((feetSeaWater / 33) + 1)) + result: (ppO2 / (absolutePressureAtDepthImperial(feetSeaWater))).toFixed(2) + }) + }) + + app.get('/api/v2/Diving/BestFO2Mix/Metric/:metersSeaWater/:ppO2', (req, res) => { + // #swagger.tags = ['Diving'] + const { metersSeaWater } = req.params; + const { ppO2 } = req.params; + res.json({ + result: (ppO2 / (absolutePressureAtDepthMetric(metersSeaWater))).toFixed(2) }) }) app.get('/api/v2/Diving/EquivalentAirDepth/Imperial/:feetSeaWater/:n2/:fn2', (req, res) => { + // #swagger.tags = ['Diving'] const { feetSeaWater } = req.params; const { n2 } = req.params; const { fn2 } = req.params; res.json({ - result: (((feetSeaWater + 33) * n2)/ fn2) - 33 + result: ((((feetSeaWater + 33) * n2) / fn2) - 33).toFixed(2) + }) + }) + + app.get('/api/v2/Diving/EquivalentAirDepth/Metric/:metersSeaWater/:n2/:fn2', (req, res) => { + // #swagger.tags = ['Diving'] + const { metersSeaWater } = req.params; + const { n2 } = req.params; + const { fn2 } = req.params; + res.json({ + result: ((((metersSeaWater + 10) * n2) / fn2) - 10).toFixed(2) }) }) }; diff --git a/src/swagger.js b/src/swagger.js index c36c0a7..693e146 100644 --- a/src/swagger.js +++ b/src/swagger.js @@ -33,6 +33,10 @@ const doc = { name: 'Distance', description: 'Convert distance' }, + { + name: 'Diving', + description: 'Perform diving calculations' + }, { name: 'Electricity', description: 'Perform electricity calculations'