From f78d950638aacfd2e9383a36f12754e4724f496b Mon Sep 17 00:00:00 2001 From: s-egge Date: Fri, 5 Apr 2024 13:16:04 -0700 Subject: [PATCH 1/4] added get API endpoint for pacific power exclusion --- backend/app/pacific_power_exclusion.js | 8 ++ .../nodejs/models/pacific_power_exclusion.js | 10 +++ backend/template.yaml | 75 +++++++++++-------- 3 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 backend/app/pacific_power_exclusion.js create mode 100644 backend/dependencies/nodejs/models/pacific_power_exclusion.js diff --git a/backend/app/pacific_power_exclusion.js b/backend/app/pacific_power_exclusion.js new file mode 100644 index 00000000..74c763d6 --- /dev/null +++ b/backend/app/pacific_power_exclusion.js @@ -0,0 +1,8 @@ +const Response = require('/opt/nodejs/response.js') +const PacificPowerExclusion = require('/opt/nodejs/models/pacific_power_exclusion.js') + +exports.get = async (event, context) => { + let response = new Response(event) + response.body = JSON.stringify(await new PacificPowerExclusion().get()) + return response +} diff --git a/backend/dependencies/nodejs/models/pacific_power_exclusion.js b/backend/dependencies/nodejs/models/pacific_power_exclusion.js new file mode 100644 index 00000000..90d78289 --- /dev/null +++ b/backend/dependencies/nodejs/models/pacific_power_exclusion.js @@ -0,0 +1,10 @@ +const DB = require('/opt/nodejs/sql-access.js') + +class PacificPowerExclusion { + async get() { + await DB.connect() + return DB.query(`SELECT * FROM pacific_power_exclusion`) + } +} + +module.exports = PacificPowerExclusion diff --git a/backend/template.yaml b/backend/template.yaml index 14e74545..9059507c 100644 --- a/backend/template.yaml +++ b/backend/template.yaml @@ -13,11 +13,11 @@ Globals: # enable CORS; to make more specific, change the origin wildcard # to a particular domain name, e.g. "'www.example.com'" Cors: - AllowMethods: "'POST, GET'" - AllowHeaders: "'X-Forwarded-For'" - AllowOrigin: "'oregonstate.edu'" - MaxAge: "'600'" - AllowCredentials: True + AllowMethods: "'POST, GET'" + AllowHeaders: "'X-Forwarded-For'" + AllowOrigin: "'oregonstate.edu'" + MaxAge: "'600'" + AllowCredentials: True BinaryMediaTypes: - image~1gif - image~1png @@ -26,20 +26,20 @@ Globals: - multipart/form-data HttpApi: CorsConfiguration: - AllowMethods: - - GET - - POST - AllowHeaders: - - "'X-Forwarded-For'" - AllowOrigins: - - "https://dashboard.sustainability.oregonstate.edu" - MaxAge: 600 - AllowCredentials: True + AllowMethods: + - GET + - POST + AllowHeaders: + - "'X-Forwarded-For'" + AllowOrigins: + - 'https://dashboard.sustainability.oregonstate.edu' + MaxAge: 600 + AllowCredentials: True Parameters: LambdaCommonLayer: Type: String Default: arn:aws:lambda:us-west-2:005937143026:layer:LambdaCommonLayer:97 - + Resources: test: Type: AWS::Serverless::Function @@ -238,7 +238,7 @@ Resources: Properties: Timeout: 30 MemorySize: 256 - CodeUri: app/ + CodeUri: app/ Handler: meter.batchData Layers: - !Ref LambdaCommonLayer @@ -718,18 +718,33 @@ Resources: Properties: Path: /admin/devices Method: get + ppExclude: + Type: AWS::Serverless::Function + Properties: + MemorySize: 128 + CodeUri: app/ + Handler: pacific_power_exclusion.get + Layers: + - !Ref LambdaCommonLayer + - !Ref EnergyModelLayer + Events: + Building: + Type: Api + Properties: + Path: /ppexclude + Method: get EnergyModelLayer: - Type: AWS::Serverless::LayerVersion - Properties: - LayerName: EnergyModelLayer - Description: DB Model Defs - ContentUri: dependencies/ - CompatibleRuntimes: - - nodejs6.10 - - nodejs8.10 - - nodejs10.x - - nodejs12.x - - nodejs16.x - - nodejs18.x - LicenseInfo: 'MIT' - RetentionPolicy: Retain + Type: AWS::Serverless::LayerVersion + Properties: + LayerName: EnergyModelLayer + Description: DB Model Defs + ContentUri: dependencies/ + CompatibleRuntimes: + - nodejs6.10 + - nodejs8.10 + - nodejs10.x + - nodejs12.x + - nodejs16.x + - nodejs18.x + LicenseInfo: 'MIT' + RetentionPolicy: Retain From 5a019c6d6460598596d000b35e03acb1d4cebf38 Mon Sep 17 00:00:00 2001 From: s-egge Date: Tue, 30 Apr 2024 13:28:55 -0700 Subject: [PATCH 2/4] Added upload route for new meters to exclusion table --- backend/app/pacific_power_exclusion.js | 21 +++++++++++++++++++ .../nodejs/models/pacific_power_exclusion.js | 9 ++++++++ backend/template.yaml | 15 +++++++++++++ 3 files changed, 45 insertions(+) diff --git a/backend/app/pacific_power_exclusion.js b/backend/app/pacific_power_exclusion.js index 74c763d6..e4f62be8 100644 --- a/backend/app/pacific_power_exclusion.js +++ b/backend/app/pacific_power_exclusion.js @@ -6,3 +6,24 @@ exports.get = async (event, context) => { response.body = JSON.stringify(await new PacificPowerExclusion().get()) return response } + +exports.post = async (event, context) => { + let response = new Response(event) + + const payload = JSON.parse(event.body) + const pwd = payload['pwd'] + const meterID = payload['id'] + + if (pwd !== process.env.ACQUISUITE_PASS || !meterID) { + response.statusCode = 400 + return response + } + + try { + response.body = JSON.stringify(await new PacificPowerExclusion().add(meterID)) + } catch (error) { + response.body = error.message + response.status = 400 + } + return response +} diff --git a/backend/dependencies/nodejs/models/pacific_power_exclusion.js b/backend/dependencies/nodejs/models/pacific_power_exclusion.js index 90d78289..80f34ea4 100644 --- a/backend/dependencies/nodejs/models/pacific_power_exclusion.js +++ b/backend/dependencies/nodejs/models/pacific_power_exclusion.js @@ -5,6 +5,15 @@ class PacificPowerExclusion { await DB.connect() return DB.query(`SELECT * FROM pacific_power_exclusion`) } + + async add(meterID) { + await DB.connect() + return DB.query(`INSERT INTO pacific_power_exclusion (pp_meter_id, status, date_added) VALUES (?, ?, ?)`, [ + meterID, + 'new', + new Date().toISOString() + ]) + } } module.exports = PacificPowerExclusion diff --git a/backend/template.yaml b/backend/template.yaml index 9059507c..4137ab59 100644 --- a/backend/template.yaml +++ b/backend/template.yaml @@ -733,6 +733,21 @@ Resources: Properties: Path: /ppexclude Method: get + ppUpload: + Type: AWS::Serverless::Function + Properties: + MemorySize: 128 + CodeUri: app/ + Handler: pacific_power_exclusion.post + Layers: + - !Ref LambdaCommonLayer + - !Ref EnergyModelLayer + Events: + Building: + Type: Api + Properties: + Path: /ppupload + Method: post EnergyModelLayer: Type: AWS::Serverless::LayerVersion Properties: From ab0f44b5bb817bb8a60f6d706d16e9d30ed517c1 Mon Sep 17 00:00:00 2001 From: s-egge Date: Sat, 4 May 2024 11:26:40 -0700 Subject: [PATCH 3/4] Fixed response status on error --- .env.development | 2 +- backend/app/pacific_power_exclusion.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.development b/.env.development index 5fee36aa..b02de683 100644 --- a/.env.development +++ b/.env.development @@ -1,2 +1,2 @@ -VUE_APP_ROOT_API=http://localhost:3000 +VUE_APP_ROOT_API=https://api.sustainability.oregonstate.edu/v2/energy VUE_APP_HOST_ADDRESS=http://localhost:8080 \ No newline at end of file diff --git a/backend/app/pacific_power_exclusion.js b/backend/app/pacific_power_exclusion.js index e4f62be8..71aa1714 100644 --- a/backend/app/pacific_power_exclusion.js +++ b/backend/app/pacific_power_exclusion.js @@ -23,7 +23,7 @@ exports.post = async (event, context) => { response.body = JSON.stringify(await new PacificPowerExclusion().add(meterID)) } catch (error) { response.body = error.message - response.status = 400 + response.statusCode = 400 } return response } From 194144d26de2829cca47b4df0465f423cde16e01 Mon Sep 17 00:00:00 2001 From: s-egge Date: Mon, 6 May 2024 13:20:08 -0700 Subject: [PATCH 4/4] reverted .env file --- .env.development | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.development b/.env.development index b02de683..5fee36aa 100644 --- a/.env.development +++ b/.env.development @@ -1,2 +1,2 @@ -VUE_APP_ROOT_API=https://api.sustainability.oregonstate.edu/v2/energy +VUE_APP_ROOT_API=http://localhost:3000 VUE_APP_HOST_ADDRESS=http://localhost:8080 \ No newline at end of file