Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add support for aws ses #305

Merged
merged 25 commits into from
Sep 27, 2024
Merged

feat: add support for aws ses #305

merged 25 commits into from
Sep 27, 2024

Conversation

kshitij-k-osmosys
Copy link
Contributor

@kshitij-k-osmosys kshitij-k-osmosys commented Aug 8, 2024

API PR Checklist

Pre-requisites

  • I have gone through the Contributing guidelines for Submitting a Pull Request (PR) and ensured that this is not a duplicate PR.
  • I have performed preliminary testing using the test suite to ensure that any existing features are not impacted and any new features are working as expected.
  • I have updated the required api docs as applicable.
  • I have added/updated test cases to the test suite as applicable

PR Details

PR details have been updated as per the given format (see below)

  • PR title adheres to the format specified in guidelines (e.g., feat: add admin login endpoint)
  • Description has been added
  • Related changes have been added (optional)
  • Screenshots have been added (optional)
  • Query request and response examples have been added (as applicable, in case added or updated)
  • Documentation changes have been listed (as applicable)
  • Test suite output is added (as applicable)
  • Pending actions have been added (optional)
  • Any other additional notes have been added (optional)

Additional Information

  • Appropriate label(s) have been added (ready for review should be added if the PR is ready to be reviewed)
  • Assignee(s) and reviewer(s) have been added (optional)

Description:

Add support to send emails using AWS SES

Related changes:

  • Install @aws/ses node package
  • Create new channel type for SES
  • Create migration to populate master_provider details
  • Create new dto for SES request
  • Create module and service file for SES provider with all the relevant functions
  • Create consumer for SES to handle sending notification
  • Update validator and queue.service to handle SES
  • Run a query for aws ses to see if it is being processed properly
  • Add documentation with related links for the specified provider aws ses
  • Update postman collection with aws ses request queries

Screenshots:

NA

Query request and response:

curl --location 'http://localhost:3000/notifications' \
--header 'x-api-key: OsmoX-test-key' \
--header 'Content-Type: application/json' \
--data-raw '{
    "providerId": 11,
    "data": {
        "from": "[email protected]",
        "to": "[email protected]",
        "subject": "Test subject",
        "text": "This is a test notification",
        "html": "<b>This is a test notification</b>",
        "replyTo": "[email protected]",
        "attachments": [
            {
                "filename": "names.txt",
                "content": "John Doe\nJane Doe"
            }
        ]
    }
}'

Documentation changes:

  • Create documentation for AWS SES Provider
  • Update postman collection

Test suite output:

NA

Pending actions:

NA

Additional notes:

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Introduced AWS SES notifications functionality for sending emails.
    • Added a new section for handling notifications via the SNS SMS channel type.
    • Expanded API capabilities with detailed documentation for integrating AWS SES as a notification provider.
  • Bug Fixes

    • Improved error handling for invalid API keys and missing fields in AWS SES notifications.
  • Tests

    • Added test cases for various scenarios in AWS SES notifications, including successful notifications and error conditions.
    • Included comprehensive request tests and response validations for AWS SES notifications.

@kshitij-k-osmosys kshitij-k-osmosys self-assigned this Aug 8, 2024
Copy link

coderabbitai bot commented Aug 8, 2024

Walkthrough

The recent updates enhance the OsmoX API's notification capabilities by integrating AWS Simple Email Service (SES). Key changes include the introduction of new handling for AWS SES notifications, comprehensive validation schemas, improved error handling, and detailed documentation for integration. Additionally, new services and modules facilitate email sending, streamlining the notification system and broadening its feature set.

Changes

File Path Change Summary
apps/api/OsmoX.postman_collection.json Updated notification descriptions, replaced "Twilio" with "Plivo," and added AWS SES endpoints.
apps/api/src/common/constants/notifications.ts Added AWS_SES channel type to constants and updated skip confirmation channels.
apps/api/src/common/decorators/is-data-valid.decorator.ts Enhanced validation logic to include AWS SES data validation.
apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts Added AwsSesNotificationConsumer for processing AWS SES notifications from a queue.
apps/api/src/modules/notifications/notifications.module.ts Integrated AwsSesModule and AwsSesNotificationConsumer into the notification module.
apps/api/src/modules/notifications/queues/queue.service.ts Updated QueueService to handle AWS SES notification processing.
apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts Introduced AwsSesDataDto for validating AWS SES notification data.
apps/api/src/modules/providers/aws-ses/aws-ses.service.ts Added AwsSesService for sending emails via AWS SES, including error handling and attachment management.
apps/api/package.json Added dependency for AWS SDK SES client to support email sending functionality.

Possibly related PRs

Suggested labels

documentation

Poem

🐇 In the meadow, bright and clear,
New emails fly, oh what a cheer!
With AWS, our messages soar,
Notifications ringing, never a bore.
Hopping high with joy, we sing,
Thank you, dear code, for this wondrous thing! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@kshitij-k-osmosys kshitij-k-osmosys marked this pull request as ready for review August 8, 2024 07:17
@kshitij-k-osmosys kshitij-k-osmosys requested a review from a user August 8, 2024 07:18
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (1)
apps/api/src/modules/providers/aws-ses/aws-ses.service.spec.ts (1)

1-18: Expand test coverage for AwsSesService.

The test suite currently only verifies that the service is defined. Consider adding more tests to cover different functionalities and edge cases of AwsSesService.

+  it('should send an email successfully', async () => {
+    // Mock AWS SES response and test the send email functionality.
+    // Example: expect(await service.sendEmail(emailData)).toEqual(expectedResponse);
+  });

+  it('should handle errors gracefully', async () => {
+    // Simulate an error scenario and test error handling.
+    // Example: expect(await service.sendEmail(invalidData)).toThrowError(ExpectedError);
+  });
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4ee7ba9 and fdfc053.

Files ignored due to path filters (1)
  • apps/api/package-lock.json is excluded by !**/package-lock.json
Files selected for processing (13)
  • apps/api/OsmoX.postman_collection.json (2 hunks)
  • apps/api/docs/channels/aws-ses.md (1 hunks)
  • apps/api/package.json (1 hunks)
  • apps/api/src/common/constants/notifications.ts (2 hunks)
  • apps/api/src/common/decorators/is-data-valid.decorator.ts (2 hunks)
  • apps/api/src/database/migrations/1722988740000-AwsSesSeedData.ts (1 hunks)
  • apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1 hunks)
  • apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts (1 hunks)
  • apps/api/src/modules/notifications/notifications.module.ts (3 hunks)
  • apps/api/src/modules/notifications/queues/queue.service.ts (3 hunks)
  • apps/api/src/modules/providers/aws-ses/aws-ses.module.ts (1 hunks)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.spec.ts (1 hunks)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Additional context used
Learnings (3)
apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1)
Learnt from: ayushnvs
PR: OsmosysSoftware/osmo-x#262
File: apps/api/src/jobs/consumers/notifications/mailgun-notifications.job.consumer.ts:0-0
Timestamp: 2024-07-03T13:27:46.550Z
Learning: The `notificationSendResponse` variable in the `processMailgunNotificationConfirmationQueue` method of the `MailgunNotificationConsumer` class was changed from `let` to `const` to reflect that it is never reassigned.
apps/api/src/common/decorators/is-data-valid.decorator.ts (1)
Learnt from: Harish-osmosys
PR: OsmosysSoftware/osmo-x#269
File: apps/api/src/common/decorators/is-data-valid.decorator.ts:99-104
Timestamp: 2024-07-05T08:06:37.627Z
Learning: In the `IsDataValidConstraint` class of the `is-data-valid.decorator.ts` file, wrapping variable declarations in a block within switch cases ensures correct scoping and prevents potential errors.
apps/api/src/modules/notifications/queues/queue.service.ts (1)
Learnt from: LakshayaT
PR: OsmosysSoftware/osmo-x#262
File: apps/api/src/modules/notifications/queues/queue.service.ts:87-87
Timestamp: 2024-07-03T08:38:36.915Z
Learning: The `processNotificationQueue` method in the `NotificationConsumer` class includes error handling, which covers the `processMailgunNotificationQueue` method in the `MailgunNotificationConsumer` class.
LanguageTool
apps/api/docs/channels/aws-ses.md

[uncategorized] ~51-~51: Possible missing comma found.
Context: ...il.com" } } ``` For further payload information check the following link: ### Document...

(AI_HYDRA_LEO_MISSING_COMMA)

Additional comments not posted (21)
apps/api/src/modules/providers/aws-ses/aws-ses.module.ts (1)

1-11: Ensure proper dependency configuration.

The module setup seems correct with necessary imports and providers. Ensure that ProvidersService is correctly implemented in ProvidersModule to avoid potential runtime issues.

Verification successful

ProvidersService is correctly implemented and available

The ProvidersService class is implemented in the apps/api/src/modules/providers/providers.service.ts file. It extends CoreService<Provider> and is properly set up with necessary dependencies. This confirms that the ProvidersService is correctly implemented and available for use in the modules where it is listed as a provider.

  • apps/api/src/modules/providers/providers.service.ts: Implementation of ProvidersService.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that ProvidersService is implemented in ProvidersModule.

# Test: Search for the ProvidersService implementation within ProvidersModule.
ast-grep --lang typescript --pattern $'export class ProvidersModule { $$$ }'

Length of output: 77


Script:

#!/bin/bash
# Description: Verify that ProvidersService is implemented and provided in ProvidersModule.

# Search for the ProvidersService class implementation.
ast-grep --lang typescript --pattern $'export class ProvidersService { $$$ }'

# Search for ProvidersService being provided in ProvidersModule.
rg 'providers:\s*\[.*ProvidersService.*\]' -A 5

Length of output: 4726


Script:

#!/bin/bash
# Description: Verify that ProvidersService class is implemented in the codebase.

# Search for the ProvidersService class implementation.
ast-grep --lang typescript --pattern $'export class ProvidersService { $$$ }'

Length of output: 78


Script:

#!/bin/bash
# Description: Search for any definition of ProvidersService in the codebase.

# Use ripgrep to search for ProvidersService definition in the codebase.
rg 'class ProvidersService' -A 5

Length of output: 646

apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts (1)

1-27: Validation logic looks solid.

The DTO uses class-validator decorators effectively to enforce validation rules. Ensure that the validation logic aligns with the application's requirements for email data.

apps/api/src/database/migrations/1722988740000-AwsSesSeedData.ts (2)

4-12: Ensure JSON configuration is correct.

The JSON configuration for AWS SES credentials seems well-structured with labels, IDs, patterns, and types. Ensure these patterns and types align with AWS SES requirements.


15-19: Confirm the down method accurately reverses the up method.

The down method correctly deletes the entry added by the up method. Ensure the name and provider_type values remain consistent with the up method.

apps/api/src/common/constants/notifications.ts (2)

21-21: Confirm integration of AWS_SES in ChannelType.

The addition of AWS_SES to ChannelType with value 12 appears correct. Ensure this value does not conflict with existing channel types.


69-69: Verify inclusion of AWS_SES in SkipProviderConfirmationChannels.

Ensure that AWS SES should indeed skip provider confirmation. This decision should align with the intended behavior of the notification system.

apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (2)

12-24: Confirm dependency injection and constructor logic.

Dependencies are correctly injected, and the constructor calls the superclass constructor with appropriate arguments. Ensure AwsSesService and other services are correctly configured.


26-34: Verify logic in processAwsSesNotificationQueue.

The method correctly extends the base class's notification processing. Ensure AwsSesData casting and sendPushNotification logic align with AWS SES requirements.

apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (4)

1-14: Imports and Interface Definition Look Good!

The imports are appropriate, and the AwsSesData interface is well-defined for the expected data structure.


38-79: Email Sending Method Looks Good, Consider Extending Error Handling.

The sendPushNotification method is well-structured and handles MessageRejected errors. Consider extending error handling to cover more specific SES errors for better debugging.


22-26: Logger Usage Looks Good!

Logger usage is appropriate for debugging. Ensure sensitive information is not logged.


16-36: Constructor and Configuration Method Look Good!

The constructor and assignAwsSesConfig method are implemented correctly.

Ensure that credentials are securely managed and not exposed in logs or error messages.

Verification successful

AWS Credentials Handling Verified

The AWS credentials in the AwsSesService and related services are handled securely without exposure in logs or insecure practices.

  • No instances of logging AWS credentials were found.
  • Credentials are not hardcoded or passed insecurely.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify secure handling of AWS credentials.

# Test: Search for potential exposure of credentials in logs.
rg --type ts 'logger\.(debug|info|warn|error)' -A 3 | rg 'AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY'

Length of output: 100


Script:

#!/bin/bash
# Description: Check for any insecure handling of AWS credentials in the codebase.

# Test: Search for any instances where AWS credentials might be logged indirectly or handled insecurely.
rg --type ts 'AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY' -A 3

# Test: Look for any hardcoded AWS credentials in the codebase.
rg --type ts 'accessKeyId|secretAccessKey' -A 3

# Test: Check for any instances where credentials are being passed to functions or methods that might expose them.
rg --type ts 'function|method' -A 5 | rg 'AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY'

Length of output: 3460

apps/api/docs/channels/aws-ses.md (1)

51-51: Add Missing Comma in JSON Example.

There is a missing comma in the JSON example, which might cause confusion when copying the code.

-    "AWS_REGION":"aws-region"
+    "AWS_REGION":"aws-region",

Likely invalid or redundant comment.

Tools
LanguageTool

[uncategorized] ~51-~51: Possible missing comma found.
Context: ...il.com" } } ``` For further payload information check the following link: ### Document...

(AI_HYDRA_LEO_MISSING_COMMA)

apps/api/package.json (1)

32-32: Dependency Addition Looks Good!

The addition of @aws-sdk/client-ses is appropriate for the new AWS SES functionality.

apps/api/src/modules/notifications/notifications.module.ts (1)

41-42: AWS SES Integration Approved.

The additions of AwsSesModule and AwsSesNotificationConsumer are consistent with the existing pattern for integrating notification providers.

Also applies to: 55-55, 73-73

apps/api/src/common/decorators/is-data-valid.decorator.ts (1)

25-25: AWS SES Validation Case Approved.

The addition of AwsSesDataDto and the corresponding case in the IsDataValidConstraint class is well-implemented and consistent with other channel types.

Ensure that AwsSesDataDto is correctly defined and used elsewhere in the codebase.

Also applies to: 131-136

Verification successful

Verification Successful: AwsSesDataDto Usage

The AwsSesDataDto class is defined and used appropriately in the is-data-valid.decorator.ts file. No additional usages were found, indicating that its current implementation is consistent with its intended use in the codebase.

  • apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts: Definition of AwsSesDataDto.
  • apps/api/src/common/decorators/is-data-valid.decorator.ts: Usage of AwsSesDataDto.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the definition and usage of `AwsSesDataDto`.

# Test: Search for the definition and usage of `AwsSesDataDto`. Expect: It should be defined and used appropriately.
rg --type ts 'AwsSesDataDto'

Length of output: 380


Script:

#!/bin/bash
# Description: Search for all usages of `AwsSesDataDto` across the codebase to ensure it is used correctly.
rg --type ts 'AwsSesDataDto'

Length of output: 380

apps/api/src/modules/notifications/queues/queue.service.ts (1)

6-6: AWS SES Queue Integration Approved.

The integration of AwsSesNotificationConsumer into the QueueService class is consistent with the existing pattern for other notification channels.

Ensure that AwsSesNotificationConsumer is correctly implemented and used elsewhere in the codebase.

Also applies to: 40-40, 173-176

Verification successful

AWS SES Consumer Implementation Verified.

The AwsSesNotificationConsumer is correctly implemented and integrated into the notification system. It is registered as a provider in the notifications.module.ts and injected into the QueueService. This aligns with the existing patterns for other notification channels. No issues were found.

  • notifications.module.ts: Registered as a provider.
  • queue.service.ts: Injected and used in the service.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation and usage of `AwsSesNotificationConsumer`.

# Test: Search for the implementation and usage of `AwsSesNotificationConsumer`. Expect: It should be implemented and used appropriately.
rg --type ts 'AwsSesNotificationConsumer'

Length of output: 760


Script:

#!/bin/bash
# Check for any additional configurations or references to AwsSesNotificationConsumer in the codebase
rg 'AwsSesNotificationConsumer' -A 5

Length of output: 3515

apps/api/OsmoX.postman_collection.json (4)

2367-2430: LGTM: Comprehensive test for AWS SES Notification - Success

The request and associated tests are well-structured, covering essential validation for a successful AWS SES notification.


2433-2482: LGTM: Correct handling of missing 'to' field

The request and test script correctly handle the scenario where the 'to' field is missing, ensuring appropriate error responses.


2486-2543: LGTM: Correct handling of channel type mismatch

The request and test script effectively handle the scenario of a channel type mismatch, ensuring the response is appropriately validated.


2547-2597: LGTM: Correct handling of invalid API key

The request and test script correctly handle the scenario of an invalid API key, ensuring the response is appropriately validated.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range, codebase verification and nitpick comments (1)
apps/api/OsmoX.postman_collection.json (1)

2428-2428: Update the description for AWS SES Notification.

The description mentions "SMTP channel type," which seems incorrect for an AWS SES request. Update it to accurately reflect the AWS SES channel.

-        "description": "Allows successfully creating new notification for the SMTP channel type."
+        "description": "Allows successfully creating new notification for the AWS SES channel type."
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between fdfc053 and 3042cab.

Files selected for processing (1)
  • apps/api/OsmoX.postman_collection.json (2 hunks)
Additional comments not posted (1)
apps/api/OsmoX.postman_collection.json (1)

2364-2601: Comprehensive AWS SES Notification Tests Added

The new AWS SES notification section includes a variety of test cases that cover successful requests and multiple error scenarios. This addition enhances the robustness of the notification system by ensuring that AWS SES integration is thoroughly tested.

apps/api/OsmoX.postman_collection.json Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 3042cab and 3ad22ad.

Files selected for processing (1)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts

@ghost
Copy link

ghost commented Aug 9, 2024

@kshitij-k-osmosys We need to keep a consistent format for users of OsmoX for all email providers. For example, Mailgun and SMTP have the same request body:

However, as I see in your current PR, the request body data is different. Please address this.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range, codebase verification and nitpick comments (1)
apps/api/docs/channels/aws-ses.md (1)

3-14: Enhance database configuration instructions.

Consider adding more context on the significance of fields like application_id and user_id in the notify_providers table to help users understand their purpose.

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 3ad22ad and da9dd28.

Files selected for processing (2)
  • apps/api/OsmoX.postman_collection.json (2 hunks)
  • apps/api/docs/channels/aws-ses.md (1 hunks)
Additional context used
LanguageTool
apps/api/docs/channels/aws-ses.md

[uncategorized] ~51-~51: Possible missing comma found.
Context: ...il.com" } } ``` For further payload information check the following link: [AWS SDK Send...

(AI_HYDRA_LEO_MISSING_COMMA)

Additional comments not posted (5)
apps/api/docs/channels/aws-ses.md (4)

16-30: Configuration details are clear.

The table and JSON example provide clear instructions for setting up AWS SES configuration details.


53-56: Documentation links are appropriate.

The links provided are relevant and useful for further reading on AWS SES.


58-62: Dependencies section is clear.

The dependency information is well-presented and informative.


51-51: Static analysis false positive.

The JSON example is correctly formatted; the static analysis hint about a missing comma is a false positive.

Tools
LanguageTool

[uncategorized] ~51-~51: Possible missing comma found.
Context: ...il.com" } } ``` For further payload information check the following link: [AWS SDK Send...

(AI_HYDRA_LEO_MISSING_COMMA)

apps/api/OsmoX.postman_collection.json (1)

2363-2602: Review AWS SES Notification Section

The AWS SES notification section has been added. Let's review each request within this section.

  1. Send AWS SES Notification - Success

    • Request Body: The body includes fields like fromAddress, toAddresses, subject, text, html, and replyToAddresses. Ensure these fields align with the SES API requirements.
    • Test Scripts: The test scripts validate the response structure and ensure the channelType and deliveryStatus are correct.
  2. Send AWS SES Notification - Missing To Field

    • Request Body: The toAddresses field is missing, which should trigger a validation error.
    • Test Scripts: The test script correctly checks for a 400 status code and the appropriate error message.
  3. Send AWS SES Notification - Mismatch in ChannelType

    • Request Body: Uses a providerId that mismatches the expected channelType.
    • Test Scripts: The test script checks for a 400 status code and ensures the response indicates a failure.
  4. Send AWS SES Notification - Invalid API Key

    • Request Body: The request uses an invalid API key.
    • Test Scripts: The test script checks for a 401 status code and verifies the error message for an invalid API key.

Overall, the AWS SES section is well-structured with comprehensive test cases covering both success and error scenarios.

apps/api/docs/channels/aws-ses.md Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between da9dd28 and a8ed507.

Files selected for processing (4)
  • apps/api/OsmoX.postman_collection.json (36 hunks)
  • apps/api/docs/channels/aws-ses.md (1 hunks)
  • apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts (1 hunks)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Files skipped from review as they are similar to previous changes (2)
  • apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts
Additional context used
LanguageTool
apps/api/docs/channels/aws-ses.md

[uncategorized] ~52-~52: Possible missing comma found.
Context: ...tional) } } ``` For further payload information check the following link: [AWS SDK Send...

(AI_HYDRA_LEO_MISSING_COMMA)

Additional comments not posted (9)
apps/api/docs/channels/aws-ses.md (5)

1-23: Introduction and Database Values Section: Looks Good!

The introductory section and the database values configuration details are clear and accurate.


24-31: Sample JSON Configuration: Looks Good!

The JSON configuration for AWS SES credentials is correctly formatted and clear.


33-51: Ensure Consistency with Other Providers' Request Body Format.

The request body format for AWS SES should align with the formats used by other providers like Mailgun and SMTP to ensure a consistent user experience.

Would you like assistance in aligning the request body format with existing providers?


54-57: Documentation Links: Looks Good!

The documentation links provided are relevant and correctly formatted.


59-63: Dependencies Section: Looks Good!

The dependency information for the AWS SDK package is accurate and up-to-date.

apps/api/OsmoX.postman_collection.json (4)

2435-2484: Check Error Handling for Missing Fields.

The test for missing the to field in AWS SES requests correctly expects a 400 error. Ensure that the error message aligns with the application's error handling conventions.


2487-2545: Validate ChannelType Mismatch Handling.

The request for a mismatch in channelType is correctly set up to return a 400 error. Verify that the logic for checking channelType is consistent across all providers.


2549-2601: Test Invalid API Key Handling.

The test for an invalid API key in AWS SES requests is well-structured. Ensure that similar tests are implemented for all providers to maintain security standards.


2369-2431: Verify AWS SES Notification Success Request.

The success request for AWS SES notifications appears to be well-structured. Ensure that the providerId and channelType are correctly set and that the response validation checks all necessary fields.

apps/api/OsmoX.postman_collection.json Outdated Show resolved Hide resolved
@ghost
Copy link

ghost commented Aug 19, 2024

@kshitij-k-osmosys I also do not see any support for attachments. Can that not be done?

@kshitij-k-osmosys
Copy link
Contributor Author

@kshitij-k-osmosys I also do not see any support for attachments. Can that not be done?

According to the following documentation I did not see any attachment inputs

@ghost ghost mentioned this pull request Aug 19, 2024
15 tasks
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between a8ed507 and 7383871.

Files selected for processing (2)
  • apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1 hunks)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Additional context used
Learnings (1)
apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1)
Learnt from: ayushnvs
PR: OsmosysSoftware/osmo-x#262
File: apps/api/src/jobs/consumers/notifications/mailgun-notifications.job.consumer.ts:0-0
Timestamp: 2024-07-03T13:27:46.550Z
Learning: The `notificationSendResponse` variable in the `processMailgunNotificationConfirmationQueue` method of the `MailgunNotificationConsumer` class was changed from `let` to `const` to reflect that it is never reassigned.
Additional comments not posted (4)
apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (2)

12-24: Dependency Injection and Constructor Setup Look Good.

The constructor correctly injects the necessary dependencies using NestJS's dependency injection mechanism. The use of forwardRef for NotificationsService is appropriate to handle circular dependencies.


26-33: Check for Consistency with Other Notification Consumers.

Ensure that the processAwsSesNotificationQueue method is consistent with similar methods in other notification consumers, such as those for Mailgun or SMTP. This includes verifying the handling of the notification data and the invocation of the service method.

Verification successful

Consistency Verified Across Notification Consumers

The processAwsSesNotificationQueue method in the AWS SES consumer is consistent with similar methods in other notification consumers, such as those for Mailgun, SMTP, and Twilio. All consumers follow a similar pattern of retrieving the notification, extracting the necessary data, and invoking their respective service methods. No inconsistencies were found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify consistency of `processAwsSesNotificationQueue` with other notification consumers.

# Test: Search for similar methods in other notification consumer files.
rg --type ts 'processNotificationQueue' -A 5

Length of output: 9935

apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (2)

26-37: AWS SES Client Configuration Looks Good.

The assignAwsSesConfig method correctly initializes the SESClient with credentials and region. Ensure that the providersService.getConfigById method returns the expected configuration.


6-15: Consider Aligning Data Structure with Other Providers.

The AwsSesData interface defines the data structure for SES emails. Ensure that this structure aligns with the data structures used by other email providers, as per the feedback from LakshayaT.

Verification successful

No Alignment Needed Between AwsSesData and Other Provider Data Structures

The AwsSesData interface is designed specifically for email sending, with fields relevant to that purpose, such as cc, bcc, subject, text, and html. Other data structures like PushSnsData and SmsTwilioData are tailored for different services (push notifications and SMS) and have fields specific to those services. Aligning these interfaces is unnecessary due to their distinct purposes.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify alignment of `AwsSesData` with data structures of other providers.

# Test: Search for data structures in other provider service files.
rg --type ts 'interface .*Data' -A 5

Length of output: 7005

apps/api/src/modules/providers/aws-ses/aws-ses.service.ts Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 7383871 and a048ef4.

Files selected for processing (1)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts

@kshitij-k-osmosys kshitij-k-osmosys marked this pull request as draft August 23, 2024 07:50
@kshitij-k-osmosys kshitij-k-osmosys marked this pull request as ready for review August 29, 2024 10:07
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between a048ef4 and 3dc7730.

Files selected for processing (8)
  • apps/api/OsmoX.postman_collection.json (36 hunks)
  • apps/api/docs/channels/aws-ses.md (1 hunks)
  • apps/api/docs/usage-guide.md (1 hunks)
  • apps/api/src/common/constants/notifications.ts (2 hunks)
  • apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1 hunks)
  • apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts (1 hunks)
  • apps/api/src/modules/notifications/queues/queue.service.ts (3 hunks)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Files skipped from review due to trivial changes (1)
  • apps/api/docs/usage-guide.md
Additional context used
Learnings (2)
apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1)
Learnt from: ayushnvs
PR: OsmosysSoftware/osmo-x#262
File: apps/api/src/jobs/consumers/notifications/mailgun-notifications.job.consumer.ts:0-0
Timestamp: 2024-07-03T13:27:46.550Z
Learning: The `notificationSendResponse` variable in the `processMailgunNotificationConfirmationQueue` method of the `MailgunNotificationConsumer` class was changed from `let` to `const` to reflect that it is never reassigned.
apps/api/src/modules/notifications/queues/queue.service.ts (1)
Learnt from: LakshayaT
PR: OsmosysSoftware/osmo-x#262
File: apps/api/src/modules/notifications/queues/queue.service.ts:87-87
Timestamp: 2024-07-03T08:38:36.915Z
Learning: The `processNotificationQueue` method in the `NotificationConsumer` class includes error handling, which covers the `processMailgunNotificationQueue` method in the `MailgunNotificationConsumer` class.
Biome
apps/api/src/modules/providers/aws-ses/aws-ses.service.ts

[error] 94-94: Avoid the delete operator which can impact performance.

Unsafe fix: Use an undefined assignment instead.

(lint/performance/noDelete)

Additional comments not posted (25)
apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts (1)

1-6: LGTM!

The import statements are necessary and correctly included.

apps/api/src/common/constants/notifications.ts (2)

21-21: LGTM!

The addition of AWS_SES to ChannelType is correct and follows the existing pattern.


70-70: LGTM!

The addition of AWS_SES to SkipProviderConfirmationChannels is correct and follows the existing pattern.

apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1)

1-12: LGTM!

The import statements are necessary and correctly included.

apps/api/docs/channels/aws-ses.md (4)

1-5: LGTM!

The introductory section is clear and concise.


7-23: LGTM!

The "Values to Update in Database" section is clear and provides necessary details.


33-57: LGTM!

The "Sample Request Body" section is clear and includes support for attachments, addressing the concern raised in the comments.


60-71: LGTM!

The "Documentation links" and "Dependencies" sections are clear and provide necessary details.

apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (5)

1-23: LGTM!

The imports and AwsSesData interface declaration are appropriate and necessary for the implementation.


25-30: LGTM!

The constructor is correctly initializing the necessary services.


32-80: LGTM!

The sendAwsSes method is correctly implemented and includes necessary error handling.


83-100: LGTM!

The formatNotificationData method is correctly implemented and includes necessary handling for attachments.

Tools
Biome

[error] 94-94: Avoid the delete operator which can impact performance.

Unsafe fix: Use an undefined assignment instead.

(lint/performance/noDelete)


102-129: Avoid the delete operator for performance reasons.

The formatAttachments method is correctly implemented and includes necessary error handling. However, the delete operator should be avoided for performance reasons. Use undefined assignment instead.

- delete formattedNotificationData.attachments;
+ formattedNotificationData.attachments = undefined;

Likely invalid or redundant comment.

apps/api/src/modules/notifications/queues/queue.service.ts (3)

6-6: LGTM!

The import statement for AwsSesNotificationConsumer is necessary for integrating AWS SES notifications.


41-41: LGTM!

The addition of awsSesNotificationConsumer to the constructor is necessary for integrating AWS SES notifications.


175-178: LGTM!

The addition of the AWS SES case in the createWorker method is necessary for processing AWS SES notifications.

apps/api/OsmoX.postman_collection.json (9)

3-3: LGTM!

The change in _postman_id is approved.


1277-1277: LGTM!

The description change for SMTP Notifications is approved.


1338-1338: LGTM!

The description change for Plivo SMS Notifications is approved.


1519-1519: LGTM!

The description change for Twilio WhatsApp (Business) Notifications is approved.


1759-1759: LGTM!

The description change for KAPS SMS Notifications is approved.


1998-1999: LGTM!

The description change for SES Push Notification channel type for Android is approved.


2064-2065: LGTM!

The description change for SES Push Notification channel type for iOS is approved.


2137-2137: LGTM!

The description change for Twilio Voice Call Notifications is approved.


2366-2604: LGTM!

The new section for AWS SES Notification is approved.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 3dc7730 and f13e48c.

Files selected for processing (1)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Additional context used
Biome
apps/api/src/modules/providers/aws-ses/aws-ses.service.ts

[error] 96-96: Avoid the delete operator which can impact performance.

Unsafe fix: Use an undefined assignment instead.

(lint/performance/noDelete)

Additional comments not posted (3)
apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (3)

1-11: LGTM!

The import statements are correct and necessary for the functionality provided in the file.


13-23: LGTM!

The AwsSesData interface is well-defined and covers all necessary fields for sending an email via AWS SES.


25-30: LGTM!

The AwsSesService class structure is correct.

apps/api/src/modules/providers/aws-ses/aws-ses.service.ts Outdated Show resolved Hide resolved
apps/api/src/modules/providers/aws-ses/aws-ses.service.ts Outdated Show resolved Hide resolved
apps/api/src/modules/providers/aws-ses/aws-ses.service.ts Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between f13e48c and cb1f3c4.

Files selected for processing (6)
  • apps/api/OsmoX.postman_collection.json (2 hunks)
  • apps/api/src/common/constants/notifications.ts (2 hunks)
  • apps/api/src/common/decorators/is-data-valid.decorator.ts (2 hunks)
  • apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1 hunks)
  • apps/api/src/modules/notifications/notifications.module.ts (3 hunks)
  • apps/api/src/modules/notifications/queues/queue.service.ts (3 hunks)
Additional context used
Learnings (3)
apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1)
Learnt from: ayushnvs
PR: OsmosysSoftware/osmo-x#262
File: apps/api/src/jobs/consumers/notifications/mailgun-notifications.job.consumer.ts:0-0
Timestamp: 2024-07-03T13:27:46.550Z
Learning: The `notificationSendResponse` variable in the `processMailgunNotificationConfirmationQueue` method of the `MailgunNotificationConsumer` class was changed from `let` to `const` to reflect that it is never reassigned.
apps/api/src/common/decorators/is-data-valid.decorator.ts (1)
Learnt from: Harish-osmosys
PR: OsmosysSoftware/osmo-x#269
File: apps/api/src/common/decorators/is-data-valid.decorator.ts:99-104
Timestamp: 2024-07-05T08:06:37.627Z
Learning: In the `IsDataValidConstraint` class of the `is-data-valid.decorator.ts` file, wrapping variable declarations in a block within switch cases ensures correct scoping and prevents potential errors.
apps/api/src/modules/notifications/queues/queue.service.ts (1)
Learnt from: LakshayaT
PR: OsmosysSoftware/osmo-x#262
File: apps/api/src/modules/notifications/queues/queue.service.ts:87-87
Timestamp: 2024-07-03T08:38:36.915Z
Learning: The `processNotificationQueue` method in the `NotificationConsumer` class includes error handling, which covers the `processMailgunNotificationQueue` method in the `MailgunNotificationConsumer` class.
Additional comments not posted (11)
apps/api/src/common/constants/notifications.ts (2)

21-21: Approved: Addition of AWS_SES to ChannelType.

The addition of AWS_SES as a channel type with a value of 11 is correctly implemented and aligns with the PR's objectives to integrate AWS SES.


71-71: Approved: Inclusion of AWS_SES in SkipProviderConfirmationChannels.

The inclusion of AWS_SES in SkipProviderConfirmationChannels is consistent with the PR's integration of AWS SES. It's important to verify that this behavior aligns with AWS SES's capabilities and limitations.

apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts (1)

14-50: Approved: Implementation of AwsSesNotificationConsumer.

The class AwsSesNotificationConsumer is well-structured and correctly implements the necessary functionality to handle AWS SES notifications. The use of dependency injection and method overriding are in line with good software design practices.

apps/api/src/modules/notifications/notifications.module.ts (2)

58-58: Approved: Addition of AwsSesModule.

The inclusion of AwsSesModule in the list of provider modules is correctly implemented and necessary for enabling AWS SES functionality within the notifications module.


77-77: Approved: Addition of AwsSesNotificationConsumer.

The inclusion of AwsSesNotificationConsumer in the list of consumers is correctly implemented and aligns with the PR's objectives to handle notifications via AWS SES.

apps/api/src/common/decorators/is-data-valid.decorator.ts (2)

25-25: Approved import statement for AwsSesDataDto.

The import path is consistent with other DTO imports and correctly references the new DTO needed for AWS SES validation.


132-137: Approved new case handling for AWS_SES.

The implementation for AWS SES follows the established pattern and correctly uses the AwsSesDataDto for validation. However, considering the user feedback about consistency in request body formats across different providers, it's advisable to ensure that the AwsSesDataDto aligns with the formats used by other email providers like Mailgun and SMTP.

Verification successful

Consistency Verified for AWS SES, Mailgun, and SMTP DTOs

The AwsSesDataDto, MailgunDataDto, and SMTPDataDto classes have consistent structures and validation rules, ensuring uniform request body formats across these providers. This consistency aligns with the established patterns and user feedback. No further action is required.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the consistency of request body formats across different providers.

# Test: Compare the DTOs for AWS SES, Mailgun, and SMTP.
ast-grep --lang typescript --pattern $'class $_ {
  $$$
}'

Length of output: 214361


Script:

#!/bin/bash
# Extract the definitions of AwsSesDataDto, MailgunDataDto, and SMTPDataDto for comparison.

# Search for AwsSesDataDto definition
ast-grep --lang typescript --pattern 'class AwsSesDataDto { $$$ }'

# Search for MailgunDataDto definition
ast-grep --lang typescript --pattern 'class MailgunDataDto { $$$ }'

# Search for SMTPDataDto definition
ast-grep --lang typescript --pattern 'class SMTPDataDto { $$$ }'

Length of output: 9246

apps/api/src/modules/notifications/queues/queue.service.ts (3)

6-6: Approved import statement for AwsSesNotificationConsumer.

The import path is consistent with other notification consumer imports and correctly references the new consumer needed for AWS SES notification handling.


42-42: Approved new member declaration for AwsSesNotificationConsumer.

The declaration of awsSesNotificationConsumer as a private and readonly member is consistent with best practices for encapsulation and follows the established pattern in the class.


177-180: Approved new case for handling AWS SES notifications.

The case for AWS SES notifications is correctly implemented and follows the pattern used for other notification types. Ensure that the processAwsSesNotificationQueue method on AwsSesNotificationConsumer is implemented correctly and handles all expected scenarios.

Verification successful

Verified implementation of processAwsSesNotificationQueue.

The method processAwsSesNotificationQueue is correctly implemented in the AwsSesNotificationConsumer class. It processes AWS SES notifications as expected, confirming the validity of the switch case addition in queue.service.ts.

  • Location of implementation: apps/api/src/jobs/consumers/notifications/awsSes-notifications.job.consumer.ts
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation of `processAwsSesNotificationQueue`.

# Test: Search for the method implementation in the consumer class.
ast-grep --lang typescript --pattern $'class AwsSesNotificationConsumer {
  $$$
  processAwsSesNotificationQueue($_) {
    $$$
  }
  $$$  
}'

Length of output: 142


Script:

#!/bin/bash
# Use ripgrep to search for the method `processAwsSesNotificationQueue` across the codebase.
rg 'processAwsSesNotificationQueue' --type=typescript -A 3

Length of output: 93


Script:

#!/bin/bash
# Use ripgrep to search for the method `processAwsSesNotificationQueue` across the codebase with the correct file type.
rg 'processAwsSesNotificationQueue' --type=ts -A 3

Length of output: 1105

apps/api/OsmoX.postman_collection.json (1)

2605-2844: Review of Newly Added SNS SMS Notifications

The addition of SNS SMS notifications is well-structured and includes comprehensive test cases for various scenarios such as success, missing fields, mismatch in channel type, and invalid API key. Each test case is designed to validate the response format, status codes, and specific properties within the JSON response, which aligns with the best practices for API testing.

  • Success Case: Tests are thorough, checking for valid JSON, correct status, data properties, and the presence of a notification object with the expected channel type and delivery status.
  • Error Handling: The tests for missing fields and invalid inputs are well-crafted, ensuring that the API responds appropriately under error conditions.

Overall, the implementation enhances the robustness of the API by ensuring that it correctly handles both successful and erroneous requests related to SMS notifications.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between cb1f3c4 and b7ea5d3.

Files selected for processing (4)
  • apps/api/docs/channels/aws-ses.md (1 hunks)
  • apps/api/src/modules/notifications/dtos/providers/awsSes-data.dto.ts (1 hunks)
  • apps/api/src/modules/notifications/queues/queue.service.ts (4 hunks)
  • apps/api/src/modules/providers/aws-ses/aws-ses.service.ts (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • apps/api/src/modules/notifications/queues/queue.service.ts

@xixas xixas merged commit c8d59a2 into main Sep 27, 2024
6 checks passed
@xixas xixas deleted the feat/add-aws-ses-provider branch September 27, 2024 14:21
@coderabbitai coderabbitai bot mentioned this pull request Nov 6, 2024
13 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants