Migrate `policies` from being a `Set<Policy>` to a `policyMap`, that's a `Map<String, Policy>`. The key defines the permission whereas the value is the actual policy object. This makes it easier to use this data in code, to query as a MongoDB nested document, and as a Postgres `jsonb` column. Win-win! The migration runs for all collections in parallel, with following stats taken on 1-Jul-2024. 1. Release data, only non-deleted documents, all collections, parallel, 2m 42s. 2. Prod replica data, only non-deleted documents, all collections, parallel, (15m). 3. Release data, only non-deleted documents, all collections, serial, ~9m. This PR is only part of the solution. We have backwards compatible `getPolicies()` and `setPolicies()` methods so the diff isn't too big, but a follow-up PR will remove those two, and migration all usages to use the map instead. This PR only (almost) strictly includes changes that were necessary for the build and tests to pass. **/test all** <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10301601562> > Commit: d58ac59ea9bffb170f979176cdfc1ff378b440ef > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10301601562&attempt=1" target="_blank">Cypress dashboard</a>. > Tags: `@tag.All` > Spec: > <hr>Thu, 08 Aug 2024 12:46:36 UTC <!-- end of auto-generated comment: Cypress test results --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **New Features** - Introduced migration logic to convert `policies` to `policyMap`, enhancing data structure for policy management. - **Documentation** - Updated summaries and documentation to reflect changes in policy handling. - **Refactor** - Replaced direct field references with constant values for policy fields in migration files. - Adjusted method signatures to utilize the new `policyMap` structure. - Improved policy management logic for better immutability and safety. - **Tests** - Added new test cases for policy management functionality. - Updated existing test assertions to ensure proper policy handling with the new data structure. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Abhijeet <abhi.nagarnaik@gmail.com> |
||
|---|---|---|
| .github | ||
| app | ||
| contributions | ||
| deploy | ||
| scripts | ||
| static | ||
| utils/observability | ||
| .coderabbit.yaml | ||
| .deepsource.toml | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| .imgbotconfig | ||
| .nojekyll | ||
| app.json | ||
| appsmith_events.md | ||
| appsmith_templates.md | ||
| ci-debug.sh | ||
| CODE_OF_CONDUCT.md | ||
| CODEOWNERS | ||
| CONTRIBUTING.md | ||
| depot.json | ||
| Dockerfile | ||
| heroku.yml | ||
| IssuesReport.md | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
Organizations build internal applications such as dashboards, database GUIs, admin panels, approval apps, customer support dashboards, and more to help their teams perform day-to-day operations. Appsmith is an open-source tool that enables the rapid development of these internal apps. Read more on our website.
Installation
There are two ways to start using Appsmith:
- Signup on Appsmith Cloud.
- Install Appsmith on your machine. See the installation guides below.
| Installation Methods | Documentation |
|---|---|
| Docker (Recommended) | |
| Kubernetes | |
| AWS AMI |
For other deployment options, see the Installation Guides documentation.
Development
To build and run Appsmith in your local dev environment, see Setup for local development.
Learning Resources
Need Help?
Contributing
We ❤️ our contributors. We're committed to fostering an open, welcoming, and safe environment in the community.
📕 We expect everyone participating in the community to abide by our Code of Conduct. Please read and follow it.
🤝 If you'd like to contribute, start by reading our Contribution Guide.
👾 Explore some good first issues.
Let's build great software together.
Top Contributors
License
Appsmith is licensed under the terms of Apache License 2.0.
