From 32739d56e5cacb8c7d18666d5902165ec5e6621d Mon Sep 17 00:00:00 2001 From: cesarLima1 <105736261+cesarLima1@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:24:24 -0400 Subject: [PATCH 1/2] [TM-1397] start up command to delete dummy buffered polygons of a site (#532) --- .../Commands/DeleteDummyBufferedPolygons.php | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 app/Console/Commands/DeleteDummyBufferedPolygons.php diff --git a/app/Console/Commands/DeleteDummyBufferedPolygons.php b/app/Console/Commands/DeleteDummyBufferedPolygons.php new file mode 100644 index 000000000..0ec62c325 --- /dev/null +++ b/app/Console/Commands/DeleteDummyBufferedPolygons.php @@ -0,0 +1,61 @@ +argument('siteId'); + + DB::beginTransaction(); + + try { + + $sitePolygons = SitePolygon::where('site_id', $siteId)->get(); + + foreach ($sitePolygons as $sitePolygon) { + $polygonGeometry = PolygonGeometry::where('uuid', $sitePolygon->poly_id)->first(); + if ($polygonGeometry) { + $polygonGeometry->deleteWithRelated(); + } + } + + DB::commit(); + + $this->info("Dummy buffered polygons for site ID $siteId have been successfully deleted."); + + } catch (\Exception $e) { + DB::rollBack(); + $this->error('Failed to delete dummy buffered polygons: ' . $e->getMessage()); + + return Command::FAILURE; + } + + return Command::SUCCESS; + } +} From d122125754a34152fc235e06d56c4930d30d88ae Mon Sep 17 00:00:00 2001 From: Jose Carlos Laura Ramirez Date: Fri, 1 Nov 2024 08:58:01 -0400 Subject: [PATCH 2/2] [TM-1434] add endpoint for downloading reports as s3 presigned urls (#538) --- ...tePreSignedURLDownloadReportController.php | 21 +++++++++++++ ...2-admin-entity-presigned-url-framework.yml | 29 +++++++++++++++++ openapi-src/V2/paths/_index.yml | 3 ++ resources/docs/swagger-v2.yml | 31 +++++++++++++++++++ routes/api_v2.php | 2 ++ 5 files changed, 86 insertions(+) create mode 100644 app/Http/Controllers/V2/Exports/GeneratePreSignedURLDownloadReportController.php create mode 100644 openapi-src/V2/paths/Exports/get-v2-admin-entity-presigned-url-framework.yml diff --git a/app/Http/Controllers/V2/Exports/GeneratePreSignedURLDownloadReportController.php b/app/Http/Controllers/V2/Exports/GeneratePreSignedURLDownloadReportController.php new file mode 100644 index 000000000..78d7c6119 --- /dev/null +++ b/app/Http/Controllers/V2/Exports/GeneratePreSignedURLDownloadReportController.php @@ -0,0 +1,21 @@ +addMinutes(60); + + $presignedUrl = Storage::disk('s3')->temporaryUrl($fileKey, $expiration); + + return response()->json(['url' => $presignedUrl]); + } +} diff --git a/openapi-src/V2/paths/Exports/get-v2-admin-entity-presigned-url-framework.yml b/openapi-src/V2/paths/Exports/get-v2-admin-entity-presigned-url-framework.yml new file mode 100644 index 000000000..e070efe95 --- /dev/null +++ b/openapi-src/V2/paths/Exports/get-v2-admin-entity-presigned-url-framework.yml @@ -0,0 +1,29 @@ +operationId: get-v2-admin-entity-presigned-url-framework.yml +summary: Export entities data +tags: + - V2 Projects + - V2 Sites + - V2 Nurseries + - V2 Project Reports + - V2 Site Reports + - V2 Nursery Reports + - Exports +parameters: + - type: string + name: ENTITY + in: path + required: true + description: allowed values projects/sites/nurseries/project-reports/site-reports/nursery-reports + - type: string + name: FRAMEWORK + in: path + required: true + description: allowed values terrafund/ppc +responses: + '200': + description: OK + schema: + type: object + properties: + url: + type: string diff --git a/openapi-src/V2/paths/_index.yml b/openapi-src/V2/paths/_index.yml index 110a1efe4..e5d57886a 100644 --- a/openapi-src/V2/paths/_index.yml +++ b/openapi-src/V2/paths/_index.yml @@ -2530,6 +2530,9 @@ /v2/admin/{ENTITY}/export/{FRAMEWORK}: get: $ref: './Exports/get-v2-admin-entity-export-framework.yml' +/v2/admin/{ENTITY}/presigned-url/{FRAMEWORK}: + get: + $ref: './Exports/get-v2-admin-entity-presigned-url-framework.yml' /v2/projects/{UUID}/{ENTITY}/export: get: $ref: './Exports/get-v2-projects-uuid-entity-export.yml' diff --git a/resources/docs/swagger-v2.yml b/resources/docs/swagger-v2.yml index e572131b0..d6af0f57b 100644 --- a/resources/docs/swagger-v2.yml +++ b/resources/docs/swagger-v2.yml @@ -92018,6 +92018,37 @@ paths: description: OK schema: type: file + '/v2/admin/{ENTITY}/presigned-url/{FRAMEWORK}': + get: + operationId: get-v2-admin-entity-presigned-url-framework.yml + summary: Export entities data + tags: + - V2 Projects + - V2 Sites + - V2 Nurseries + - V2 Project Reports + - V2 Site Reports + - V2 Nursery Reports + - Exports + parameters: + - type: string + name: ENTITY + in: path + required: true + description: allowed values projects/sites/nurseries/project-reports/site-reports/nursery-reports + - type: string + name: FRAMEWORK + in: path + required: true + description: allowed values terrafund/ppc + responses: + '200': + description: OK + schema: + type: object + properties: + url: + type: string '/v2/projects/{UUID}/{ENTITY}/export': get: operationId: get-v2-projects-uuid-entity-export.yml diff --git a/routes/api_v2.php b/routes/api_v2.php index ec104451f..7b8fe846b 100644 --- a/routes/api_v2.php +++ b/routes/api_v2.php @@ -51,6 +51,7 @@ use App\Http\Controllers\V2\Exports\ExportImageController; use App\Http\Controllers\V2\Exports\ExportProjectEntityAsProjectDeveloperController; use App\Http\Controllers\V2\Exports\ExportReportEntityAsProjectDeveloperController; +use App\Http\Controllers\V2\Exports\GeneratePreSignedURLDownloadReportController; use App\Http\Controllers\V2\Files\FilePropertiesController; use App\Http\Controllers\V2\Files\Gallery\ViewNurseryGalleryController; use App\Http\Controllers\V2\Files\Gallery\ViewNurseryReportGalleryController; @@ -329,6 +330,7 @@ }); Route::get('/{entity}/export/{framework}', ExportAllMonitoredEntitiesController::class); + Route::get('/{entity}/presigned-url/{framework}', GeneratePreSignedURLDownloadReportController::class); ModelInterfaceBindingMiddleware::with(EntityModel::class, function () { Route::put('/{entity}/{status}', AdminStatusEntityController::class);