Skip to content

Commit 2fe7115

Browse files
committed
fix: ensure proper type association for nestedProperties in data type configuration
- Resolved incorrect handling of `nestedProperties` for non-object data types. - Introduced `ObjectDataType` and `PrimitiveDataType` for improved type distinction. - Updated `NestedPropertyCreate` and `NestedPropertyConfigCreate` to align with conditional `dataType` logic. - Improved type safety and consistency in data type configurations.
1 parent a137e70 commit 2fe7115

File tree

1 file changed

+18
-5
lines changed
  • src/collections/configure/types

1 file changed

+18
-5
lines changed

src/collections/configure/types/base.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,32 @@ 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+
3955
export type NestedPropertyCreate<T = undefined> = T extends undefined
4056
? {
4157
name: string;
4258
dataType: DataType;
4359
description?: string;
44-
nestedProperties?: NestedPropertyConfigCreate<T, DataType>[];
4560
indexInverted?: boolean;
4661
indexFilterable?: boolean;
4762
indexSearchable?: boolean;
4863
tokenization?: WeaviateNestedProperty['tokenization'];
49-
}
64+
} & NestedDataTypeConfig<T>
5065
: {
5166
[K in NonRefKeys<T>]: RequiresNested<DataType<T[K]>> extends true
5267
? {
@@ -92,17 +107,15 @@ export type NestedPropertyConfigCreateBase = {
92107
export type PropertyConfigCreate<T> = T extends undefined
93108
? {
94109
name: string;
95-
dataType: DataType;
96110
description?: string;
97-
nestedProperties?: NestedPropertyConfigCreate<T, DataType>[];
98111
indexInverted?: boolean;
99112
indexFilterable?: boolean;
100113
indexRangeFilters?: boolean;
101114
indexSearchable?: boolean;
102115
tokenization?: WeaviateProperty['tokenization'];
103116
skipVectorization?: boolean;
104117
vectorizePropertyName?: boolean;
105-
}
118+
} & NestedDataTypeConfig<T>
106119
: {
107120
[K in NonRefKeys<T>]: RequiresNested<DataType<T[K]>> extends true
108121
? {

0 commit comments

Comments
 (0)