@@ -36,17 +36,31 @@ export type MultiTenancyConfigUpdate = {
3636 autoTenantCreation ?: boolean ;
3737} ;
3838
39+ export type ObjectDataType = 'object' | 'object[]' ;
40+
41+ export type PrimitiveDataType = Exclude < DataType , ObjectDataType > ;
42+
43+ export type NestedDataTypeConfig < T > =
44+ | {
45+ dataType : ObjectDataType ;
46+ /** only for object types */
47+ nestedProperties ?: NestedPropertyConfigCreate < T , ObjectDataType > [ ] ;
48+ }
49+ | {
50+ dataType : PrimitiveDataType ;
51+ /** If not an object, or an array of objecs, this field should never be assigned. */
52+ nestedProperties ?: never ;
53+ } ;
54+
3955export type NestedPropertyCreate < T = undefined > = T extends undefined
4056 ? {
4157 name : string ;
42- dataType : DataType ;
4358 description ?: string ;
44- nestedProperties ?: NestedPropertyConfigCreate < T , DataType > [ ] ;
4559 indexInverted ?: boolean ;
4660 indexFilterable ?: boolean ;
4761 indexSearchable ?: boolean ;
4862 tokenization ?: WeaviateNestedProperty [ 'tokenization' ] ;
49- }
63+ } & NestedDataTypeConfig < T >
5064 : {
5165 [ K in NonRefKeys < T > ] : RequiresNested < DataType < T [ K ] > > extends true
5266 ? {
@@ -92,17 +106,15 @@ export type NestedPropertyConfigCreateBase = {
92106export type PropertyConfigCreate < T > = T extends undefined
93107 ? {
94108 name : string ;
95- dataType : DataType ;
96109 description ?: string ;
97- nestedProperties ?: NestedPropertyConfigCreate < T , DataType > [ ] ;
98110 indexInverted ?: boolean ;
99111 indexFilterable ?: boolean ;
100112 indexRangeFilters ?: boolean ;
101113 indexSearchable ?: boolean ;
102114 tokenization ?: WeaviateProperty [ 'tokenization' ] ;
103115 skipVectorization ?: boolean ;
104116 vectorizePropertyName ?: boolean ;
105- }
117+ } & NestedDataTypeConfig < T >
106118 : {
107119 [ K in NonRefKeys < T > ] : RequiresNested < DataType < T [ K ] > > extends true
108120 ? {
0 commit comments