fix: don't clean up settings when optional data is not present #5118
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
About the changes
This fixes a bug updating a project, when optional data (defaultStickiness and featureLimit are not part of the payload).
Example:
Then if you try to get the project with a PAT, the API will return a 403. The reason is that the project mode gets cleared (mode=null) because of the following update statement that does not check if defaultStickiness or featureLimit are present, resulting in an update without fields that clears the table https://github.com/Unleash/unleash/blob/main/src/lib/db/project-store.ts#L268-L281
Note that the project still exists, and this can be checked using the initial admin token:
curl http://localhost:4242/api/admin/projects/default -H 'Authorization: *:*.unleash-insecure-admin-api-token'
The problem happens due to:
additional properties: true
, which is what we agreed on for input)