Skip to content

Commit

Permalink
Fix get transactions from redis
Browse files Browse the repository at this point in the history
  • Loading branch information
BasileusErwin committed May 9, 2023
1 parent 620e97d commit 585eaf5
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 113 deletions.
50 changes: 25 additions & 25 deletions docker-compose.test.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
version: "3.9"

services:
redis:
image: redis:7.0-alpine
container_name: expenses-redis-test
restart: always
expenses:
build: .
command: sh -c "yarn install && yarn test"
container_name: expenses-test
depends_on:
- postgres
- redis
env_file: ./.env.test
ports:
- 6379:6379
command: redis-server --save 20 1 --loglevel warning
- $PORT:$PORT
volumes:
- ./.redis:/data
- .:/app
working_dir: /app

postgres:
image: postgres:14-alpine
container_name: express-postgres-test
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: expenses-test
volumes:
- ./.postgres:/var/lib/postgresql/data
POSTGRES_PASSWORD: postgres
image: postgres:14-alpine
ports:
- 5432:5432

expenses:
build: .
container_name: expenses-test
working_dir: /app
env_file: ./.env.test
volumes:
- .:/app
- ./.postgres:/var/lib/postgresql/data

redis:
command: redis-server --save 20 1 --loglevel warning
container_name: expenses-redis-test
image: redis:7.0-alpine
ports:
- $PORT:$PORT
depends_on:
- postgres
- redis
command: sh -c "yarn install && yarn test"
- 6379:6379
restart: always
volumes:
- ./.redis:/data

version: "3.9"
50 changes: 25 additions & 25 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
version: "3.9"

services:
redis:
image: redis:7.0-alpine
container_name: expenses-redis
restart: always
expenses:
build: .
command: sh -c "yarn dev"
container_name: expenses-backend
depends_on:
- postgres
- redis
env_file: ./.env
ports:
- 6379:6379
command: redis-server --save 20 1 --loglevel warning
- $PORT:$PORT
volumes:
- ./.redis:/data
- .:/app
working_dir: /app

postgres:
image: postgres:14-alpine
container_name: expenses-postgres
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: expenses
volumes:
- ./.postgres:/var/lib/postgresql/data
POSTGRES_PASSWORD: postgres
image: postgres:14-alpine
ports:
- 5432:5432

expenses:
build: .
container_name: expenses-backend
working_dir: /app
env_file: ./.env
volumes:
- .:/app
- ./.postgres:/var/lib/postgresql/data

redis:
command: redis-server --save 20 1 --loglevel warning
container_name: expenses-redis
image: redis:7.0-alpine
ports:
- $PORT:$PORT
depends_on:
- postgres
- redis
command: sh -c "yarn dev"
- 6379:6379
restart: always
volumes:
- ./.redis:/data

version: "3.9"
17 changes: 0 additions & 17 deletions jest.config.js

This file was deleted.

17 changes: 17 additions & 0 deletions jest.config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"roots": ["<rootDir>"],
"globalSetup": "./test/globalSetup.ts",
"transform": {
"^.+\\.ts?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.ts?$",
"moduleFileExtensions": ["ts", "js", "json", "node"],
"moduleNameMapper": {
"^services/(.*)$": "<rootDir>/src/services/$1",
"^routes/(.*)$": "<rootDir>/src/routes/$1",
"^enums/(.*)$": "<rootDir>/src/enums/$1",
"^models/(.*)$": "<rootDir>/src/models/$1",
"^src/(.*)$": "<rootDir>/src/$1"
},
"testEnvironment": "node"
}
7 changes: 2 additions & 5 deletions src/controllers/transaction.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ async function getAllTransactionsByUserId(req: Request, res: Response, next: Nex

const transationsInRedis = await transactionService.getTransactionsInRedis(where.userId);

if (transationsInRedis?.queryIsEqualToData(where)) {
if (transactionHelper.queryIsEqualToData(transationsInRedis, where)) {
return res.send(new CustomResponse(true, transationsInRedis.object));
}

Expand All @@ -120,10 +120,7 @@ async function getTransactionBalance(req: Request, res: Response, next: NextFunc
const balanceInRedis: TransactionsRedisMetadata<TransactionBalances> =
await transactionService.getBalanceTransactionInRedis(where.userId);

if (
balanceInRedis &&
new TransactionsRedisMetadata(balanceInRedis.object, balanceInRedis.metadata).queryIsEqualToData(where)
) {
if (balanceInRedis && transactionHelper.queryIsEqualToData(balanceInRedis, where)) {
return res.send(new CustomResponse(true, balanceInRedis.object));
}

Expand Down
38 changes: 19 additions & 19 deletions src/enums/api_error.enum.ts
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
export namespace ApiError {
export enum Auth {
GENERIC = 1000,
EXPIRED_TOKEN,
BAD_AUTH,
UNAUTHORIZED,
BAD_EMAIL_FORMAT,
NEED_BE_LOGGED_IN,
EXPIRED_TOKEN = 1001,
BAD_AUTH = 1002,
UNAUTHORIZED = 1003,
BAD_EMAIL_FORMAT = 1004,
NEED_BE_LOGGED_IN = 1005,
}

export enum Server {
GENERIC = 2000,
TOO_FEW_PARAMS,
PARAMS_REQUIRED,
NOT_FOUND,
TOO_FEW_PARAMS = 2001,
PARAMS_REQUIRED = 2002,
NOT_FOUND = 2003,
}

export enum User {
GENERIC = 3000,
USER_DOES_NOT_EXIST,
WRONG_PASSWORD,
PASSWORD_TOO_SHORT,
USER_ALREADY_EXISTS,
USER_DOES_NOT_EXIST = 3001,
WRONG_PASSWORD = 3002,
PASSWORD_TOO_SHORT = 3003,
USER_ALREADY_EXISTS = 3004,
}

export enum Transaction {
GENERIC = 4000,
TRANSACTION_NOT_EXIST,
TRANSACTION_AND_CATEGORY_NOT_SAME_TYPE,
TRANSACTION_AND_GOAL_NOT_SAME_CURENCY,
TRANSACTION_AND_GOAL_NOT_SAME_TYPE,
TRANSACTION_NOT_EXIST = 4001,
TRANSACTION_AND_CATEGORY_NOT_SAME_TYPE = 4002,
TRANSACTION_AND_GOAL_NOT_SAME_CURENCY = 4003,
TRANSACTION_AND_GOAL_NOT_SAME_TYPE = 4004,
}

export enum Category {
GENERIC = 5000,
CATEGORY_NOT_EXIST,
CANNOT_DELETE_CATEGORY_TRASACTIONS,
CATEGORY_NOT_EXIST = 5001,
CANNOT_DELETE_CATEGORY_TRASACTIONS = 5002,
}

export enum FinancialGoal {
GENERIC = 6000,
FINANCIAL_GOAL_NOT_EXIST,
FINANCIAL_GOAL_NOT_EXIST = 6001,
}
}
27 changes: 27 additions & 0 deletions src/helpers/transaction.helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ import { CreateTransactionRequest } from '../types/request/trsactions';
import { ValidationError } from 'express-validator';
import { dayHelper } from './day.helper';
import { Request, Response } from 'express';
import { TransactionMetadata, TransactionsRedisMetadata } from '../types/redis_types';
import { TransactionDTO } from '../types/DTOs';
import { TransactionBalances } from '../types/response/transactions';

function createTransactionValidation(
transactions: CreateTransactionRequest[],
Expand Down Expand Up @@ -147,7 +150,31 @@ function getQueryInGetTransaction(req: Request, { locals }: Response): Transacti
return where;
}

function queryIsEqualToData(
object: TransactionsRedisMetadata<TransactionDTO[] | TransactionBalances>,
where: TransactionMetadata,
): boolean {
if (object?.metadata?.type !== where?.type) {
return false;
}

if (object.metadata?.day !== where?.day) {
return false;
}

if (object.metadata?.month !== where?.month) {
return false;
}

if (object.metadata?.year !== where?.year) {
return false;
}

return true;
}

export const transactionHelper = {
createTransactionValidation,
getQueryInGetTransaction,
queryIsEqualToData,
};
4 changes: 2 additions & 2 deletions src/services/transactions.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -427,11 +427,11 @@ async function setBalanceTransactionInRedis(
}

async function deleteTransactionsInRedis(userId: string) {
await redisClient.del(`transactions:${userId}`)
await redisClient.del(`transactions:${userId}`);
}

async function deleteBalanceTransactionInRedis(userId: string) {
await redisClient.del(`balances:${userId}`)
await redisClient.del(`balances:${userId}`);
}

export const transactionService = {
Expand Down
20 changes: 0 additions & 20 deletions src/types/redis_types/transactions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,4 @@ export class TransactionsRedisMetadata<T> implements RedisMetadata<T, Transactio
this.object = object;
this.metadata = metadata;
}

public queryIsEqualToData(where: TransactionMetadata): boolean {
if (this?.metadata?.type !== where?.type) {
return false;
}

if (this?.metadata?.day !== where?.day) {
return false;
}

if (this?.metadata?.month !== where?.month) {
return false;
}

if (this?.metadata?.year !== where?.year) {
return false;
}

return true;
}
}

0 comments on commit 585eaf5

Please sign in to comment.