Skip to content

fix: allow metadata-only collection updates - #228

Open
alnr wants to merge 1 commit into
typesense:masterfrom
alnr:fix/collection-metadata-only-update
Open

fix: allow metadata-only collection updates#228
alnr wants to merge 1 commit into
typesense:masterfrom
alnr:fix/collection-metadata-only-update

Conversation

@alnr

@alnr alnr commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Change Summary

CollectionUpdateSchema.Fields was generated as json:"fields", so an update changing only metadata still serialized "fields":null. Typesense rejects that with a 400, as it does "fields":[], which left no value of Fields that could express a metadata-only update. The server applies and persists the metadata change before it validates fields, so callers got back an error describing a write that had actually happened.

The upstream spec no longer marks fields as required (typesense/typesense-api-spec#107), making the property optional. Generating it with x-go-type-skip-optional-pointer keeps it as []Field rather than *[]Field, so it gains omitempty without breaking callers that construct a CollectionUpdateSchema.

Only the CollectionUpdateSchema portion of the vendored spec is updated here. Re-vendoring wholesale would revert the local hits patch from #216 and rename EnableOverrides/OverrideTags, which belongs in its own change.

PR Checklist

CollectionUpdateSchema.Fields was generated as `json:"fields"`, so an update
changing only `metadata` still serialized `"fields":null`. Typesense rejects
that with a 400, as it does `"fields":[]`, which left no value of Fields that
could express a metadata-only update. The server applies and persists the
metadata change before it validates `fields`, so callers got back an error
describing a write that had actually happened.

The upstream spec no longer marks `fields` as required
(typesense/typesense-api-spec#107), making the property optional.
Generating it with x-go-type-skip-optional-pointer keeps it as []Field rather than *[]Field, so
it gains `omitempty` without breaking callers that construct a CollectionUpdateSchema.

Only the CollectionUpdateSchema portion of the vendored spec is updated here.
Re-vendoring wholesale would revert the local `hits` patch from typesense#216 and
rename EnableOverrides/OverrideTags, which belongs in its own change.
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.

1 participant