From 4593456d43bd66cf8fe4e433f8151b401724d75f Mon Sep 17 00:00:00 2001 From: Kevin Szuchet Date: Tue, 7 Jan 2025 16:35:49 -0300 Subject: [PATCH] feat: Add missing indexes and constraints + prettier + redis host en var usage --- src/adapters/redis.ts | 6 ++- src/adapters/rpcServer.ts | 8 ++-- src/migrations/1736277138587_add-indexes.ts | 41 +++++++++++++++++++++ 3 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 src/migrations/1736277138587_add-indexes.ts diff --git a/src/adapters/redis.ts b/src/adapters/redis.ts index 9828729..d8eb424 100644 --- a/src/adapters/redis.ts +++ b/src/adapters/redis.ts @@ -11,10 +11,12 @@ export default async function createRedisComponent( ): Promise { const { logs, config } = components const logger = logs.getLogger('redis-component') - const REDIS_URL = (await config.getString('REDIS_CONNECTION_STRING')) || `redis://127.0.0.1:6379` + const REDIS_HOST = (await config.getString('REDIS_HOST')) || '127.0.0.1' + + const url = `redis://${REDIS_HOST}:6379` const client = createClient({ - url: REDIS_URL + url }) client.on('error', (err) => { diff --git a/src/adapters/rpcServer.ts b/src/adapters/rpcServer.ts index 908a2e9..979ba74 100644 --- a/src/adapters/rpcServer.ts +++ b/src/adapters/rpcServer.ts @@ -124,7 +124,7 @@ export default async function createRpcServerComponent( async getPendingFriendshipRequests(_request, context) { try { const pendingRequests = await db.getReceivedFriendshipRequests(context.address) - const mappedRequestss = pendingRequests.map(({ address, timestamp, metadata }) => ({ + const mappedRequests = pendingRequests.map(({ address, timestamp, metadata }) => ({ user: { address }, createdAt: new Date(timestamp).getTime(), message: metadata?.message || '' @@ -134,7 +134,7 @@ export default async function createRpcServerComponent( response: { $case: 'requests', requests: { - requests: mappedRequestss + requests: mappedRequests } } } @@ -151,7 +151,7 @@ export default async function createRpcServerComponent( async getSentFriendshipRequests(_request, context) { try { const pendingRequests = await db.getSentFriendshipRequests(context.address) - const mappedRequestss = pendingRequests.map(({ address, timestamp, metadata }) => ({ + const mappedRequests = pendingRequests.map(({ address, timestamp, metadata }) => ({ user: { address }, createdAt: new Date(timestamp).getTime(), message: metadata?.message || '' @@ -161,7 +161,7 @@ export default async function createRpcServerComponent( response: { $case: 'requests', requests: { - requests: mappedRequestss + requests: mappedRequests } } } diff --git a/src/migrations/1736277138587_add-indexes.ts b/src/migrations/1736277138587_add-indexes.ts new file mode 100644 index 0000000..b5afbfa --- /dev/null +++ b/src/migrations/1736277138587_add-indexes.ts @@ -0,0 +1,41 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { MigrationBuilder, ColumnDefinitions } from 'node-pg-migrate' + +export const shorthands: ColumnDefinitions | undefined = undefined + +export async function up(pgm: MigrationBuilder): Promise { + // Address indexes + constraints + pgm.createIndex('friendships', 'address_requester', { name: 'friendships_address_requester', method: 'hash' }) + pgm.createIndex('friendships', 'address_requested', { name: 'friendships_address_requested', method: 'hash' }) + + pgm.createConstraint('friendships', 'unique_addresses', { + unique: ['address_requester', 'address_requested'] + }) + + pgm.createConstraint('friendships', 'address_requester_smaller_than_address_requested', { + check: 'address_requester < address_requested' + }) + + // Lowercase indexes + pgm.createIndex('friendships', 'LOWER(address_requester) text_pattern_ops', { + name: 'friendships_address_requester_lower', + method: 'btree' + }) + pgm.createIndex('friendships', 'LOWER(address_requested) text_pattern_ops', { + name: 'friendships_address_requested_lower', + method: 'btree' + }) + + // Friendship history index + pgm.createIndex('friendship_actions', 'friendship_id', { name: 'friendship_actions_friendship_id' }) +} + +export async function down(pgm: MigrationBuilder): Promise { + pgm.dropIndex('friendships', 'friendships_address_requester') + pgm.dropIndex('friendships', 'friendships_address_requested') + pgm.dropConstraint('friendships', 'unique_addresses') + pgm.dropConstraint('friendships', 'address_requester_smaller_than_address_requested') + pgm.dropIndex('friendships', 'friendships_address_requester_lower') + pgm.dropIndex('friendships', 'friendships_address_requested_lower') + pgm.dropIndex('friendship_actions', 'friendship_actions_friendship_id') +}