Skip to content

Conversation

@GTFalcao
Copy link
Collaborator

@GTFalcao GTFalcao commented Nov 26, 2025

Summary by CodeRabbit

  • New Features

    • Full DealCloud integration: Create, Get, Update, Delete record actions.
    • Dynamic field discovery per entry type with mapped prop types and currency options.
    • Reusable create/update helper that builds request payloads and supports duplicate-detection flags.
    • App-level REST helpers for listing types, querying, creating, updating, and deleting entries.
  • Chores

    • Component package version bumped to 0.1.0.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Nov 26, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Nov 26, 2025 2:38am
pipedream-docs-redirect-do-not-edit Ignored Ignored Nov 26, 2025 2:38am

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 26, 2025

Walkthrough

Adds a DealCloud integration: CRUD action modules, a shared create/update helper, field-to-prop utilities and currency constants, an HTTP-backed app API layer using axios, and package metadata changes (version bump and dependency).

Changes

Cohort / File(s) Summary
CRUD Actions
components/dealcloud/actions/create-record/create-record.mjs, components/dealcloud/actions/update-record/update-record.mjs, components/dealcloud/actions/delete-records/delete-records.mjs, components/dealcloud/actions/get-records/get-records.mjs
New action modules implementing Create, Update, Delete, and Get record operations. Each exports action metadata and an async run that validates inputs, builds request payloads (create/update share a base), calls app API helpers, exports a $summary, and returns the API response.
Common Create/Update Base
components/dealcloud/actions/common/common-create-update.mjs
New reusable base object exporting getRequestData(props), isUpdate(), getEntryId(), async additionalProps(), convertFieldsToProps (re-exported), and props (dealcloud, entryTypeId, ignoreNearDups). Builds storeRequests from field props.
Utilities & Constants
components/dealcloud/common/utils.mjs, components/dealcloud/common/constants.mjs
New checkIdArray(value) and convertFieldsToProps(fields) utilities for ID normalization and mapping DealCloud field definitions to dynamic props. New CURRENCY_OPTIONS array of ISO currency codes.
App HTTP/API Layer
components/dealcloud/dealcloud.app.mjs
App module updated: imports axios, adds propDefinitions (entryTypeId, entryId, ignoreNearDups), introduces _makeRequest wrapper using this.$auth for base URL and bearer token, and adds public helper methods: listEntryTypes, getEntryTypeFields, getAllEntryTypeEntries, queryEntries, createEntry, updateEntry, deleteEntry.
Package Metadata
components/dealcloud/package.json
Package version bumped to 0.1.0 and dependency "@pipedream/platform": "^3.1.1" added.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant User
    participant Action as Action (create/update/get/delete)
    participant Base as common-create-update
    participant App as dealcloud.app
    participant API as DealCloud API

    User->>Action: invoke action with props
    alt create/update uses field metadata
        Action->>Base: additionalProps()
        Base->>App: getEntryTypeFields(entryTypeId)
        App->>API: GET /entry-type/{id}/fields
        API-->>App: fields
        App-->>Base: fields
        Base->>Base: convertFieldsToProps(fields)
        Base-->>Action: augmented props
    end
    Action->>Base: getRequestData(props)
    Base-->>Action: storeRequests payload
    Action->>App: createEntry/updateEntry/queryEntries/deleteEntry(...)
    App->>API: REST request (POST/PUT/GET/DELETE)
    API-->>App: response
    App-->>Action: response
    Action->>User: return response and export $summary
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Areas needing extra attention:
    • components/dealcloud/common/utils.mjs — FIELD_TYPES mapping, mapFieldTypeToPropType, optional/array handling and CURRENCY_OPTIONS usage.
    • components/dealcloud/actions/common/common-create-update.mjs — getRequestData payload shape, fieldId extraction from prop keys, and additionalProps async behavior.
    • components/dealcloud/dealcloud.app.mjs — _makeRequest header/auth construction, endpoint paths, and helper request/response handling.
    • ID validation/normalization in get-records and delete-records using checkIdArray.
    • package.json dependency addition and version bump consistency.

Suggested reviewers

  • luancazarine
  • lcaresia
  • jcortes

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is entirely empty, missing all required context about why these changes were made, what functionality was added, and how the components work together. Add a description explaining the purpose of the DealCloud components, the actions/functionality provided, and any important implementation details or dependencies.
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The title 'Dealcloud components initial merge' is generic and provides minimal context about the specific changes; it functions as a branch name rather than describing what was actually implemented. Revise the title to be more specific about the main deliverable, such as 'Add DealCloud integration with create, read, update, and delete actions' or similar.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dealcloud-components-initial-merge

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@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: 8

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1c6ab28 and 8f405bb.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (9)
  • components/dealcloud/actions/common/common-create-update.mjs (1 hunks)
  • components/dealcloud/actions/create-record/create-record.mjs (1 hunks)
  • components/dealcloud/actions/delete-records/delete-records.mjs (1 hunks)
  • components/dealcloud/actions/get-records/get-records.mjs (1 hunks)
  • components/dealcloud/actions/update-record/update-record.mjs (1 hunks)
  • components/dealcloud/common/constants.mjs (1 hunks)
  • components/dealcloud/common/utils.mjs (1 hunks)
  • components/dealcloud/dealcloud.app.mjs (1 hunks)
  • components/dealcloud/package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.

Applied to files:

  • components/dealcloud/package.json
📚 Learning: 2024-10-30T15:24:39.294Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".

Applied to files:

  • components/dealcloud/actions/create-record/create-record.mjs
📚 Learning: 2025-06-04T17:52:05.780Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.

Applied to files:

  • components/dealcloud/dealcloud.app.mjs
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.

Applied to files:

  • components/dealcloud/dealcloud.app.mjs
🧬 Code graph analysis (6)
components/dealcloud/actions/update-record/update-record.mjs (3)
components/dealcloud/actions/common/common-create-update.mjs (1)
  • props (47-47)
components/dealcloud/actions/create-record/create-record.mjs (2)
  • props (17-26)
  • response (29-33)
components/dealcloud/actions/delete-records/delete-records.mjs (1)
  • response (38-42)
components/dealcloud/common/utils.mjs (2)
components/dealcloud/dealcloud.app.mjs (1)
  • value (30-30)
components/dealcloud/common/constants.mjs (2)
  • CURRENCY_OPTIONS (1-154)
  • CURRENCY_OPTIONS (1-154)
components/dealcloud/actions/common/common-create-update.mjs (3)
components/dealcloud/actions/create-record/create-record.mjs (1)
  • props (17-26)
components/dealcloud/actions/update-record/update-record.mjs (1)
  • props (46-56)
components/dealcloud/dealcloud.app.mjs (1)
  • value (30-30)
components/dealcloud/actions/get-records/get-records.mjs (2)
components/dealcloud/actions/delete-records/delete-records.mjs (3)
  • entryIds (37-37)
  • response (38-42)
  • count (44-44)
components/dealcloud/common/utils.mjs (1)
  • checkIdArray (4-12)
components/dealcloud/dealcloud.app.mjs (1)
components/gmail/gmail.app.mjs (1)
  • axios (415-423)
components/dealcloud/actions/delete-records/delete-records.mjs (4)
components/dealcloud/actions/get-records/get-records.mjs (3)
  • entryIds (37-37)
  • response (38-46)
  • count (48-48)
components/dealcloud/common/utils.mjs (1)
  • checkIdArray (4-12)
components/dealcloud/actions/create-record/create-record.mjs (1)
  • response (29-33)
components/dealcloud/actions/update-record/update-record.mjs (1)
  • response (59-63)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: pnpm publish
🔇 Additional comments (15)
components/dealcloud/package.json (1)

3-17: LGTM!

Version bump to 0.1.0 is appropriate for introducing new functionality. The @pipedream/platform dependency is correctly declared and supports the axios-based API layer used throughout the new actions.

components/dealcloud/common/constants.mjs (1)

1-154: LGTM - comprehensive currency list.

The list includes some currencies that have been replaced by the Euro (EEK, LTL, LVL, NLG). If this mirrors DealCloud's supported currencies, that's fine. Otherwise, consider removing obsolete codes.

components/dealcloud/dealcloud.app.mjs (2)

6-46: Well-structured prop definitions.

Good fallback chain in entryId options (EntryId || Id || id and Name || value) to handle different response shapes gracefully.


75-117: LGTM - API methods are well implemented.

The CRUD methods follow a consistent pattern, properly pass through additional args, and use correct HTTP methods.

components/dealcloud/actions/update-record/update-record.mjs (2)

1-43: Clean implementation extending the common base.

The component correctly inherits from commonCreateUpdate, overrides isUpdate() to return true, and properly sets up the entryId prop with dependency on entryTypeId.


59-63: The review comment is incorrect. ignoreNearDups is properly used.

The ignoreNearDups prop flows to the API through the getRequestData() method (defined in the common-create-update base module). This method constructs the storeRequests array, and each request includes ignoreNearDups as part of the payload sent via the data parameter. The prop is not unused; it's accessed through this.ignoreNearDups inside getRequestData(), which is why it's safe to destructure it and mark it with eslint-disable no-unused-vars.

components/dealcloud/actions/delete-records/delete-records.mjs (1)

1-14: LGTM - appropriate metadata for a destructive action.

The destructiveHint: true annotation correctly signals that this action deletes data.

components/dealcloud/actions/get-records/get-records.mjs (2)

36-46: Potential type inconsistency with ID array.

checkIdArray returns strings when splitting a comma-separated input (line 6 in utils.mjs), but the prop is typed as integer[]. This could cause issues if the DealCloud API expects numeric IDs in the query.

Consider coercing to integers:

-    const entryIds = checkIdArray(this.entryIds);
+    const entryIds = checkIdArray(this.entryIds).map(Number);

1-14: LGTM!

The action metadata, imports, and annotations are well-structured and follow Pipedream conventions.

components/dealcloud/common/utils.mjs (2)

36-49: Boolean array type not handled.

If fieldTypeId is BOOLEAN and isArray is true, this returns "boolean" rather than "boolean[]". Verify if this is intentional (DealCloud doesn't support boolean arrays) or if it needs handling.


14-28: LGTM!

The FIELD_TYPES enum is well-defined and covers the necessary DealCloud field types.

components/dealcloud/actions/create-record/create-record.mjs (2)

15-27: Consider extracting common destructuring pattern.

The destructuring with eslint-disable comments is repeated in both create and update actions. This works but is somewhat verbose.


29-38: LGTM!

The API call and response handling are well-structured. The TODO comment about enhancing the summary with the record ID is appropriate.

components/dealcloud/actions/common/common-create-update.mjs (2)

46-55: LGTM!

The additionalProps method correctly handles the case when entryTypeId is not set and properly chains the field fetching with prop conversion.


5-12: LGTM!

The base methods isUpdate() and getEntryId() provide sensible defaults that can be overridden by extending actions.

Copy link
Contributor

@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: 4

♻️ Duplicate comments (1)
components/dealcloud/actions/get-records/get-records.mjs (1)

48-51: Use the actual response length for the summary (not requested IDs)

Right now the summary uses entryIds.length, which counts requested IDs, not the number of records actually returned. If some IDs are missing, the summary will be misleading.

You can base the count on the response array instead:

-    const count = entryIds.length;
-    $.export("$summary", `Successfully retrieved ${count} record${count === 1
+    const count = response?.length ?? 0;
+    $.export("$summary", `Successfully retrieved ${count} record${count === 1
       ? ""
       : "s"}`);

This keeps the summary format consistent with prior guidance while accurately reflecting retrieved records. Based on learnings, …

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8f405bb and fbbf4d3.

📒 Files selected for processing (4)
  • components/dealcloud/actions/create-record/create-record.mjs (1 hunks)
  • components/dealcloud/actions/delete-records/delete-records.mjs (1 hunks)
  • components/dealcloud/actions/get-records/get-records.mjs (1 hunks)
  • components/dealcloud/actions/update-record/update-record.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2024-10-08T15:33:38.240Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.

Applied to files:

  • components/dealcloud/actions/get-records/get-records.mjs
  • components/dealcloud/actions/delete-records/delete-records.mjs
📚 Learning: 2024-10-30T15:24:39.294Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".

Applied to files:

  • components/dealcloud/actions/create-record/create-record.mjs
🧬 Code graph analysis (2)
components/dealcloud/actions/delete-records/delete-records.mjs (4)
components/dealcloud/actions/get-records/get-records.mjs (3)
  • entryIds (37-37)
  • response (38-46)
  • count (48-48)
components/dealcloud/common/utils.mjs (1)
  • checkIdArray (4-12)
components/dealcloud/actions/create-record/create-record.mjs (1)
  • response (29-33)
components/dealcloud/actions/update-record/update-record.mjs (1)
  • response (59-63)
components/dealcloud/actions/create-record/create-record.mjs (4)
components/dealcloud/actions/update-record/update-record.mjs (3)
  • commonCreateUpdate (3-7)
  • props (46-56)
  • response (59-63)
components/dealcloud/actions/common/common-create-update.mjs (1)
  • props (47-47)
components/dealcloud/actions/delete-records/delete-records.mjs (1)
  • response (38-42)
components/dealcloud/actions/get-records/get-records.mjs (1)
  • response (38-46)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: pnpm publish
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (4)
components/dealcloud/actions/delete-records/delete-records.mjs (3)

8-8: Verify the version string change.

The version is set to "0.0.1", but based on past review comments, it was previously "0.0.{{ts}}". The template format with {{ts}} is a Pipedream convention that auto-replaces with a timestamp for versioning. Changing to a fixed version may break the automated versioning workflow.

Confirm whether the fixed version "0.0.1" is intentional for this initial merge, or if it should be reverted to the template format.


15-35: Props definition looks good.

The props are well-structured with appropriate use of propDefinition and the integer[] type override for multiple record selection. The dynamic parameter passing for entryTypeId dependency is correctly implemented.


44-47: Summary message format is correct.

The summary message follows the correct formatting pattern with proper pluralization, consistent with the learnings from previous reviews.

Based on learnings, the format Successfully deleted ${count} record${count === 1 ? "" : "s"} is appropriate.

components/dealcloud/actions/update-record/update-record.mjs (1)

9-20: Overall update action structure and commonCreateUpdate integration look sound

The override of key/name/description, the entryId propDefinition keyed off entryTypeId, and the isUpdate() / getEntryId() methods all align with the shared commonCreateUpdate pattern and should let getRequestData construct an appropriate update payload.

No other functional issues spotted here.

Also applies to: 24-43, 59-67

Copy link
Contributor

@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

♻️ Duplicate comments (2)
components/dealcloud/dealcloud.app.mjs (1)

61-66: Inconsistent URL path handling - leading slashes cause incorrect endpoints.

URLs on lines 63, 71, 79, and 87 start with / which will cause axios to resolve against the origin, ignoring the baseURL path. Lines 96, 105, and 114 correctly omit the leading slash.

Remove leading slashes from all URL paths for consistency:

   async listEntryTypes(args = {}) {
     return this._makeRequest({
-      url: "/schema/entrytypes",
+      url: "schema/entrytypes",
       ...args,
     });
   },
components/dealcloud/common/utils.mjs (1)

73-83: Document this binding requirement for convertFieldsToProps.

This function uses this.isUpdate() (line 80), which requires it to be called as a method on an object that defines isUpdate(). While this works correctly when re-exported in common-create-update.mjs, the implicit dependency isn't obvious.

Consider adding a JSDoc note:

 /**
  * Converts DealCloud fields to Pipedream prop format
+ * @this {Object} Must be called with an object context that provides isUpdate() method
  * @param {DealCloudField[]} fields - Array of DealCloud field objects
  * @returns Object to be returned in dynamic props
  */
 export function convertFieldsToProps(fields) {
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fbbf4d3 and 6f7c73f.

📒 Files selected for processing (5)
  • components/dealcloud/actions/common/common-create-update.mjs (1 hunks)
  • components/dealcloud/actions/delete-records/delete-records.mjs (1 hunks)
  • components/dealcloud/actions/get-records/get-records.mjs (1 hunks)
  • components/dealcloud/common/utils.mjs (1 hunks)
  • components/dealcloud/dealcloud.app.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2024-10-08T15:33:38.240Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.

Applied to files:

  • components/dealcloud/actions/get-records/get-records.mjs
  • components/dealcloud/actions/delete-records/delete-records.mjs
📚 Learning: 2025-06-04T17:52:05.780Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.

Applied to files:

  • components/dealcloud/dealcloud.app.mjs
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.

Applied to files:

  • components/dealcloud/dealcloud.app.mjs
🧬 Code graph analysis (5)
components/dealcloud/actions/get-records/get-records.mjs (5)
components/dealcloud/actions/delete-records/delete-records.mjs (2)
  • entryIds (37-37)
  • response (38-42)
components/dealcloud/common/utils.mjs (1)
  • checkIdArray (4-13)
components/dealcloud/dealcloud.app.mjs (1)
  • response (86-89)
components/dealcloud/actions/update-record/update-record.mjs (1)
  • response (59-63)
components/dealcloud/actions/create-record/create-record.mjs (1)
  • response (29-33)
components/dealcloud/dealcloud.app.mjs (5)
components/gmail/gmail.app.mjs (1)
  • axios (415-423)
components/dealcloud/actions/delete-records/delete-records.mjs (1)
  • response (38-42)
components/dealcloud/actions/get-records/get-records.mjs (1)
  • response (38-46)
components/dealcloud/actions/update-record/update-record.mjs (1)
  • response (59-63)
components/dealcloud/actions/create-record/create-record.mjs (1)
  • response (29-33)
components/dealcloud/common/utils.mjs (2)
components/dealcloud/actions/common/common-create-update.mjs (1)
  • fields (51-53)
components/dealcloud/common/constants.mjs (2)
  • CURRENCY_OPTIONS (1-154)
  • CURRENCY_OPTIONS (1-154)
components/dealcloud/actions/common/common-create-update.mjs (2)
components/dealcloud/actions/update-record/update-record.mjs (1)
  • props (46-56)
components/dealcloud/actions/create-record/create-record.mjs (1)
  • props (17-26)
components/dealcloud/actions/delete-records/delete-records.mjs (5)
components/dealcloud/actions/get-records/get-records.mjs (3)
  • entryIds (37-37)
  • response (38-46)
  • count (48-48)
components/dealcloud/common/utils.mjs (1)
  • checkIdArray (4-13)
components/dealcloud/dealcloud.app.mjs (1)
  • response (86-89)
components/dealcloud/actions/update-record/update-record.mjs (1)
  • response (59-63)
components/dealcloud/actions/create-record/create-record.mjs (1)
  • response (29-33)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Publish TypeScript components
  • GitHub Check: pnpm publish
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (6)
components/dealcloud/dealcloud.app.mjs (1)

48-60: LGTM - Clean HTTP wrapper implementation.

The _makeRequest method properly configures axios with baseURL, authorization header, and allows flexible argument spreading.

components/dealcloud/actions/get-records/get-records.mjs (2)

48-52: LGTM - Summary uses actual response length.

The summary correctly reflects the number of records actually returned by the API rather than the number of IDs requested.


37-46: Add .map(Number) for consistency with delete-records action.

The delete-records action applies .map(Number) to coerce IDs, but this action doesn't. This inconsistency could cause issues if checkIdArray returns strings from a comma-separated input.

Additionally, consider short-circuiting when entryIds is empty to avoid an unnecessary API call.

   async run({ $ }) {
-    const entryIds = checkIdArray(this.entryIds);
+    const entryIds = checkIdArray(this.entryIds).map(Number);
+    if (!entryIds.length) {
+      $.export("$summary", "No records to retrieve");
+      return [];
+    }
     const response = await this.dealcloud.queryEntries({

Likely an incorrect or invalid review comment.

components/dealcloud/common/utils.mjs (2)

4-13: LGTM - Properly handles string input with trim and filter.

The function now correctly trims whitespace and filters empty values when processing comma-separated strings.


89-92: LGTM - Commented code replaced with TODO.

The large commented block has been appropriately replaced with a brief TODO comment.

components/dealcloud/actions/common/common-create-update.mjs (1)

46-55: LGTM - Dynamic props generation is well-structured.

The additionalProps method correctly guards against missing entryTypeId and fetches fields dynamically to generate props. The reloadProps: true on entryTypeId ensures props refresh when the entry type changes.

@GTFalcao GTFalcao merged commit b7f1a7c into master Nov 26, 2025
10 checks passed
@GTFalcao GTFalcao deleted the dealcloud-components-initial-merge branch November 26, 2025 03:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants