Add isUnique support for application-defined fields (#19609)

## Summary

- Adds `isUnique?: boolean` to `RegularFieldManifest` in
`twenty-shared`, allowing SDK applications to declare unique constraints
on fields
- Updates the manifest-to-flat-field converter to read `isUnique` from
the manifest instead of hardcoding `false`
- Generates corresponding unique index metadata in
`computeApplicationManifestAllUniversalFlatEntityMaps` when a field has
`isUnique: true`, matching the behavior of the `CreateFieldInput` path
- Adds SDK-side validation rejecting `isUnique` on RELATION,
MORPH_RELATION, and FILES field types
- Adds integration test verifying manifest sync creates a unique index
for `isUnique` fields
- Adds SDK unit tests for `isUnique` validation on unsupported field
types

## Test plan

- [x] SDK unit tests: `defineField` accepts `isUnique: true` on TEXT,
rejects on RELATION and FILES
- [ ] Integration test: manifest sync with `isUnique: true` creates the
unique index in DB
- [ ] Verify `isUnique` defaults to `false` when not specified (backward
compatible)
- [ ] Verify standalone manifest fields (not nested in objects) also
generate unique indexes correctly
This commit is contained in:
Charles Bochet
2026-04-12 17:03:09 +02:00
committed by GitHub
parent d9d3648baa
commit ad1a4ecca0
6 changed files with 169 additions and 16 deletions
@@ -22,6 +22,7 @@ export type RegularFieldManifest<
options?: FieldMetadataOptions<T>;
universalSettings?: FieldMetadataUniversalSettings<T>;
isNullable?: boolean;
isUnique?: boolean;
objectUniversalIdentifier: string;
};