From 4867d2d0b605f311b596db8cfd33def23d67ba3a Mon Sep 17 00:00:00 2001 From: Matt Anderson Date: Thu, 31 Jul 2025 16:16:00 -0500 Subject: [PATCH 1/6] Adding diving controller --- src/app.js | 1 + src/swagger.js | 3 +++ 2 files changed, 4 insertions(+) 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/swagger.js b/src/swagger.js index c36c0a7..8fdf9ba 100644 --- a/src/swagger.js +++ b/src/swagger.js @@ -33,6 +33,9 @@ const doc = { name: 'Distance', description: 'Convert distance' }, + { + name: 'Diving', + description: 'Perform diving calculations'}, { name: 'Electricity', description: 'Perform electricity calculations' From d8d2b11e6728c9b71f28d45d84138023d43eb0c2 Mon Sep 17 00:00:00 2001 From: Matt Anderson Date: Thu, 31 Jul 2025 16:26:35 -0500 Subject: [PATCH 2/6] Updates --- src/controllers/v2/diving.js | 18 ++++++++++++------ src/swagger.js | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/controllers/v2/diving.js b/src/controllers/v2/diving.js index fa892ff..a7316db 100644 --- a/src/controllers/v2/diving.js +++ b/src/controllers/v2/diving.js @@ -1,48 +1,54 @@ 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: ((feetSeaWater + 33) / 33).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: ((metersSeaWater + 10) / 10).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: (((feetSeaWater / 33) + 1) * 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 + result: (((ppO2 / fO2) - 1) * 33).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 / ((feetSeaWater / 33) + 1))).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) }) }) }; diff --git a/src/swagger.js b/src/swagger.js index 8fdf9ba..693e146 100644 --- a/src/swagger.js +++ b/src/swagger.js @@ -35,7 +35,8 @@ const doc = { }, { name: 'Diving', - description: 'Perform diving calculations'}, + description: 'Perform diving calculations' + }, { name: 'Electricity', description: 'Perform electricity calculations' From 27c1f413e650b201928aa0e8d654387903fd12b1 Mon Sep 17 00:00:00 2001 From: Matt Anderson Date: Thu, 31 Jul 2025 16:34:00 -0500 Subject: [PATCH 3/6] Updated formula --- src/controllers/v2/diving.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/v2/diving.js b/src/controllers/v2/diving.js index a7316db..6838bdc 100644 --- a/src/controllers/v2/diving.js +++ b/src/controllers/v2/diving.js @@ -3,7 +3,7 @@ module.exports = (app) => { // #swagger.tags = ['Diving'] const { feetSeaWater } = req.params; res.json({ - result: ((feetSeaWater + 33) / 33).toFixed(2) + result: ((feetSeaWater / 33) + 1).toFixed(2) }) }) From 49d46f0b05bf5b6399322640e2d54fbd3ae96360 Mon Sep 17 00:00:00 2001 From: Matt Anderson Date: Fri, 1 Aug 2025 11:23:40 -0500 Subject: [PATCH 4/6] Creating branch name tagged image as well as latest --- .github/workflows/docker-dev.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 }} From 78acefd6545973f16fdf5b919fc968fdbe9dfe6a Mon Sep 17 00:00:00 2001 From: Matt Anderson Date: Fri, 1 Aug 2025 17:17:16 -0500 Subject: [PATCH 5/6] Fixing metric calculation --- src/controllers/v2/diving.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/v2/diving.js b/src/controllers/v2/diving.js index 6838bdc..5e4f690 100644 --- a/src/controllers/v2/diving.js +++ b/src/controllers/v2/diving.js @@ -11,7 +11,7 @@ module.exports = (app) => { // #swagger.tags = ['Diving'] const { metersSeaWater } = req.params; res.json({ - result: ((metersSeaWater + 10) / 10).toFixed(2) + result: ((metersSeaWater / 10) +1).toFixed(2) }) }) From f08e0886cdee6f8fd7b20f11bde609bea0f106c4 Mon Sep 17 00:00:00 2001 From: Matt Anderson Date: Fri, 1 Aug 2025 17:26:55 -0500 Subject: [PATCH 6/6] Creating functions & adding metric calculations --- src/controllers/v2/diving.js | 53 +++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/src/controllers/v2/diving.js b/src/controllers/v2/diving.js index 5e4f690..9ae1dbc 100644 --- a/src/controllers/v2/diving.js +++ b/src/controllers/v2/diving.js @@ -1,9 +1,17 @@ +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) + 1).toFixed(2) + result: absolutePressureAtDepthImperial(feetSeaWater).toFixed(2) }) }) @@ -11,7 +19,7 @@ module.exports = (app) => { // #swagger.tags = ['Diving'] const { metersSeaWater } = req.params; res.json({ - result: ((metersSeaWater / 10) +1).toFixed(2) + result: absolutePressureAtDepthMetric(metersSeaWater).toFixed(2) }) }) @@ -20,7 +28,16 @@ module.exports = (app) => { const { feetSeaWater } = req.params; const { fO2 } = req.params; res.json({ - result: (((feetSeaWater / 33) + 1) * fO2).toFixed(2) + 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) }) }) @@ -33,12 +50,30 @@ module.exports = (app) => { }) }) + 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) * 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))).toFixed(2) + 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) }) }) @@ -51,4 +86,14 @@ module.exports = (app) => { 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) + }) + }) };