* Add `getStructure` implementation for S3 to return a list of accessible buckets.
* Add command templates for S3.
- List files
- Read file
- Create file
- Delete file
* Remove getDatasourceMetadata implementation as getStructure method can be directly used now.
* Error handling for git limit
* clear cahe of git limit on connect api
* update per review
* check the repo is public before checking for the limit
* changes per review
* check if the repo is public or private during connect flow
- fix Mongo plugin's smart substitution feature to handle quotes around ObjectId in array. e.g. Initial replacement value: ["ObjectId(xyz)"] , final replacement value: [ObjectId(xyz)]
- unrelated: added version number to lombok dependency to stop build failures in IntelliJ.
* Port Firestore plugin to UQI schema
* This PR implements a non-functional requirement i.e. from an end user perspective there is no change in the features that the plugin provides. However, the underlying DSL to render and interpret the query interface has been updated.
* It also involves a migration change to port existing Firestore plugin actions to the new UQI schema.
* Server comes up
* Instead of extracting ee, we extract the ce to get the mongo repo to work
* ActionRepo migrated
* ApiTemplateRepo migrated
* Application repo migrated
* Asset Repo migrated
* Collection repo migrated
* Comment repo migrated
* Comment thread repo migrated
* Config repo migrated
* datasource repo migrated
* group repo migrated
* Invite user repo migrated
* layout repo migrated
* New action repo migratd
* .
* Migrated rest of the repos.
* Migrated the repo impl as well between ce and common
* acl package partially migrated
* Authentication migration done!
* Controllers migrated
* AppsmithPermission enum migrated to class and split
* Unnecessary change removed
* Appsmith role enum converted to class
* Revert
* Reverting enum to class conversion after failing at implementing
* All services migrated
* server.solutions package completed
* Fixed solutions failing test cases
* Code compiling! Woohoo!
* refactor api's to include branchName for git
* Check for updating Ids for move action
* Added check for global profile
* Fix bad merge
Co-authored-by: Abhijeet <abhijeet@appsmith.com>
* fix: Added timestamp in where clause types, modified logic for calculating date times
* fix: Added another field for timestamp, shouldn't fail
* Added test case for older filter method as well
* Added test case for older filter method as well
* Modified types for date and time
* Untested trigger framework added
* Entity selector is working!
* Moved to query params instead of request body for the trigger api (since the trigger api is of type GET)
* Adding minor comments
* Added test case for trigger functionality
* Added parsing of where condition to Condition format
* Refactoring the name of functions to denote old style before implementing UQI where clause
* Updated the error message for data type problem for mixed data tyeps
* Generating complex logical expression.
* Working version of filtering happening without refactoring of code
* Added where clause configuration in List files in a bucket command.
Not able to render due to some configuration issue.
* Untested code completion
* To be reverted. Ayush's changes.
* Tested where condition on S3 List
* Made AND the default option for where clause
* where clause working in case of no valid inputs provided.
* Added parallel test cases as that were existing for the old where clause
* Revert "To be reverted. Ayush's changes."
This reverts commit a0f9b72e241f0688b7ef07cea8c3017473423512.
* Making equality the default option in a new where clause for LIST command
* Added test cases incorporating the review comments.
* Updated the options for the where command in S3 plugin. Removed the comparison operators except equality, non equality and belonging (in and not in) operators.
* Added catching of exception while parsing the operator into known appsmith condition types
* Reusing objectmapper from BasePlugin instead of creating a new one here.
* Add API to checkout remote branch
* Create a new application on fetch
* Create a new application on checking out remote branch
* Add tests
* Change per review comments
* Changes per review comments
* core workflows of git - branch, clone, commit, pull, merge, status, log
* Rehydrate file system before merge operation
* Add logic to handle merge conflict for merge and pull flow
* Add defaultBranch to listBranch API
* Add Unit tests for git commands
* Upgrade JGit dependencies to fix the security issue
* Git command tests
* Revert unwanted changes and update delete application flow
* Disable git feature until the FE changes are merged
Co-authored-by: Abhijeet <ABHI.NAGARNAIK@GMAIL.COM>
* Prepared Statements doesn't set value if the data type is not supported in H2. Defaulting to String for unsupported types.
* Incorporated review comment
* Adding handling for columns with multiple words in name
* Maintaining the order of columns by using LinkedHashMap instead of Map
* Incorporating review comments
* Migrating the test from Set to List to assert the order of the columns as well in the response
* Insert git application metadata to application object, for git sync/version control feature there is a need to save the application in the structured format
* Added changelog to index application collection with git branch and remoteurl
* Rehydrate and dehydrate applications among different instances
* Added serailisation purpose while exporting the application to make distinction between version control and regular import-export flow
* Git file operations moved to appsmith-git module
* Delete json reference from directory for deleted resource in DB
* Added git authentication in application metadata
* Replace String with Path to handle file path in git file structure
* Adding `APPSMITH_PLUGIN_MAX_RESPONSE_SIZE` which can be configured as an environment variable to increase plugin response size (currently only supported for Postgres Plugin)
* Updated error message + added the environment variable to the template docker env files for new installations
* Minor refactoring
* Partial code change to replace question mark with appsmith placeholder
* Working version
* Removing unnecessary code
* Added test case to assert that when evaluated value contains a "?", the replacements are still correct
* Added test case in Mongo Plugin as well for the same scenario
* Minor change in the language of the comment
* Add errorType to response
* Fix Test Failures
* group the errors
* Add errorType to categorise the issue/error
* remove the helper class
* update changes as per review
* Update the logical groupings of errors
* Fix formatting issues
* Updated the error types
* Update error classification
* Add binding query to the suggested widget to improve the experience
* Fix test failures
* Add comments and change as per review
* Move the query template to enum class
* Change Test cases as per review
* Remove unused methods from the test class
* Remove commented code
* Use proper attributes in binding query
* Refactor suggestWidget method to support node
* Add unit tests
* Added field to autogenerate values in DB column
* Added comment and refactor
* Autogenerate field update according to names instead of type for ArangoDB
* API to run DB query using plugin specified templates
* Included get spreadsheet metadata in get info method
* Added TCs for checking Spreadsheet info response
* Added error message for invalid datasources
* Authentication check for datasource modified to AuthenticationStatus field
* Adding support for explicit data type casting in postgres prepared statement
* Added text and int psql data types for support in explicit typecasting
* Documenting the code
* Add try catch block to handle the data conversion exception
* Suggest widget only in edit mode
* Add JsonNodeType to the widget suggestion logic
* Use ClassCastException instead of generic exception
* add tests for the array data type
* Suggest list of possible widgets instead of one
* Use constant in if condition to avoid possible NPE
Fix typo
* Add widget suggestion to query execution flow
* Change the logic for Chart widget suggestion
* Add tests for the all the suggested widgets
* Added enum class to store widget types
* add api key based and bearer token based authentication options to REST API datasource
* this change is ported to release from Feature: datasource changes for api key auth, bearer token auth, combine config. #4683
* Keymapping, Clone actions from template application, Used exported application JSON file as template app
* Delete references of widgets from action config if extra widgets not required
* Separate API added when pageId is not present with the client
* Added TCs
* Update in regex, enable reqArgsConstructor, separate DTO for CRUD page
* Decryption for dbauth, basic and OAuth datasources added in exported file
* All authentications for datasources included while exporting as deserialization is done through json file otherwise cast is throwing error
* Content-Disposition header implemented
* MongoEscapedWidget names segregated for published and unpublished layout, to prevent overwrite while exporting
* Published pages and actions explicitly handled in cases where unpublished resources are deleted
- return request parameters with type for debug tab.
- request params are stored in a RequestParamDTO object.
- a configProperty -> label map is cached in pluginService, which returns the param label as per the configProperty it is mapped to via editor.json file.
- This feature currently only works with prepared statements disabled.
- return helpful error message when get structure fails for mongo db due to lack of read permission. The message returned is: Appsmith has failed to get database structure. Please provide read permission on the database to fix this.
- any get structure error is also generically being caught by the getStrucuture method in DatasourceStructureSolution.java
- error msg and status code is now returned as part of DatasourceStructure object.
- ErrorDTO is used to store error info.
- ErrorDTO definition is moved to appsmith-interfaces package so that it can be used all packages.
- Other changes:
- stop logging PLUGIN_GET_STRUCTURE_ERROR externally, as this error is mostly triggered by credentials error or -lack of read permission.
- start logging PLUGIN_GET_STRUCTURE_TIMEOUT_ERROR externally, because this is not a user error.
* cherry pick -make new
* revert to enable fix from release
* attempt to hook into existing datasource editor
* gSheets plugin skeleton from Rest API
* Changes for database migration
* fix for auth code
* separate it out
* action page loads!
* add to explorer
* create action from datasource
* Editor JSON WIP
* working query form
* Editor JSON WIP
* import to
* fix toast message
* redirect from datasource and editor pages
* fix onboarding
* fix imports and constants
* refactor form out
* refactor queryForm
* Merge branch 'release' into feature/google-sheets
* Merge branch 'release' into feature/google-sheets
* initial values from settings, editor and form
* Check
* remove dangling code around lightTheme
* Safety net
* remove class
* try mouseover solve
* force click
* changes from review
* fix action form name on import
* Merge branch 'release' into feature/google-sheets
* minor cleanup
* Merge branch 'release' into feature/google-sheets
* WIP
* Google sheets changes
* Merge conflicts
* Merging and fixes, needs refactoring
* Check
* Merge branch 'release' into feature/google-sheets
* Fixed tests
* Add cloud services env variable
* Clean up saga
* Clean up
* Refactoring
* Deleted svg file
* Minor fixes
* Modified design to allow behaviour in google sheets methods (#3486)
* Modified design to allow behaviour in google sheets methods
* Review changes
* Removed sysout
* Added handling of edge cases with table data
* Merge branch 'release' into feature/google-sheets
* Fixes
* Fixes
* Added validations
* Improved tests
* Removed extraneous injected bean
* Review changes
* Fixed bug with method
* Changes to Google sheets plugin's request and response structures (#3692)
* Method changes
* Removed logging
* Renaming options
* Reverting pom version
* Modified type of collection variables, fixed errors
* Converted row offset field to one that supports dynamic bindings
* Review changes
* List SAAS plugin type actions under lightning menu apis (#3820)
* list saas plugin type actions under lightning menu apis
* combine saas plugin type actions in the other sub menu of lightning menu
Co-authored-by: Hetu Nandu <hetunandu@gmail.com>
* Fix merge issues
* Prettified query editor and a few fixes w/ ux
* Test fixes
* Reformatting request
* code for REST added (#3876)
Co-authored-by: hetunandu <hetu@appsmith.com>
* Renamed body to row object
* Renamed placeholder for range
* Renamed range heading
* Modifications to handle range semantics
* Use spreadsheet Url instead of id
* Ordering of methods
* Removed logging
* Add tests for Dynamic text controls
* Add tests for url helpers
* Fix coverage config
* Nevermind
* Interface changes
* There is no body here
* Yay to hints
* Delete row field is separately handled as row index
* placeholder support (#4001)
* Fixed tests, typos and creating new sheets with random rows
* Switched to using 'rowIndex' throughout
* binding path added for query input field (#4016)
* - Fixed QA bugs (#4032)
- Split delete sheet into two
- Removed dynamic query input types from hidden keys
* Proper exceptions
* Removed extra logging
* Throw exception if update method does not match any of the columns
* Same for bulk update
* Zero-indexed delete row
* I'm a space bound rocket ship
* Logic to register installations with cs (#4062)
* Logic to register installations with cs
* Clean up
* Casting to string
* Checking to see if this makes the test pass
* Added an extra null check
Co-authored-by: Piyush <piyush@codeitout.com>
Co-authored-by: hetunandu <hetu@appsmith.com>
Co-authored-by: Hetu Nandu <hetunandu@gmail.com>
Co-authored-by: Apeksha Bhosale <7846888+ApekshaBhosale@users.noreply.github.com>
* WIP : Type migration from String to Object for value
* Migrating config from string to boolean for prepared statement.
Handled error for already stored actions where PS config is stored as String and not Boolean.
- Return data type list along with action execution result so that the data can be displayed in the correct format.
- Handles these three data types for now : table, json, raw.
- If a plugin has already assigned the data type, then common handler is not used.
- Mongo plugin assigns the data types in the plugin specific flow i.e. does not use the common data type parse / assign method.
- To address review comments:
- added a new enum ActionResultDataType for data types. It is consumed by ParsedDataType. A list of ParsedDataType is returned by ActionExecutionResult
- parsed data in parallel using streams.parallel().
- add title to action execution errors to improve user experience
- all errors in AppsmithPluginErrors
- action execution related errors in AppsmithError : NO_CONFIGURATION_FOUND_IN_DATASOURCE, INVALID_ACTION, INVALID_DATASOURCE, INVALID_DATASOURCE_CONFIGURATION - as these are the likely errors in an action execution flow (excluding plugin specific flow) that might result from faulty action / datasource configuration by a user.
- title is returned as part of ActionExecutionResult.
- title is set in ActionExecutionResult on failure during action execution.
- In response to review comment - added a new BaseException class, so that both AppsmithException and AppsmithPluginException extend this base class. Also, refactored code to introduce setErrorInfo() function in ActionExecutionResult class to set its attributes.
- Some unrelated cleanup:
- catch PoolInitializationException for Postgres plugin and return AppsmithPuginException
- catch MongoTimeoutException and return AppsmithPluginException
* Annotation set up
* Removed annotation uses
* Redundant condition
* Commented out logging, retained for implementation
* Handling for Collection and Map parameterized types
* Removed comments
* Feature : JSON Smart Substitution in Mongo Plugin
* Added BSON data type for Mongo substitution. Added test case
* Minor comment added
* Minor variable re-naming and correcting failing test cases.
* REST API : Escaping special characters in string before smart substitution
* Incorporated review comment
* Smart Substitution Debugging - Adding appsmith data type to each parameter in response's request object for execute
* Incorporated review comments.
* Fixed failing test cases.
* Fixed MS-SQL test failures.
- Return hint for localhost URL on the following events:
Test datasource
Save datasource
Update REST API Url
Create datasource from REST API
When page gets loaded for first time.
- Hint message returned: "You may not able to access your localhost if Appsmith is running inside a docker container or on the cloud. Please check out Appsmith's documentation to understand more."
- It has been decided as part of actions pod meeting that these messages will not be persisted.
* WIP : Adding timestamp datatype in Prepared Statement
* Added simple tests for commonly used data types' identification
* Added plugin level test cases for timestamp with Prepared Statement to Postgres
* Lax mustache binding check added to match the client side check when client recognizes a field to have a dynamic binding. This would reduce/remove bad bindings from throwing a 400 during save page.
* Added a test to assert that update layout does not fail in case the binding is technically incorrect because part of the mustache's lie inside quotes. Since client has a lax way of finding a dynamic path, server also follows suite.