From e987f188ce49b4ca4b23522273af14730a0b53bc Mon Sep 17 00:00:00 2001 From: Beng Eu Date: Thu, 29 Jul 2021 12:32:51 +0800 Subject: [PATCH] refactor: make JWT and PostgREST client plugins --- package-lock.json | 1 + package.json | 1 + src/plugins/jwt.ts | 14 ++++++++++++++ src/plugins/postgrest.ts | 16 ++++++++++++++++ src/routes/bucket/createBucket.ts | 9 +++------ src/routes/bucket/deleteBucket.ts | 7 ++----- src/routes/bucket/emptyBucket.ts | 15 ++++++++------- src/routes/bucket/getAllBuckets.ts | 8 ++------ src/routes/bucket/getBucket.ts | 7 ++----- src/routes/bucket/index.ts | 5 +++++ src/routes/bucket/updateBucket.ts | 7 ++----- src/routes/object/copyObject.ts | 3 +-- src/routes/object/createObject.ts | 11 +++-------- src/routes/object/deleteObject.ts | 10 ++-------- src/routes/object/deleteObjects.ts | 10 ++-------- src/routes/object/getObject.ts | 8 ++------ src/routes/object/getSignedURL.ts | 9 ++------- src/routes/object/index.ts | 26 +++++++++++++++++--------- src/routes/object/listObjects.ts | 8 ++------ src/routes/object/moveObject.ts | 10 ++-------- src/routes/object/updateObject.ts | 13 ++++--------- 21 files changed, 93 insertions(+), 105 deletions(-) create mode 100644 src/plugins/jwt.ts create mode 100644 src/plugins/postgrest.ts diff --git a/package-lock.json b/package-lock.json index 5c04161f..38126f43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "fastify": "^3.14.0", "fastify-cors": "^5.2.0", "fastify-multipart": "^4.0.1", + "fastify-plugin": "^3.0.0", "fastify-swagger": "^4.4.1", "fs-extra": "^8.1.0", "fs-xattr": "^0.3.1", diff --git a/package.json b/package.json index f83e1c57..5d257da9 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "fastify": "^3.14.0", "fastify-cors": "^5.2.0", "fastify-multipart": "^4.0.1", + "fastify-plugin": "^3.0.0", "fastify-swagger": "^4.4.1", "fs-extra": "^8.1.0", "fs-xattr": "^0.3.1", diff --git a/src/plugins/jwt.ts b/src/plugins/jwt.ts new file mode 100644 index 00000000..1ae7afda --- /dev/null +++ b/src/plugins/jwt.ts @@ -0,0 +1,14 @@ +import fastifyPlugin from 'fastify-plugin' + +declare module 'fastify' { + interface FastifyRequest { + jwt: string + } +} + +export default fastifyPlugin(async (fastify) => { + fastify.decorateRequest('jwt', null) + fastify.addHook('preHandler', async (request) => { + request.jwt = (request.headers.authorization as string).substring('Bearer '.length) + }) +}) diff --git a/src/plugins/postgrest.ts b/src/plugins/postgrest.ts new file mode 100644 index 00000000..4f311238 --- /dev/null +++ b/src/plugins/postgrest.ts @@ -0,0 +1,16 @@ +import { PostgrestClient } from '@supabase/postgrest-js' +import fastifyPlugin from 'fastify-plugin' +import { getPostgrestClient } from '../utils' + +declare module 'fastify' { + interface FastifyRequest { + postgrest: PostgrestClient + } +} + +export default fastifyPlugin(async (fastify) => { + fastify.decorateRequest('postgrest', null) + fastify.addHook('preHandler', async (request) => { + request.postgrest = getPostgrestClient(request.jwt) + }) +}) diff --git a/src/routes/bucket/createBucket.ts b/src/routes/bucket/createBucket.ts index e0928ac4..2868e48b 100644 --- a/src/routes/bucket/createBucket.ts +++ b/src/routes/bucket/createBucket.ts @@ -1,7 +1,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { AuthenticatedRequest, Bucket } from '../../types/types' -import { getOwner, getPostgrestClient, isValidKey, transformPostgrestError } from '../../utils' +import { getOwner, isValidKey, transformPostgrestError } from '../../utils' import { createDefaultSchema, createResponse } from '../../utils/generic-routes' const createBucketBodySchema = { @@ -39,12 +39,9 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - const postgrest = getPostgrestClient(jwt) let owner try { - owner = await getOwner(jwt) + owner = await getOwner(request.jwt) } catch (err) { console.log(err) return response.status(400).send(createResponse(err.message, '400', err.message)) @@ -64,7 +61,7 @@ export default async function routes(fastify: FastifyInstance) { .send(createResponse('The key contains invalid characters', '400', 'Invalid key')) } - const { data: results, error, status } = await postgrest + const { data: results, error, status } = await request.postgrest .from('buckets') .insert( [ diff --git a/src/routes/bucket/deleteBucket.ts b/src/routes/bucket/deleteBucket.ts index 94e817fa..a6d89b6e 100644 --- a/src/routes/bucket/deleteBucket.ts +++ b/src/routes/bucket/deleteBucket.ts @@ -38,17 +38,14 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) const { bucketId } = request.params - const userPostgrest = getPostgrestClient(jwt) const superUserPostgrest = getPostgrestClient(serviceKey) const { data: bucketResults, error: bucketError, status: bucketStatus, - } = await userPostgrest.from('buckets').select('id').eq('id', bucketId).single() + } = await request.postgrest.from('buckets').select('id').eq('id', bucketId).single() if (bucketError) { request.log.error({ error: bucketError }, 'error bucket') @@ -84,7 +81,7 @@ export default async function routes(fastify: FastifyInstance) { ) } - const { data: results, error, status } = await userPostgrest + const { data: results, error, status } = await request.postgrest .from('buckets') .delete() .eq('id', bucketId) diff --git a/src/routes/bucket/emptyBucket.ts b/src/routes/bucket/emptyBucket.ts index 7e42886c..6558d0fd 100644 --- a/src/routes/bucket/emptyBucket.ts +++ b/src/routes/bucket/emptyBucket.ts @@ -1,7 +1,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { AuthenticatedRequest, Bucket, Obj } from '../../types/types' -import { getPostgrestClient, transformPostgrestError } from '../../utils' +import { transformPostgrestError } from '../../utils' import { getConfig } from '../../utils/config' import { createDefaultSchema, createResponse } from '../../utils/generic-routes' import { S3Backend } from '../../backend/s3' @@ -47,12 +47,9 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) const { bucketId } = request.params - const postgrest = getPostgrestClient(jwt) - const bucketResponse = await postgrest + const bucketResponse = await request.postgrest .from('buckets') .select('name') .eq('id', bucketId) @@ -67,7 +64,11 @@ export default async function routes(fastify: FastifyInstance) { let deleteError, deleteData, objectError, objects, objectStatus do { - ;({ data: objects, error: objectError, status: objectStatus } = await postgrest + ;({ + data: objects, + error: objectError, + status: objectStatus, + } = await request.postgrest .from('objects') .select('name, id') .eq('bucket_id', bucketId) @@ -80,7 +81,7 @@ export default async function routes(fastify: FastifyInstance) { request.log.info({ results: objects }, 'results') if (objects && objects.length > 0) { - ;({ error: deleteError, data: deleteData } = await postgrest + ;({ error: deleteError, data: deleteData } = await request.postgrest .from('objects') .delete() .in( diff --git a/src/routes/bucket/getAllBuckets.ts b/src/routes/bucket/getAllBuckets.ts index 0099511b..8cc0bbd7 100644 --- a/src/routes/bucket/getAllBuckets.ts +++ b/src/routes/bucket/getAllBuckets.ts @@ -1,7 +1,7 @@ import { FastifyInstance } from 'fastify' import { bucketSchema } from '../../schemas/bucket' import { AuthenticatedRequest, Bucket } from '../../types/types' -import { getPostgrestClient, transformPostgrestError } from '../../utils' +import { transformPostgrestError } from '../../utils' import { createDefaultSchema } from '../../utils/generic-routes' const successResponseSchema = { @@ -33,11 +33,7 @@ export default async function routes(fastify: FastifyInstance) { }, async (request, response) => { // get list of all buckets - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - - const postgrest = getPostgrestClient(jwt) - const { data: results, error, status } = await postgrest + const { data: results, error, status } = await request.postgrest .from('buckets') .select('id, name, public, owner, created_at, updated_at') diff --git a/src/routes/bucket/getBucket.ts b/src/routes/bucket/getBucket.ts index a6624bf3..000622ce 100644 --- a/src/routes/bucket/getBucket.ts +++ b/src/routes/bucket/getBucket.ts @@ -2,7 +2,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { bucketSchema } from '../../schemas/bucket' import { AuthenticatedRequest, Bucket } from '../../types/types' -import { getPostgrestClient, transformPostgrestError } from '../../utils' +import { transformPostgrestError } from '../../utils' import { createDefaultSchema } from '../../utils/generic-routes' const getBucketParamsSchema = { @@ -32,11 +32,8 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) const { bucketId } = request.params - const postgrest = getPostgrestClient(jwt) - const { data: results, error, status } = await postgrest + const { data: results, error, status } = await request.postgrest .from('buckets') .select('id, name, owner, public, created_at, updated_at') .eq('id', bucketId) diff --git a/src/routes/bucket/index.ts b/src/routes/bucket/index.ts index 858dd1b4..5293f808 100644 --- a/src/routes/bucket/index.ts +++ b/src/routes/bucket/index.ts @@ -1,4 +1,6 @@ import { FastifyInstance } from 'fastify' +import jwt from '../../plugins/jwt' +import postgrest from '../../plugins/postgrest' import createBucket from './createBucket' import deleteBucket from './deleteBucket' import emptyBucket from './emptyBucket' @@ -8,6 +10,9 @@ import updateBucket from './updateBucket' // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export default async function routes(fastify: FastifyInstance) { + fastify.register(jwt) + fastify.register(postgrest) + fastify.register(createBucket) fastify.register(deleteBucket) fastify.register(emptyBucket) diff --git a/src/routes/bucket/updateBucket.ts b/src/routes/bucket/updateBucket.ts index 8e1e97b3..ebb9a20e 100644 --- a/src/routes/bucket/updateBucket.ts +++ b/src/routes/bucket/updateBucket.ts @@ -1,7 +1,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { AuthenticatedRequest, Bucket } from '../../types/types' -import { getPostgrestClient, transformPostgrestError } from '../../utils' +import { transformPostgrestError } from '../../utils' import { createDefaultSchema, createResponse } from '../../utils/generic-routes' const updateBucketBodySchema = { @@ -44,14 +44,11 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - const postgrest = getPostgrestClient(jwt) const { bucketId } = request.params const { public: isPublic } = request.body - const { error, status } = await postgrest + const { error, status } = await request.postgrest .from('buckets') .update({ public: isPublic, diff --git a/src/routes/object/copyObject.ts b/src/routes/object/copyObject.ts index f3219238..af8fce5c 100644 --- a/src/routes/object/copyObject.ts +++ b/src/routes/object/copyObject.ts @@ -82,7 +82,6 @@ export default async function routes(fastify: FastifyInstance) { return response.status(400).send(responseValue) } - const postgrest = getPostgrestClient(jwt) const superUserPostgrest = getPostgrestClient(serviceKey) let owner @@ -114,7 +113,7 @@ export default async function routes(fastify: FastifyInstance) { owner, }) request.log.info({ origObject }, 'newObject') - const { data: results, error, status } = await postgrest + const { data: results, error, status } = await request.postgrest .from('objects') .insert([newObject], { returning: 'minimal', diff --git a/src/routes/object/createObject.ts b/src/routes/object/createObject.ts index 5a684690..e028da48 100644 --- a/src/routes/object/createObject.ts +++ b/src/routes/object/createObject.ts @@ -76,10 +76,6 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - // check if the user is able to insert that row - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - const contentType = request.headers['content-type'] request.log.info(`content-type is ${contentType}`) @@ -96,12 +92,11 @@ export default async function routes(fastify: FastifyInstance) { .send(createResponse('The key contains invalid characters', '400', 'Invalid key')) } - const postgrest = getPostgrestClient(jwt) const superUserPostgrest = getPostgrestClient(serviceKey) let owner try { - owner = await getOwner(jwt) + owner = await getOwner(request.jwt) } catch (err) { request.log.error(err) return response.status(400).send({ @@ -117,7 +112,7 @@ export default async function routes(fastify: FastifyInstance) { let postgrestResponse: PostgrestSingleResponse if (isUpsert) { - postgrestResponse = await postgrest + postgrestResponse = await request.postgrest .from('objects') .upsert( [ @@ -134,7 +129,7 @@ export default async function routes(fastify: FastifyInstance) { ) .single() } else { - postgrestResponse = await postgrest + postgrestResponse = await request.postgrest .from('objects') .insert( [ diff --git a/src/routes/object/deleteObject.ts b/src/routes/object/deleteObject.ts index 2da8c9f8..6e6a8179 100644 --- a/src/routes/object/deleteObject.ts +++ b/src/routes/object/deleteObject.ts @@ -1,7 +1,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { AuthenticatedRequest, Obj } from '../../types/types' -import { getPostgrestClient, isValidKey, transformPostgrestError } from '../../utils' +import { isValidKey, transformPostgrestError } from '../../utils' import { getConfig } from '../../utils/config' import { createDefaultSchema, createResponse } from '../../utils/generic-routes' import { S3Backend } from '../../backend/s3' @@ -51,22 +51,16 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - // check if the user is able to insert that row - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - const { bucketName } = request.params const objectName = request.params['*'] - const postgrest = getPostgrestClient(jwt) - if (!isValidKey(objectName) || !isValidKey(bucketName)) { return response .status(400) .send(createResponse('The key contains invalid characters', '400', 'Invalid key')) } - const objectResponse = await postgrest + const objectResponse = await request.postgrest .from('objects') .delete() .match({ diff --git a/src/routes/object/deleteObjects.ts b/src/routes/object/deleteObjects.ts index bb439cbe..c1479f62 100644 --- a/src/routes/object/deleteObjects.ts +++ b/src/routes/object/deleteObjects.ts @@ -2,7 +2,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { objectSchema } from '../../schemas/object' import { AuthenticatedRequest, Obj } from '../../types/types' -import { getPostgrestClient, transformPostgrestError } from '../../utils' +import { transformPostgrestError } from '../../utils' import { getConfig } from '../../utils/config' import { createDefaultSchema } from '../../utils/generic-routes' import { S3Backend } from '../../backend/s3' @@ -64,16 +64,10 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - // check if the user is able to insert that row - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - const { bucketName } = request.params const prefixes = request.body['prefixes'] - const postgrest = getPostgrestClient(jwt) - - const objectResponse = await postgrest + const objectResponse = await request.postgrest .from('objects') .delete() .eq('bucket_id', bucketName) diff --git a/src/routes/object/getObject.ts b/src/routes/object/getObject.ts index 81a25769..b2409506 100644 --- a/src/routes/object/getObject.ts +++ b/src/routes/object/getObject.ts @@ -2,7 +2,7 @@ import { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { IncomingMessage, Server, ServerResponse } from 'http' import { AuthenticatedRangeRequest, Obj } from '../../types/types' -import { getPostgrestClient, isValidKey, transformPostgrestError } from '../../utils' +import { isValidKey, transformPostgrestError } from '../../utils' import { getConfig } from '../../utils/config' import { normalizeContentType } from '../../utils' import { createResponse } from '../../utils/generic-routes' @@ -41,11 +41,7 @@ async function requestHandler( unknown > ) { - const authHeader = request.headers.authorization const range = request.headers.range - const jwt = authHeader.substring('Bearer '.length) - - const postgrest = getPostgrestClient(jwt) const { bucketName } = request.params const objectName = request.params['*'] @@ -56,7 +52,7 @@ async function requestHandler( .send(createResponse('The key contains invalid characters', '400', 'Invalid key')) } - const objectResponse = await postgrest + const objectResponse = await request.postgrest .from('objects') .select('id') .match({ diff --git a/src/routes/object/getSignedURL.ts b/src/routes/object/getSignedURL.ts index ab8c6a79..2d77c74e 100644 --- a/src/routes/object/getSignedURL.ts +++ b/src/routes/object/getSignedURL.ts @@ -1,7 +1,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { AuthenticatedRequest, Obj } from '../../types/types' -import { getPostgrestClient, signJWT, transformPostgrestError } from '../../utils' +import { signJWT, transformPostgrestError } from '../../utils' import { createDefaultSchema } from '../../utils/generic-routes' const getSignedURLParamsSchema = { @@ -52,16 +52,11 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - - const postgrest = getPostgrestClient(jwt) - const { bucketName } = request.params const objectName = request.params['*'] const { expiresIn } = request.body - const objectResponse = await postgrest + const objectResponse = await request.postgrest .from('objects') .select('id') .match({ diff --git a/src/routes/object/index.ts b/src/routes/object/index.ts index 74e45db3..1ca650b9 100644 --- a/src/routes/object/index.ts +++ b/src/routes/object/index.ts @@ -1,4 +1,6 @@ import { FastifyInstance } from 'fastify' +import jwt from '../../plugins/jwt' +import postgrest from '../../plugins/postgrest' import copyObject from './copyObject' import createObject from './createObject' import deleteObject from './deleteObject' @@ -13,15 +15,21 @@ import updateObject from './updateObject' // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export default async function routes(fastify: FastifyInstance) { - fastify.register(copyObject) - fastify.register(createObject) - fastify.register(deleteObject) - fastify.register(deleteObjects) - fastify.register(getObject) + fastify.register(async function authorizationContext(fastify) { + fastify.register(jwt) + fastify.register(postgrest) + + fastify.register(copyObject) + fastify.register(createObject) + fastify.register(deleteObject) + fastify.register(deleteObjects) + fastify.register(getObject) + fastify.register(getSignedURL) + fastify.register(moveObject) + fastify.register(updateObject) + fastify.register(listObjects) + }) + fastify.register(getSignedObject) fastify.register(getPublicObject) - fastify.register(getSignedURL) - fastify.register(moveObject) - fastify.register(updateObject) - fastify.register(listObjects) } diff --git a/src/routes/object/listObjects.ts b/src/routes/object/listObjects.ts index ec943006..99481a24 100644 --- a/src/routes/object/listObjects.ts +++ b/src/routes/object/listObjects.ts @@ -2,7 +2,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { objectSchema } from '../../schemas/object' import { AuthenticatedRequest } from '../../types/types' -import { getPostgrestClient, transformPostgrestError } from '../../utils' +import { transformPostgrestError } from '../../utils' import { createDefaultSchema } from '../../utils/generic-routes' const searchRequestParamsSchema = { @@ -54,10 +54,6 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - - const postgrest = getPostgrestClient(jwt) const { bucketName } = request.params const { limit, offset, sortBy } = request.body let sortColumn, sortOrder @@ -76,7 +72,7 @@ export default async function routes(fastify: FastifyInstance) { request.log.info(request.body) request.log.info(`searching for %s`, prefix) - const { data: results, error, status } = await postgrest + const { data: results, error, status } = await request.postgrest .rpc('search', { prefix, bucketname: bucketName, diff --git a/src/routes/object/moveObject.ts b/src/routes/object/moveObject.ts index 154f20aa..c9a2e755 100644 --- a/src/routes/object/moveObject.ts +++ b/src/routes/object/moveObject.ts @@ -1,7 +1,7 @@ import { FastifyInstance } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { AuthenticatedRequest, Obj } from '../../types/types' -import { getPostgrestClient, isValidKey, transformPostgrestError } from '../../utils' +import { isValidKey, transformPostgrestError } from '../../utils' import { getConfig } from '../../utils/config' import { createDefaultSchema, createResponse } from '../../utils/generic-routes' import { S3Backend } from '../../backend/s3' @@ -53,10 +53,6 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - // check if the user is able to update the row - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - const { destinationKey, sourceKey, bucketId } = request.body if (!isValidKey(destinationKey)) { @@ -67,9 +63,7 @@ export default async function routes(fastify: FastifyInstance) { ) } - const postgrest = getPostgrestClient(jwt) - - const objectResponse = await postgrest + const objectResponse = await request.postgrest .from('objects') .update({ last_accessed_at: new Date().toISOString(), diff --git a/src/routes/object/updateObject.ts b/src/routes/object/updateObject.ts index a28b3f1d..fe7764f7 100644 --- a/src/routes/object/updateObject.ts +++ b/src/routes/object/updateObject.ts @@ -1,7 +1,7 @@ import { FastifyInstance, RequestGenericInterface } from 'fastify' import { FromSchema } from 'json-schema-to-ts' import { Obj, ObjectMetadata } from '../../types/types' -import { getOwner, getPostgrestClient, isValidKey, transformPostgrestError } from '../../utils' +import { getOwner, isValidKey, transformPostgrestError } from '../../utils' import { getConfig } from '../../utils/config' import { createDefaultSchema, createResponse } from '../../utils/generic-routes' import { S3Backend } from '../../backend/s3' @@ -65,10 +65,6 @@ export default async function routes(fastify: FastifyInstance) { schema, }, async (request, response) => { - // check if the user is able to update the row - const authHeader = request.headers.authorization - const jwt = authHeader.substring('Bearer '.length) - const contentType = request.headers['content-type'] request.log.info(`content-type is ${contentType}`) @@ -85,16 +81,15 @@ export default async function routes(fastify: FastifyInstance) { .send(createResponse('The key contains invalid characters', '400', 'Invalid key')) } - const postgrest = getPostgrestClient(jwt) let owner try { - owner = await getOwner(jwt) + owner = await getOwner(request.jwt) } catch (err) { console.log(err) return response.status(400).send(createResponse(err.message, '400', err.message)) } - const objectResponse = await postgrest + const objectResponse = await request.postgrest .from('objects') .update({ last_accessed_at: new Date().toISOString(), @@ -157,7 +152,7 @@ export default async function routes(fastify: FastifyInstance) { cacheControl, size: objectMetadata.size, } - const { error: updateError, status: updateStatus } = await postgrest + const { error: updateError, status: updateStatus } = await request.postgrest .from('objects') .update({ metadata,