routier-collection / core/src / SchemaSearchable
Class: SchemaSearchable<T, TModifiers>
Defined in: core/src/schema/property/modifiers/SchemaSearchable.ts:23
Marks a string property as eligible for a full-text search index.
Eligible, not indexed. The schema says what COULD be indexed; the collection builder's .searchIndex() says that it IS. A property marked here on a collection that never declares an index costs nothing at all — no rows, no write amplification, no storage.
Like s.vector(), this exists to be RECOGNISED rather than to behave. It changes nothing about how the property is stored, cloned, compared, serialized or queried. The datastore reads the flag off the compiled schema to decide which values to tokenise; every plugin is unaware the property is any different from another string.
Declared on SchemaString only, so s.number().searchable() is a compile error rather than a runtime surprise. The one case the type system cannot catch — a searchable string nested inside an s.object() — is rejected when the schema compiles: v1 indexes root-level string properties only.
Extends
SchemaBase<T,TModifiers>
Type Parameters
T
T extends any
TModifiers
TModifiers extends SchemaModifiers
Constructors
Constructor
new SchemaSearchable<
T,TModifiers>(current):SchemaSearchable<T,TModifiers>
Defined in: core/src/schema/property/modifiers/SchemaSearchable.ts:28
Parameters
current
SchemaBase<T, TModifiers>
Returns
SchemaSearchable<T, TModifiers>
Overrides
Properties
modifiers
modifiers:
TModifiers
Defined in: core/src/schema/property/base/SchemaBase.ts:6
Inherited from
isNullable
isNullable:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:8
Inherited from
isUnmapped
isUnmapped:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:9
Inherited from
isOptional
isOptional:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:10
Inherited from
isKey
isKey:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:11
Inherited from
isIdentity
isIdentity:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:12
Inherited from
isReadonly
isReadonly:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:13
Inherited from
isDistinct
isDistinct:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:14
Inherited from
transform
transform:
PropertyTransform<unknown> =null
Defined in: core/src/schema/property/base/SchemaBase.ts:19
Set by .modify(x => x.transform(...)). A live reference, never stringified. null when the property is stored as it is.
Inherited from
indexes
indexes:
string[] =[]
Defined in: core/src/schema/property/base/SchemaBase.ts:20
Inherited from
fromPropertyName
fromPropertyName:
string=null
Defined in: core/src/schema/property/base/SchemaBase.ts:21
Inherited from
dimensions
dimensions:
number=null
Defined in: core/src/schema/property/base/SchemaBase.ts:35
How many numbers a vector holds. null for every other type.
Declared here rather than on SchemaVector because a modifier WRAPS rather than extends: s.vector(1536).optional() is a SchemaOptional, and anything reachable only through the original class is lost the moment a modifier is added. type survives for exactly this reason — the copy constructor below carries it — and a dimension count has to travel with it, or an optional vector reaches a backend as a vector of unknown width and cannot be given a column.
innerSchema is the cautionary example: it lives on SchemaArray alone, so a modified array arrives with no element type and clones through the slow path.
Inherited from
maxLength
maxLength:
number=null
Defined in: core/src/schema/property/base/SchemaBase.ts:50
The longest string the property is declared to hold. null for every other type, and for a string that declares nothing.
Declared here rather than on SchemaString for the same reason as dimensions above: s.string({ maxLength: 4000 }).optional() is a SchemaOptional, so anything reachable only through SchemaString is lost the moment a modifier is added.
A declaration, never a validation. Core does not check a value against it and does not truncate. The backend that can use the number does: MySQL gives the column VARCHAR(maxLength) instead of the blanket VARCHAR(255). Every other backend ignores it, because a string column that is already unbounded cannot be made more correct by knowing a bound.
Inherited from
isSearchable
isSearchable:
boolean=false
Defined in: core/src/schema/property/base/SchemaBase.ts:62
Whether this string may be tokenised into a full-text search index.
Set by .searchable(), and only ever true on a string. Eligibility, not membership: a collection that never declares .searchIndex() indexes nothing regardless.
Copied by the constructor below, so s.string().searchable().optional() stays searchable. Every flag on this class is copied for the same reason: a modifier WRAPS rather than extends, so anything the constructor forgets is silently dropped the moment a property gains one more modifier.
Inherited from
foreignKeyDefinition
foreignKeyDefinition:
ForeignKey<unknown> =null
Defined in: core/src/schema/property/base/SchemaBase.ts:64
Inherited from
SchemaBase.foreignKeyDefinition
tags
tags:
string[] =[]
Defined in: core/src/schema/property/base/SchemaBase.ts:65
Inherited from
injected
injected:
any=null
Defined in: core/src/schema/property/base/SchemaBase.ts:66
Inherited from
defaultValue
defaultValue:
DefaultValue<T> =null
Defined in: core/src/schema/property/base/SchemaBase.ts:67
Inherited from
valueSerializer
valueSerializer:
PropertySerializer<T> =null
Defined in: core/src/schema/property/base/SchemaBase.ts:68
Inherited from
valueDeserializer
valueDeserializer:
PropertyDeserializer<T> =null
Defined in: core/src/schema/property/base/SchemaBase.ts:69
Inherited from
type
type:
SchemaTypes
Defined in: core/src/schema/property/base/SchemaBase.ts:70
Inherited from
functionBody
functionBody:
FunctionBody<any,T>
Defined in: core/src/schema/property/base/SchemaBase.ts:71
Inherited from
literals
readonlyliterals:T[] =[]
Defined in: core/src/schema/property/base/SchemaBase.ts:73
Inherited from
instance
instance:
T
Defined in: core/src/schema/property/modifiers/SchemaSearchable.ts:25
Overrides
Methods
optional()
optional():
SchemaOptional<T,"optional"|TModifiers>
Defined in: core/src/schema/property/modifiers/SchemaSearchable.ts:40
Declared here so .searchable() composes in BOTH senses — .searchable().optional() and .optional().searchable() mean the same thing and both keep the flag. SchemaDistinct exposes neither, which is why .distinct().optional() is unwritable and its copy-loss (see SchemaBase.isSearchable) has never been noticed.
Returns
SchemaOptional<T, "optional" | TModifiers>
nullable()
nullable():
SchemaNullable<T,"nullable"|TModifiers>
Defined in: core/src/schema/property/modifiers/SchemaSearchable.ts:44
Returns
SchemaNullable<T, "nullable" | TModifiers>