Skip to content

Conversation

@luancazarine
Copy link
Collaborator

@luancazarine luancazarine commented Dec 12, 2025

Resolves #10769

Summary by CodeRabbit

  • New Features
    • Glide integration: Add Rows, Get Rows, Update Row, Delete Row, List Tables actions.
    • Dynamic table and row selectors for interactive choices.
    • API-backed request layer for reliable table operations.
    • Automatic human-readable summaries and row counts for actions.
  • Chores
    • Component version bumped to 0.1.0 and dependency updates.
  • Utilities
    • Robust input parsing for row payloads.

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

- Added new actions: Add Rows, Delete Row, Get Rows, List Tables, and Update Row.
- Enhanced glide.app.mjs with new prop definitions for table and row IDs.
- Updated package version to 0.1.0 and added dependencies.
- Introduced utility function for parsing objects.
@luancazarine luancazarine linked an issue Dec 12, 2025 that may be closed by this pull request
@vercel
Copy link

vercel bot commented Dec 12, 2025

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

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
pipedream-docs-redirect-do-not-edit Ignored Ignored Dec 12, 2025 8:31pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 12, 2025

Walkthrough

Adds a complete Glide integration: a Glide app module with HTTP request methods and dynamic prop definitions, five CRUD action modules (add-rows, delete-row, get-rows, list-tables, update-row), a resilient parseObject utility, and a package.json version/dependency update.

Changes

Cohort / File(s) Summary
Glide action modules
components/glide/actions/add-rows/add-rows.mjs, components/glide/actions/delete-row/delete-row.mjs, components/glide/actions/get-rows/get-rows.mjs, components/glide/actions/list-tables/list-tables.mjs, components/glide/actions/update-row/update-row.mjs
Five new action definitions. Each exports metadata, props (including dynamic tableId/rowId where applicable), and an async run that calls the corresponding glide app method (addRows, deleteRow, getRows, listTables, updateRow), sets a $summary, and returns the API response.
Glide app module
components/glide/glide.app.mjs
Adds HTTP layer (getBaseUrl, getHeaders, makeRequest) and API wrapper methods (listTables, getRows, addRows, updateRow, deleteRow). Adds propDefinitions with async options() for tableId (calls listTables) and rowId (calls getRows).
Utility function
components/glide/common/utils.mjs
Adds export const parseObject(obj) — tolerant JSON parsing for strings and arrays, returns original value on parse errors, returns undefined for falsy input.
Package configuration
components/glide/package.json
Bumps version from 0.0.1 to 0.1.0 and adds dependency "@pipedream/platform": "^3.1.1".

Sequence Diagram(s)

sequenceDiagram
  participant Action as Action (add/get/update/delete/list)
  participant App as Glide App (makeRequest)
  participant API as Glide API
  rect rgba(76,175,80,0.08)
    Action->>App: call method (e.g., addRows(tableId, data))
    activate App
    App->>App: build URL, headers
    App->>API: HTTP request (method/path, body, headers)
    activate API
    API-->>App: HTTP response (status, data)
    deactivate API
    App-->>Action: return response
    deactivate App
    Action->>Action: export $summary, return response
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Pay attention to:
    • components/glide/glide.app.mjs: request construction, auth header handling, error propagation, and async propDefinitions.options() behavior.
    • components/glide/common/utils.mjs: edge cases in parseObject (arrays with mixed element types, non-JSON strings).
    • Action modules: validation (e.g., add-rows ensuring parsed rows is an array), consistent summary messages, and correct usage of this.glide.* calls.
    • components/glide/package.json: version and dependency correctness.

Suggested reviewers

  • lcaresia
  • psavkar

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Description check ⚠️ Warning The description is minimal and only references the issue number without explaining the changes, missing required content from the template's 'WHY' section. Complete the description following the template: add a 'WHY' section explaining the purpose of these changes and why the Glide components are needed.
Linked Issues check ⚠️ Warning The PR implements Glide table operations (add, delete, get, update rows and list tables) but lacks the required polling source 'watch-new-action-instant' specified in issue #10769. Implement the 'watch-new-action-instant' polling source that emits events when actions are triggered via the Glide app, as required by issue #10769.
Title check ❓ Inconclusive The title '10769 components glide' is vague and uninformative, using issue number reference and generic terms without conveying the actual changes being made. Provide a descriptive title summarizing the main change, such as 'Add Glide API integration with table operations and actions' or 'Implement Glide components for table management operations'.
✅ Passed checks (2 passed)
Check name Status Explanation
Out of Scope Changes check ✅ Passed All changes align with Glide component implementation; however, the polling source requirement from the linked issue is incompletely addressed in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ 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 10769-components-glide

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 43d05d0 and c33ed2e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (8)
  • components/glide/actions/add-rows/add-rows.mjs (1 hunks)
  • components/glide/actions/delete-row/delete-row.mjs (1 hunks)
  • components/glide/actions/get-rows/get-rows.mjs (1 hunks)
  • components/glide/actions/list-tables/list-tables.mjs (1 hunks)
  • components/glide/actions/update-row/update-row.mjs (1 hunks)
  • components/glide/common/utils.mjs (1 hunks)
  • components/glide/glide.app.mjs (1 hunks)
  • components/glide/package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 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/glide/package.json
📚 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/glide/glide.app.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/glide/glide.app.mjs
🧬 Code graph analysis (3)
components/glide/actions/delete-row/delete-row.mjs (4)
components/glide/actions/add-rows/add-rows.mjs (1)
  • response (31-35)
components/glide/actions/get-rows/get-rows.mjs (1)
  • response (45-49)
components/glide/actions/list-tables/list-tables.mjs (1)
  • response (23-25)
components/glide/actions/update-row/update-row.mjs (1)
  • response (39-44)
components/glide/actions/get-rows/get-rows.mjs (4)
components/glide/actions/add-rows/add-rows.mjs (2)
  • response (31-35)
  • plural (38-40)
components/glide/actions/delete-row/delete-row.mjs (1)
  • response (33-37)
components/glide/actions/list-tables/list-tables.mjs (2)
  • response (23-25)
  • plural (28-30)
components/glide/actions/update-row/update-row.mjs (1)
  • response (39-44)
components/glide/actions/update-row/update-row.mjs (1)
components/glide/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
⏰ 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: Lint Code Base
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
🔇 Additional comments (10)
components/glide/actions/list-tables/list-tables.mjs (1)

3-34: LGTM!

The action is well-structured with appropriate annotations for a read-only operation. The warning alert about Big Tables is helpful context for users, and the pluralization logic provides a clear summary message.

components/glide/package.json (1)

3-17: LGTM!

Version bump to 0.1.0 is appropriate for this initial feature release, and the @pipedream/platform dependency is correctly specified.

components/glide/actions/delete-row/delete-row.mjs (1)

32-41: LGTM!

The delete implementation correctly calls the Glide API and provides a clear success summary.

components/glide/actions/get-rows/get-rows.mjs (1)

51-56: LGTM!

The response handling with null-safe access and pluralization logic is well implemented.

components/glide/actions/update-row/update-row.mjs (2)

8-12: Verify destructiveHint annotation for update operations.

The destructiveHint is set to false for this update operation. While less clear-cut than delete operations, updates do modify existing data and could be considered destructive. Please verify whether this annotation should be true to align with your team's conventions for data-modifying operations.


38-48: LGTM!

The update implementation correctly uses parseObject to handle the row data and provides a clear success summary.

components/glide/actions/add-rows/add-rows.mjs (1)

8-12: Verify destructiveHint annotation for add operations.

The destructiveHint is set to false for this add operation. While adding data doesn't delete existing records, it does modify the table state. Please verify whether this annotation should be true to align with your team's conventions for data-modifying operations and maintain consistency with other actions.

components/glide/glide.app.mjs (3)

34-51: LGTM!

The HTTP request infrastructure correctly uses the Pipedream axios wrapper with appropriate headers and base URL configuration. The makeRequest method properly spreads additional arguments, allowing callers to pass method, data, and params as needed.


6-32: LGTM!

The dynamic prop definitions correctly implement the Pipedream pattern for dependent dropdowns. The tableId prop fetches available tables, and the rowId prop dynamically loads rows based on the selected table.


52-92: LGTM!

All API methods are correctly implemented with appropriate HTTP methods and path construction. The parameter destructuring and spreading pattern allows flexible usage from action modules.

- Added validation to ensure rows data is an array in the Add Rows action.
- Updated Delete Row action to indicate it is destructive.
- Refactored parameter handling in Get Rows action for improved readability and maintainability.
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: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c33ed2e and d212e86.

📒 Files selected for processing (3)
  • components/glide/actions/add-rows/add-rows.mjs (1 hunks)
  • components/glide/actions/delete-row/delete-row.mjs (1 hunks)
  • components/glide/actions/get-rows/get-rows.mjs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
components/glide/actions/get-rows/get-rows.mjs (4)
components/glide/actions/add-rows/add-rows.mjs (2)
  • response (35-39)
  • plural (42-44)
components/glide/actions/delete-row/delete-row.mjs (1)
  • response (33-37)
components/glide/actions/update-row/update-row.mjs (1)
  • response (39-44)
components/glide/actions/list-tables/list-tables.mjs (2)
  • response (23-25)
  • plural (28-30)
components/glide/actions/add-rows/add-rows.mjs (3)
components/glide/common/utils.mjs (2)
  • parseObject (1-24)
  • parseObject (1-24)
components/glide/actions/get-rows/get-rows.mjs (2)
  • response (37-50)
  • plural (53-55)
components/glide/actions/list-tables/list-tables.mjs (2)
  • response (23-25)
  • plural (28-30)
components/glide/actions/delete-row/delete-row.mjs (4)
components/glide/actions/add-rows/add-rows.mjs (1)
  • response (35-39)
components/glide/actions/get-rows/get-rows.mjs (1)
  • response (37-50)
components/glide/actions/update-row/update-row.mjs (1)
  • response (39-44)
components/glide/actions/list-tables/list-tables.mjs (1)
  • response (23-25)
⏰ 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: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (4)
components/glide/actions/get-rows/get-rows.mjs (2)

1-35: LGTM! Clean metadata and props structure.

The action metadata, annotations, and props are well-structured. The read-only and non-destructive annotations are appropriate for a GET operation, and the pagination support via continuation token is a nice addition.


36-59: Past review feedback properly addressed.

The conditional params construction using object spread has been implemented correctly, addressing the previous review comment. The optional chaining on response.data?.length provides safe access with an appropriate fallback.

components/glide/actions/delete-row/delete-row.mjs (1)

1-42: LGTM! Past review feedback properly addressed.

The destructiveHint annotation is now correctly set to true, appropriately warning users about the destructive nature of this delete operation. The implementation is clean, with proper prop dependencies for dynamic rowId options based on the selected table.

components/glide/actions/add-rows/add-rows.mjs (1)

1-29: LGTM! Clean imports and metadata.

The imports include the necessary ConfigurationError for validation and the parseObject utility for input processing. The props structure is clear with appropriate type hints.

Copy link
Collaborator

@michelle0927 michelle0927 left a comment

Choose a reason for hiding this comment

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

LGTM!

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.

[Components] glide

3 participants