- 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
* Bug Fix : Escaping _id and _class from primary column keys before storing the DSL
* Fixed the test case failures.
* Updated the replacement strings for _id and _class to include appsmith keyword
- 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.
* 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.
- Provide non client certificate based SSL support for Mysql, Mongo, Postgres plugins.
- Added a new option default, apart from the the SSL mode types supported by the driver. Default means that go with whatever default configuration driver provides.
* Clone only those datasources that are actually used
* Retry when cloning app causes a name class
* Search for an existing datasource before cloning
* Test deep matching of datasources
* Refactoring, since now the tests pass
* Allow forking of owning applications
* Don't limit datasource naming suffix number
* WIP : enrichment of analytics event for execute.
* Plugin level : Catch all exceptions and set request in the result
Server level : Adding new fields to analytics : `isSuccessfulExecution`, `statusCode`, `timeElapsed`
* Dont catch StaleConnectionException. Server handles the same.
* Removed class specification for onErrorResume in plugins since its supposed to catch all errors.
* Remove width and introduce more AppLayout type enums
* Fix: Adding min width to layout options.
Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
- Provide support for non Amazon S3 service providers like Upcloud, Digital Ocean, Wasabi, DreamObjects and any other S3 compliant storage service provider.
- Change plugin label from "Amazon S3" to "S3"
* Add API for uploading profile photos for current user
* Add delete and get APIs for profile photos
* Add test for uploading and deleting profile photo
* Added negative tests for upload profile photo API
- Expect max value of timeout as 60000 ms.
- If value exceeds max value then add error message to the list of invalids. This list is returned to the client in response body.
- Detect integer overflow exception (Number format exception) and override the value to 60000 ms.
* WIP compute if the dynamic binding path list is correct.
* Tested code for deleting the incorrect dynamic binding path list from actions.
* Added comments for code readability
* A barely working API for forking a public application
* Tests WIP
* Mild refactoring in tests
* Refactoring in test
* Not all applications are forkable
* Added action request in S3 plugin.
* Added request data in Dynamo plugin
* Added request in Elastic Search.
* Request in Firestore.
* Request added in Mongo
* MsSQL request added.
* Added MySQL request.
* Added Postgres request.
* Added redis request.
* Redshift doen.
* Catching AppsmithPluginExceptions at the plugin level itself to ensure that the request gets passed on as part of the result.
* Fixed failing plugin test failures
* Fixed AmazonS3 test failures.
* WIP post analytics working
* WIP : Making the request data confirm to existing analytics request data format.
* Fixed the headers in the analytics body.
* Migrations S3, Postgres to the accepted format for request in analytics
* Updated S3 action to be the query
* Migration completed for all plugins for analytics.
* Removed the old analytics event. Now sending only the new one.
* Ensuring all data is captured in S3 plugin request in case of error.
* Minor editing of firestore to ensure that the errors get caught by the plugin itself.
* Fixed test cases in Amazon S3
* Incorporated review comments.
* Pushing minor editor form changes to ensure that prepared statement could be turned off.
* Code refactor to do variable substitution in PluginExecutor instead of action service.
* WIP : Prepared Statement handling in psql plugin
* WIP Prepared Statements.
* Working version of prepared statements
* Quote trimming added for post preparing sql statements. Now the unprepared statements and prepared statements do not require edits.
* Fixed existing test cases failing.
* Code formatting.
* Super minor code cleanup.
* Added migration for the existing postgres actions.
* Fixed failing test cases in ActionServiceTest.
* Minor change in the text for turning on and off prepared statements in the postgres query pane.
* Added test cases for prepared statement.
* Some minor comments for code readability
* Moved Prepared Statement setting from Action Configuration to Plugin Specified Templates since this setting does not make sense for all the DB plugins.
* Added function level comments
* Update app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/SqlStringUtils.java
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* Update app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/SqlStringUtils.java
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* Incorporated review comments.
* Fixed compile time error.
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* Added test case to assert that new datasources and actions created post making an application public have the correct permissions for public execution.
* Fix OAuth flow throwing 500 when signup is disabled
* Check for error code to identify signup disabled error
* Add consistent handling of allowed-domains for signing up
* Check for existence of valid email before checking domain
* When fetching unpublished actions and unpublished pages, check if the undeployed version is not deleted before fetching.
* Only add unpublished page deleted at check if the view mode is false (aka edit mode)
* 1. Update action repository to fetch only non deleted actions if fetching actions in edit mode.
2. Added test cases to assert re-using of deleted page and action names.
* 1. Update on load actions correctly
2. Send the changed actions with their changes as well as messages back to the client as part of the response.
* Added test case to assert that the action updates are correctly recorded in updateLayout.
* Code cleanup + added more comments for code readability
* Incorporated review comments.
1. Move package appsmith-interfaces/src/main/java/com/appsmith/external/pluginExceptions-> appsmith-interfaces/src/main/java/com/appsmith/external/exceptions/pluginExceptions
2. Move enum AppsmithErrorAction from appsmith-server/src/main/java/com/appsmith/server/exceptions/AppsmithError.java -> appsmith-interfaces/src/main/java/com/appsmith/external/exceptions/AppsmithErrorAction.java, so that both plugin exceptions and server exceptions could use the same enum.
3. Log exception based on the error action defined for each exception.
* Add analytics data point on action execution
* Include application details in action exec data point
* Only send action execution event on cloud
* Analytics is auto-disabled on self-hosted setups
* Move event name to AnalyticsEvents enum
* Move analytics Mono to separate method
* Use a common function to enqueue analytics message
* Provide analytics properties from caller method
* Use consistent casing in event names for analytics
* Proof of concept code which calculates the on load page actions.
* Refactored the field names introduced in Layout. Added a new field to keep a track of direct action names used in dynamic bindings in the DSL.
* Untested compute on on page load actions completed.
* Working page load actions computation.
TODO : Update the tests for correctness.
* Added fix for BFS starting from root nodes instead of arbitrary nodes.
Fixed a test case to assert for correct page load actions.
* Fixed the bug where the ids of the actions were not getting set in the layout. Also asserting the same in the test case for catching the future breaks.
* Minor refactor of function name to clear its purpose without reading the code.
* Incorporated review comments.
* Added conditional checks for unpublished action deleted and circular dependency of actions depending on each other.
This is needed for remembering when a user has viewed
release notes. Snapshot versions aren't a tagged marker
on the version timeline so aren't useful for this purpose.
* In case cs service returns an error, stop processing release notes and resume with the caller flow.
* In case the server was unable to exchange messages with the CS server, bail out of further processing gracefully since this is not a must have but rather a good to have feature.
* Include version information in backend builds
* Enable manual trigger of server workflow
* Add a dummy input field for manual trigger
* Fix secret checking in github actions
* Disable cron scheduling of sync job
* Build docker image on pushing a version tag
* Fix duplicated id and invalid id in release workflow
* Don't try to login to Docker
* Avoid download progress outputs from Maven
* Add version information for building client
* Calculate version number only once
* Enable push to DockerHub after building images
* Use Docker username from GitHub secrets
* Fix Docker username in tags when building image
* Use different secret for org name
* Minor refactoring in server workflow
* Update client build workflow to use version
* Enable manual triggering of client workflow
* Set snapshot version for server builds
* Push to docker for all branches (temp)
* Undo temp change to push all branches to DockerHub
* Use Docker org from secrets in client.yml
* Fix missing version reference in client.yml
* Remove debug command in dockerfile
* Save release notes in a resource file in Docker image
* Fix query serialization to get release notes
* Get releases of current repo instead of hard-coded repo
* Fix variable quoting for repo variables
* Exclude draft and prerelease nodes from image
* Fix call to any in release notes processor
* Fix syntax error in release notes script
* Implement API to get new release count and info
* Add missing ReleaseNotes component
* Have the release workflow run after a release is created
* Build server after generating release notes
* Change release trigger to "released"
* Change release trigger to "published"
* Change release trigger to released, edited and deleted
* Use JS script to get release notes, take 1
* Filter drafts and prereleases in script
* Fix syntax error in ES6
* Write release notes to file
* Create parent directory before writing release notes
* Log cwd in release notes script
* Log pwd along with release-notes content
* Handle case where working directory is incorrect
* Remove shell based release notes generator
* Don't show error when Sentry config is missing
* Check for sentry auth token to enable Sentry
* Carry build's exit code over to CI
* Mark out build result and add a note about it
* Add a small test to verify new versions computation
* Remove incorrect test assertion
* Remove generation of release notes file
* Connect to cloud services to fetch release notes data
* Fix missing runner for test class
* Handle missing cloud_services base URL
* Fix test failures due to missing mocks
* Enable sync-ee cron job
* Revert build.sh as there's no real change
* Add API to update release notes viewed version for users
* Fix prettier line-length errors
* Create UserData model for info unrelated to auth
* Fix field name calls
* Ensure we have a userId before setting userData
* Add tests for setting version number in UserData
* Include instanceId when fetching release notes
* Disable signup API via environment variable
* Allow signup for invited users, even if disabled publicly
* Add test for signup when signup is disabled
* Run invite flow tests when signup is disabled
* Revert status annotation in signup API endpoint
* Remove unused tests on invite flow
* Change signup disabled error message
* Fixed unreferenced actions not being triggered for execute on load
* WIP : Have to commit some minor cosmetic code formatting changes
* Comments and fix for action ordering
* modified test case
Co-authored-by: Trisha Anand <trisha@appsmith.com>
* Increased logs to debug future connection leaks.
* Fetch a connection from the pool only if a query exists.
* Minor comment added.
* Minor rewrite
* Code formatting.
* Update app/server/appsmith-plugins/postgresPlugin/src/main/java/com/external/plugins/PostgresPlugin.java
Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
* Added hikari cp pool stats to get database structure function as well.
Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
1. Get rid of cypress test failures which asserts a certain order till the cypress test case is fixed and unblocks the frontend team.
2. Uses a bulk API to fetch all the pages instead of fetching each page sequentially over different network calls with the database.
* Zipping flux with mono leads to mono not getting repeated and only the first emitted value of flux is processed further. This is leading to only a single page getting emitted in a multi page application.
* Added a test case to assert this for a multi page application
* All newly created applications now have a default published state.
* Added a test case to assert a new application comes up with default published states for both application and the default page.
* Function name changed.
* When trying to fetch a published version of a page when the page has not been published, throw a 404.
* WIP : Not working
* Adding the skeleton for Firestore integration
* Adding the datasource & query editor forms
Also adding the database changelog for the firestore plugin
Commenting out the firestore.close() connection because that causes issues with multiple Firestore tenants running in the same JVM.
* Adding the code for fetching the structure of collections from Firestore
* Use single document path field for Firestore
* Fix potential NPE when datasource destroy timeouts
* Work in progress on collection level ops for Firestore
* Get documents in a collection now works
* Add collection level querying support
* Mild refactoring
* Fix NPE when some fields are missing
* Hide clientJSON as a password field for Firestore
* Make collection level querying reactive
* Make reactive
* Validate before connecting
* Add tests for all supported methods in Firestore
* Fix forms for Firestore with hidden fields
* Hide limit and order by fields when not needed
* Restore log entry deleted by mistake
* Use S3 URL for Firestore/Firebase logo
* Add comments detailing why some code is commented
* Make parsing JSON reactive and fix subscribe calls
* Fix reactive scheduler
Co-authored-by: Arpit Mohan <arpit@appsmith.com>
* Making postgres plugin blocking statements run on elastic threadpool.
* Moved the blocking calls to check for the connection validity, etc. also inside the Mono.fromCallable
Instead of using compound index, using single indices to ensure that both fetch actions by app id (during load of actions in edit/view mode) and fetch actions by page id (during update layout) are indexed queries.
* Doing a deep copy during clone application instead of updating the original application which may have been causing a concurrency bug.
* Ensuring that once the clone application flow is triggered, the flow completes eventually even if the client cancels the request before completion.
* Cloned application would not be public.
* Added parametrized Application constructor
* Removed lombok all args constructor
* Optimized import
* Incorporated review comments :
1. Updated the constructor for creating the application
2. Added a test case to assert that if during cloning of an application the flow gets cancelled, the cloning would still complete and ensure that the application created is sane.
Also adding the APPSMITH_SEGMENT_CE_KEY as a build arg to the server Dockerfile. This will be used to set the environment variable in the Docker image itself.
* Experimenting with spring metrics, prometheus
* Added prometheus config in application.properties.
* Added a few more configurations for spring metrics to improve performance tooling.
* Added basic authentication to allow prometheus to scrape our monitoring data in an authenticated fashion.
* Only exposing prometheus end point at this junction instead of other metric endpoints as well.
* Fixed test case which failed because of actuator instantiating bean.
* Report selective errors to rollbar.
1. Assign an action attribute to each AppsmithError enum item. Take action based on the action attribute.
* Fixing the condition for organization name being empty
* Report selective errors to rollbar.
1. Assign an action attribute to each AppsmithError enum item. Take action based on the action attribute.
Co-authored-by: Sumit Kumar <sumitsum@Sumits-MacBook-Pro.local>
Co-authored-by: Arpit Mohan <arpit@appsmith.com>
* Fixed timeout error message, added new type of error for plugin timeouts
* Switched error code and added test for a secondary StaleConnectionException