[Apps] Fix - app-synced object should be searchable (#19206)

## Summary

- **Make app-synced objects searchable**: `isSearchable` was hardcoded
to `false` and the `searchVector` field was missing the `GENERATED
ALWAYS AS (...)` expression, causing all records to have a `NULL` search
vector and be excluded from search results. Fixed by defaulting
`isSearchable` to `true` (configurable via the object manifest),
computing the `asExpression` from the label identifier field, and
allowing the update-field-action-handler to handle the `null` → defined
`asExpression` transition.
- **Make `isSearchable` updatable on an object**: The property had
`toCompare: false` in the entity properties configuration, so updates
via the API were silently ignored and never persisted. Fixed by setting
`toCompare: true`.
This commit is contained in:
Marie
2026-04-02 19:14:37 +02:00
committed by GitHub
parent 43baf7b91c
commit 2d6c8be7df
34 changed files with 639 additions and 51 deletions
@@ -142,6 +142,7 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma
"nameSingular",
"labelIdentifierFieldMetadataUniversalIdentifier",
"standardOverrides",
"isSearchable",
],
"propertiesToStringify": [
"standardOverrides",
@@ -227,7 +227,7 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
universalProperty: undefined,
},
isSearchable: {
toCompare: false,
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
@@ -1,7 +1,7 @@
import {
type HasAllProperties,
type Equal,
type Expect,
type HasAllProperties,
} from 'twenty-shared/testing';
import { type FlatEntityUpdate } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-update.type';
@@ -49,6 +49,7 @@ type Assertions = [
| 'labelPlural'
| 'labelIdentifierFieldMetadataId'
| 'labelIdentifierFieldMetadataUniversalIdentifier'
| 'isSearchable'
>
>,