Skip to content

Commit

Permalink
refactor: use custom errors instead of redis-errors (#201)
Browse files Browse the repository at this point in the history
  • Loading branch information
liaoliaots committed Mar 10, 2022
1 parent e5906e6 commit 15e3402
Show file tree
Hide file tree
Showing 9 changed files with 29 additions and 45 deletions.
4 changes: 2 additions & 2 deletions lib/cluster/cluster-manager.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { Cluster } from 'ioredis';
import { RedisError } from 'redis-errors';
import { CLUSTER_CLIENTS, DEFAULT_CLUSTER_NAMESPACE } from './cluster.constants';
import { ClusterClients } from './interfaces';
import { CLIENT_NOT_FOUND } from '@/messages';
import { parseNamespace } from '@/utils';
import { ClientNamespace } from '@/interfaces';
import { ClientNotFoundError } from '@/errors';

@Injectable()
export class ClusterManager {
Expand All @@ -23,7 +23,7 @@ export class ClusterManager {
*/
getClient(namespace: ClientNamespace = DEFAULT_CLUSTER_NAMESPACE): Cluster {
const client = this.clusterClients.get(namespace);
if (!client) throw new RedisError(CLIENT_NOT_FOUND(parseNamespace(namespace), false));
if (!client) throw new ClientNotFoundError(CLIENT_NOT_FOUND(parseNamespace(namespace), false));
return client;
}
}
4 changes: 2 additions & 2 deletions lib/cluster/cluster.module.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Module, DynamicModule, Provider, OnApplicationShutdown, Inject } from '@nestjs/common';
import { RedisError } from 'redis-errors';
import { ClusterModuleOptions, ClusterModuleAsyncOptions, ClusterClients } from './interfaces';
import { ClusterManager } from './cluster-manager';
import {
Expand All @@ -13,6 +12,7 @@ import { quitClients } from './common';
import { MISSING_CONFIGURATION } from '@/messages';
import { parseNamespace, isResolution, isRejection, isError } from '@/utils';
import { logger } from './cluster-logger';
import { MissingConfigurationError } from '@/errors';

@Module({})
export class ClusterModule implements OnApplicationShutdown {
Expand Down Expand Up @@ -46,7 +46,7 @@ export class ClusterModule implements OnApplicationShutdown {
*/
static forRootAsync(options: ClusterModuleAsyncOptions, isGlobal = true): DynamicModule {
if (!options.useFactory && !options.useClass && !options.useExisting) {
throw new RedisError(MISSING_CONFIGURATION);
throw new MissingConfigurationError(MISSING_CONFIGURATION);
}

const clusterClientProviders = createClusterClientProviders();
Expand Down
8 changes: 8 additions & 0 deletions lib/errors/client-not-found.error.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export class ClientNotFoundError extends Error {
constructor(message: string) {
super(message);

this.name = ClientNotFoundError.name;
Error.captureStackTrace(this, this.constructor);
}
}
2 changes: 2 additions & 0 deletions lib/errors/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { MissingConfigurationError } from './missing-configuration.error';
export { ClientNotFoundError } from './client-not-found.error';
8 changes: 8 additions & 0 deletions lib/errors/missing-configuration.error.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export class MissingConfigurationError extends Error {
constructor(message: string) {
super(message);

this.name = MissingConfigurationError.name;
Error.captureStackTrace(this, this.constructor);
}
}
4 changes: 2 additions & 2 deletions lib/redis/redis-manager.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { Redis } from 'ioredis';
import { RedisError } from 'redis-errors';
import { REDIS_CLIENTS, DEFAULT_REDIS_NAMESPACE } from './redis.constants';
import { RedisClients } from './interfaces';
import { CLIENT_NOT_FOUND } from '@/messages';
import { parseNamespace } from '@/utils';
import { ClientNamespace } from '@/interfaces';
import { ClientNotFoundError } from '@/errors';

@Injectable()
export class RedisManager {
Expand All @@ -23,7 +23,7 @@ export class RedisManager {
*/
getClient(namespace: ClientNamespace = DEFAULT_REDIS_NAMESPACE): Redis {
const client = this.redisClients.get(namespace);
if (!client) throw new RedisError(CLIENT_NOT_FOUND(parseNamespace(namespace)));
if (!client) throw new ClientNotFoundError(CLIENT_NOT_FOUND(parseNamespace(namespace)));
return client;
}
}
4 changes: 2 additions & 2 deletions lib/redis/redis.module.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Module, DynamicModule, Provider, OnApplicationShutdown, Inject } from '@nestjs/common';
import { RedisError } from 'redis-errors';
import { RedisModuleOptions, RedisModuleAsyncOptions, RedisClients } from './interfaces';
import { RedisManager } from './redis-manager';
import {
Expand All @@ -13,6 +12,7 @@ import { quitClients } from './common';
import { MISSING_CONFIGURATION } from '@/messages';
import { parseNamespace, isResolution, isRejection, isError } from '@/utils';
import { logger } from './redis-logger';
import { MissingConfigurationError } from '@/errors';

@Module({})
export class RedisModule implements OnApplicationShutdown {
Expand Down Expand Up @@ -46,7 +46,7 @@ export class RedisModule implements OnApplicationShutdown {
*/
static forRootAsync(options: RedisModuleAsyncOptions, isGlobal = true): DynamicModule {
if (!options.useFactory && !options.useClass && !options.useExisting) {
throw new RedisError(MISSING_CONFIGURATION);
throw new MissingConfigurationError(MISSING_CONFIGURATION);
}

const redisClientProviders = createRedisClientProviders();
Expand Down
34 changes: 0 additions & 34 deletions lib/test.ts

This file was deleted.

6 changes: 3 additions & 3 deletions lib/utils/promise-timeout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ export const promiseTimeout = (ms: number, promise: Promise<unknown>): Promise<u
timer = setTimeout(() => {
reject(new Error(`timeout of ${ms}ms exceeded`));
}, ms);
}).finally(() => {
clearTimeout(timer);
})
]);
]).finally(() => {
clearTimeout(timer);
});
};

0 comments on commit 15e3402

Please sign in to comment.