Skip to content

Commit bd7d30d

Browse files
authored
Deprecates vector params (#53)
* let data api deal with overlapping vector and vectorize * deprecated vectorize * update api report
1 parent db5ff57 commit bd7d30d

File tree

12 files changed

+70
-40
lines changed

12 files changed

+70
-40
lines changed

etc/astra-db-ts.api.md

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -563,8 +563,9 @@ export interface DeleteOneModel<TSchema extends SomeDoc> {
563563
// @public
564564
export interface DeleteOneOptions extends WithTimeout {
565565
sort?: Sort;
566+
// @deprecated
566567
vector?: number[];
567-
// @alpha
568+
// @deprecated
568569
vectorize?: string;
569570
}
570571

@@ -717,8 +718,9 @@ export interface FindOneAndDeleteOptions extends WithTimeout {
717718
includeResultMetadata?: boolean;
718719
projection?: Projection;
719720
sort?: Sort;
721+
// @deprecated
720722
vector?: number[];
721-
// @alpha
723+
// @deprecated
722724
vectorize?: string;
723725
}
724726

@@ -729,8 +731,9 @@ export interface FindOneAndReplaceOptions extends WithTimeout {
729731
returnDocument: 'before' | 'after';
730732
sort?: Sort;
731733
upsert?: boolean;
734+
// @deprecated
732735
vector?: number[];
733-
// @alpha
736+
// @deprecated
734737
vectorize?: string;
735738
}
736739

@@ -741,8 +744,9 @@ export interface FindOneAndUpdateOptions extends WithTimeout {
741744
returnDocument: 'before' | 'after';
742745
sort?: Sort;
743746
upsert?: boolean;
747+
// @deprecated
744748
vector?: number[];
745-
// @alpha
749+
// @deprecated
746750
vectorize?: string;
747751
}
748752

@@ -751,8 +755,9 @@ export interface FindOneOptions extends WithTimeout {
751755
includeSimilarity?: boolean;
752756
projection?: Projection;
753757
sort?: Sort;
758+
// @deprecated
754759
vector?: number[];
755-
// @alpha
760+
// @deprecated
756761
vectorize?: string;
757762
}
758763

@@ -763,8 +768,9 @@ export interface FindOptions {
763768
projection?: Projection;
764769
skip?: number;
765770
sort?: Sort;
771+
// @deprecated
766772
vector?: number[];
767-
// @alpha
773+
// @deprecated
768774
vectorize?: string;
769775
}
770776

@@ -847,8 +853,9 @@ export type InsertManyOptions = InsertManyUnorderedOptions | InsertManyOrderedOp
847853
export interface InsertManyOrderedOptions extends WithTimeout {
848854
chunkSize?: number;
849855
ordered: true;
850-
// @alpha
856+
// @deprecated
851857
vectorize?: (string | null | undefined)[];
858+
// @deprecated
852859
vectors?: (number[] | null | undefined)[];
853860
}
854861

@@ -863,8 +870,9 @@ export interface InsertManyUnorderedOptions extends WithTimeout {
863870
chunkSize?: number;
864871
concurrency?: number;
865872
ordered?: false;
866-
// @alpha
873+
// @deprecated
867874
vectorize?: (string | null | undefined)[];
875+
// @deprecated
868876
vectors?: (number[] | null | undefined)[];
869877
}
870878

@@ -875,8 +883,9 @@ export interface InsertOneModel<TSchema extends SomeDoc> {
875883

876884
// @public
877885
export interface InsertOneOptions extends WithTimeout {
886+
// @deprecated
878887
vector?: number[];
879-
// @alpha
888+
// @deprecated
880889
vectorize?: string;
881890
}
882891

@@ -999,8 +1008,9 @@ export interface ReplaceOneModel<TSchema extends SomeDoc> {
9991008
export interface ReplaceOneOptions extends WithTimeout {
10001009
sort?: Sort;
10011010
upsert?: boolean;
1011+
// @deprecated
10021012
vector?: number[];
1003-
// @alpha
1013+
// @deprecated
10041014
vectorize?: string;
10051015
}
10061016

@@ -1194,8 +1204,9 @@ export interface UpdateOneModel<TSchema extends SomeDoc> {
11941204
export interface UpdateOneOptions extends WithTimeout {
11951205
sort?: Sort;
11961206
upsert?: boolean;
1207+
// @deprecated
11971208
vector?: number[];
1198-
// @alpha
1209+
// @deprecated
11991210
vectorize?: string;
12001211
}
12011212

src/data-api/collection.ts

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -176,16 +176,14 @@ export class Collection<Schema extends SomeDoc = SomeDoc> {
176176
insertOne: { document },
177177
}
178178

179-
if (options?.vector && options.vectorize) {
180-
throw new Error('Cannot set both vector and vectorize options');
181-
}
179+
const { vector, vectorize } = <any>options ?? {};
182180

183-
if (options?.vector) {
184-
command.insertOne.document = { ...command.insertOne.document, $vector: options.vector };
181+
if (vector) {
182+
command.insertOne.document = { ...command.insertOne.document, $vector: vector };
185183
}
186184

187-
if (options?.vectorize) {
188-
command.insertOne.document = { ...command.insertOne.document, $vectorize: options.vectorize };
185+
if (vectorize) {
186+
command.insertOne.document = { ...command.insertOne.document, $vectorize: vectorize };
189187
}
190188

191189
const resp = await this._httpClient.executeCommand(command, options);
@@ -270,29 +268,28 @@ export class Collection<Schema extends SomeDoc = SomeDoc> {
270268
public async insertMany(documents: MaybeId<Schema>[], options?: InsertManyOptions): Promise<InsertManyResult<Schema>> {
271269
const chunkSize = options?.chunkSize ?? 50;
272270

273-
if (options?.vectors) {
274-
if (options.vectors.length !== documents.length) {
271+
const { vectors, vectorize } = <any>options ?? {};
272+
273+
if (vectors) {
274+
if (vectors.length !== documents.length) {
275275
throw new Error('The number of vectors must match the number of documents');
276276
}
277277

278278
for (let i = 0, n = documents.length; i < n; i++) {
279-
if (options.vectors[i]) {
280-
documents[i] = { ...documents[i], $vector: options.vectors[i] };
279+
if (vectors[i]) {
280+
documents[i] = { ...documents[i], $vector: vectors[i] };
281281
}
282282
}
283283
}
284284

285-
if (options?.vectorize) {
286-
if (options.vectorize.length !== documents.length) {
285+
if (vectorize) {
286+
if (vectorize.length !== documents.length) {
287287
throw new Error('The number of vectors must match the number of documents');
288288
}
289289

290290
for (let i = 0, n = documents.length; i < n; i++) {
291-
if (options.vectorize[i]) {
292-
if (documents[i].$vector) {
293-
throw new Error('Vector and vectorize options cannot overlap');
294-
}
295-
documents[i] = { ...documents[i], $vectorize: options.vectorize[i] };
291+
if (vectorize[i]) {
292+
documents[i] = { ...documents[i], $vectorize: vectorize[i] };
296293
}
297294
}
298295
}

src/data-api/types/delete/delete-one.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,14 @@ export interface DeleteOneOptions extends WithTimeout {
5252
*
5353
* If the sort field is already set, an error will be thrown. If you really need to use both, you can set the $vector
5454
* field in the sort object directly.
55+
*
56+
* @deprecated - Prefer to use `sort: { $vector: [...] }` instead
5557
*/
5658
vector?: number[],
5759
/**
5860
* NOTE: This feature is under current development.
5961
*
60-
* @alpha
62+
* @deprecated - Prefer to use `sort: { $vectorize: '...' }` instead
6163
*/
6264
vectorize?: string,
6365
}

src/data-api/types/find/find-one-delete.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,14 @@ export interface FindOneAndDeleteOptions extends WithTimeout {
5555
*
5656
* If the sort field is already set, an error will be thrown. If you really need to use both, you can set the $vector
5757
* field in the sort object directly.
58+
*
59+
* @deprecated - Prefer to use `sort: { $vector: [...] }` instead
5860
*/
5961
vector?: number[],
6062
/**
6163
* NOTE: This feature is under current development.
6264
*
63-
* @alpha
65+
* @deprecated - Prefer to use `sort: { $vectorize: '...' }` instead
6466
*/
6567
vectorize?: string,
6668
/**

src/data-api/types/find/find-one-replace.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,14 @@ export interface FindOneAndReplaceOptions extends WithTimeout {
8181
*
8282
* If the sort field is already set, an error will be thrown. If you really need to use both, you can set the $vector
8383
* field in the sort object directly.
84+
*
85+
* @deprecated - Prefer to use `sort: { $vector: [...] }` instead
8486
*/
8587
vector?: number[],
8688
/**
8789
* NOTE: This feature is under current development.
8890
*
89-
* @alpha
91+
* @deprecated - Prefer to use `sort: { $vectorize: '...' }` instead
9092
*/
9193
vectorize?: string,
9294
/**

src/data-api/types/find/find-one-update.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,14 @@ export interface FindOneAndUpdateOptions extends WithTimeout {
7979
*
8080
* If the sort field is already set, an error will be thrown. If you really need to use both, you can set the $vector
8181
* field in the sort object directly.
82+
*
83+
* @deprecated - Prefer to use `sort: { $vector: [...] }` instead
8284
*/
8385
vector?: number[],
8486
/**
8587
* NOTE: This feature is under current development.
8688
*
87-
* @alpha
89+
* @deprecated - Prefer to use `sort: { $vectorize: '...' }` instead
8890
*/
8991
vectorize?: string,
9092
/**

src/data-api/types/find/find-one.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ export interface FindOneOptions extends WithTimeout {
5656
*
5757
* If the sort field is already set, an error will be thrown. If you really need to use both, you can set the $vector
5858
* field in the sort object directly.
59+
*
60+
* @deprecated - Prefer to use `sort: { $vector: [...] }` instead
5961
*/
6062
vector?: number[],
6163
/**
6264
* NOTE: This feature is under current development.
6365
*
64-
* @alpha
66+
* @deprecated - Prefer to use `sort: { $vectorize: '...' }` instead
6567
*/
6668
vectorize?: string,
6769
/**

src/data-api/types/find/find.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,14 @@ export interface FindOptions {
4848
*
4949
* If the sort field is already set, an error will be thrown. If you really need to use both, you can set the $vector
5050
* field in the sort object directly.
51+
*
52+
* @deprecated - Prefer to use `sort: { $vector: [...] }` instead
5153
*/
5254
vector?: number[],
5355
/**
5456
* NOTE: This feature is under current development.
5557
*
56-
* @alpha
58+
* @deprecated - Prefer to use `sort: { $vectorize: '...' }` instead
5759
*/
5860
vectorize?: string,
5961
/**

src/data-api/types/insert/insert-many.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,14 @@ export interface InsertManyOrderedOptions extends WithTimeout {
7979
*
8080
* If any document already has a `$vector` field, and this is set, the `$vector` field will be overwritten. It is
8181
* up to the user to ensure that both fields are not set at once.
82+
*
83+
* @deprecated - Prefer to set the `$vector` fields in the docs directly
8284
*/
8385
vectors?: (number[] | null | undefined)[],
8486
/**
8587
* NOTE: This feature is under current development.
8688
*
87-
* @alpha
89+
* @deprecated - Prefer to set the `$vectorize` fields in the docs directly
8890
*/
8991
vectorize?: (string | null | undefined)[],
9092
}
@@ -134,12 +136,14 @@ export interface InsertManyUnorderedOptions extends WithTimeout {
134136
*
135137
* If any document already has a `$vector` field, and this is set, the `$vector` field will be overwritten. It is
136138
* up to the user to ensure that both fields are not set at once.
139+
*
140+
* @deprecated - Prefer to set the `$vector` fields in the docs directly
137141
*/
138142
vectors?: (number[] | null | undefined)[],
139143
/**
140144
* NOTE: This feature is under current development.
141145
*
142-
* @alpha
146+
* @deprecated - Prefer to set the `$vectorize` fields in the docs directly
143147
*/
144148
vectorize?: (string | null | undefined)[],
145149
}

src/data-api/types/insert/insert-one.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,14 @@ export interface InsertOneOptions extends WithTimeout {
4343
*
4444
* If the document already has a `$vector` field, and this is set, the `$vector` field will be overwritten. It is
4545
* up to the user to ensure that both fields are not set at once.
46+
*
47+
* @deprecated - Prefer to set the `$vector` field in the doc directly
4648
*/
4749
vector?: number[],
4850
/**
4951
* NOTE: This feature is under current development.
5052
*
51-
* @alpha
53+
* @deprecated - Prefer to set the `$vectorize` field in the doc directly
5254
*/
5355
vectorize?: string,
5456
}

0 commit comments

Comments
 (0)