Skip to content

Commit b4a0ab3

Browse files
author
bhavik
committed
feat: Added support for azure blob storage in queue-manager
1 parent b91122e commit b4a0ab3

File tree

6 files changed

+55
-7
lines changed

6 files changed

+55
-7
lines changed

apps/queue-manager/src/.env.development

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,23 @@ RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
33
MONGO_URL=mongodb://localhost:27017/impler-db
44

55
# Storage
6+
STORAGE_TYPE=s3
67
S3_REGION=us-east-1
78
S3_LOCAL_STACK=http://localhost:4566
89
S3_BUCKET_NAME=impler
910
AWS_ACCESS_KEY_ID=
1011
AWS_SECRET_ACCESS_KEY=
1112

13+
AZURE_STORAGE_CONNECTION_STRING=
14+
AZURE_STORAGE_CONTAINER=
15+
1216
# Analytics
13-
SENTRY_DSN=
17+
SENTRY_DSN=
18+
19+
# Email
20+
SES_REGION=
21+
SES_ACCESS_KEY_ID=
22+
SES_SECRET_ACCESS_KEY=
23+
EMAIL_FROM=
24+
ALERT_EMAIL_FROM=
25+
EMAIL_FROM_NAME=

apps/queue-manager/src/.env.production

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,23 @@ RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
33
MONGO_URL=mongodb://localhost:27017/impler-db
44

55
# Storage
6+
STORAGE_TYPE=s3
67
S3_REGION=us-east-1
78
S3_LOCAL_STACK=http://localhost:4566
89
S3_BUCKET_NAME=impler
910
AWS_ACCESS_KEY_ID=
1011
AWS_SECRET_ACCESS_KEY=
1112

13+
AZURE_STORAGE_CONNECTION_STRING=
14+
AZURE_STORAGE_CONTAINER=
15+
1216
# Analytics
13-
SENTRY_DSN=
17+
SENTRY_DSN=
18+
19+
# Email
20+
SES_REGION=
21+
SES_ACCESS_KEY_ID=
22+
SES_SECRET_ACCESS_KEY=
23+
EMAIL_FROM=
24+
ALERT_EMAIL_FROM=
25+
EMAIL_FROM_NAME=

apps/queue-manager/src/.env.test

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,20 @@ RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
33
MONGO_URL=mongodb://localhost:27017/impler-db
44

55
# Storage
6+
STORAGE_TYPE=s3
67
S3_REGION=us-east-1
78
S3_LOCAL_STACK=http://localhost:4566
89
S3_BUCKET_NAME=impler
910
AWS_ACCESS_KEY_ID=
1011
AWS_SECRET_ACCESS_KEY=
1112

1213
# Analytics
13-
SENTRY_DSN=
14+
SENTRY_DSN=
15+
16+
# Email
17+
SES_REGION=
18+
SES_ACCESS_KEY_ID=
19+
SES_SECRET_ACCESS_KEY=
20+
EMAIL_FROM=
21+
ALERT_EMAIL_FROM=
22+
EMAIL_FROM_NAME=

apps/queue-manager/src/.example.env

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,18 @@ RABBITMQ_CONN_URL=amqp://guest:guest@localhost:5672
44
MONGO_URL=mongodb://localhost:27017/impler-db
55

66
# Storage
7+
STORAGE_TYPE=s3
78
S3_REGION=us-east-1
89
S3_LOCAL_STACK=http://localhost:4566
910
S3_BUCKET_NAME=impler
1011

1112
# Analytics
12-
SENTRY_DSN=
13+
SENTRY_DSN=
14+
15+
# Email
16+
SES_REGION=
17+
SES_ACCESS_KEY_ID=
18+
SES_SECRET_ACCESS_KEY=
19+
EMAIL_FROM=
20+
ALERT_EMAIL_FROM=
21+
EMAIL_FROM_NAME=

apps/queue-manager/src/config/env-validator.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
import { str, ValidatorSpec } from 'envalid';
22
import * as envalid from 'envalid';
3-
import { ENVTypesEnum } from '@impler/shared';
3+
import { ENVTypesEnum, StorageTypeEnum } from '@impler/shared';
44

55
// eslint-disable-next-line @typescript-eslint/no-explicit-any
66
const validators: { [K in keyof any]: ValidatorSpec<any[K]> } = {
77
NODE_ENV: str({
88
choices: [ENVTypesEnum.DEV, ENVTypesEnum.TEST, ENVTypesEnum.PROD, ENVTypesEnum.CI, ENVTypesEnum.LOCAL],
99
default: ENVTypesEnum.LOCAL,
1010
}),
11+
STORAGE_TYPE: str({
12+
choices: [StorageTypeEnum.S3, StorageTypeEnum.AZURE],
13+
default: StorageTypeEnum.S3,
14+
}),
1115
MONGO_URL: str(),
1216
RABBITMQ_CONN_URL: str(),
1317
S3_LOCAL_STACK: str({

apps/queue-manager/src/helpers/services.helper.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
import { EmailService, S3StorageService, SESEmailService, StorageService } from '@impler/services';
1+
import { StorageTypeEnum } from '@impler/shared';
2+
import { AzureStorageService, EmailService, S3StorageService, SESEmailService, StorageService } from '@impler/services';
23

34
let storageService: StorageService;
45
let emailService: EmailService;
56

67
// Implementing singleton pattern for storage service
78
export function getStorageServiceClass() {
89
if (storageService) return storageService;
9-
storageService = new S3StorageService();
10+
storageService =
11+
process.env.STORAGE_TYPE === StorageTypeEnum.AZURE ? new AzureStorageService() : new S3StorageService();
1012

1113
return storageService;
1214
}

0 commit comments

Comments
 (0)