Skip to content

Commit 8f3348b

Browse files
committed
vectors - load vector bucket and index at rest level
Signed-off-by: Amit Prinz Setter <alphaprinz@gmail.com>
1 parent 23db81a commit 8f3348b

File tree

6 files changed

+97
-39
lines changed

6 files changed

+97
-39
lines changed

src/endpoint/vector/ops/vector_bucket_get.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ async function post_get_vector_bucket(req, res) {
99

1010
dbg.log0("post_get_vector_bucket body =", req.body);
1111

12-
const vector_bucket_name = req.body.vectorBucketName;
13-
14-
const vb = await req.vector_sdk.get_vector_bucket({ vector_bucket_name});
12+
const vb = req.vector_bucket;
1513

1614
return {
1715
vectorBucket: {

src/endpoint/vector/ops/vector_index_get.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,7 @@ async function post_get_index(req, res) {
1010

1111
dbg.log0("post_get_index body =", req.body);
1212

13-
const vector_index_name = req.body.indexName;
14-
const vector_bucket_name = req.body.vectorBucketName;
15-
16-
const vector_index_info = await req.vector_sdk.get_vector_index({
17-
vector_index_name,
18-
vector_bucket_name
19-
});
13+
const vector_index_info = req.vector_index;
2014

2115
return {
2216
index: {

src/endpoint/vector/vector_rest.js

Lines changed: 80 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,81 @@ const RPC_ERRORS_TO_VECTOR = Object.freeze({ //TODO - validate
3838
});
3939

4040
const VECTOR_OPS = js_utils.deep_freeze({
41-
CreateVectorBucket: require('./ops/vector_bucket_create'),
42-
GetVectorBucket: require('./ops/vector_bucket_get'),
43-
DeleteVectorBucket: require('./ops/vector_bucket_delete'),
44-
ListVectorBuckets: require('./ops/vector_list_vector_buckets'),
45-
CreateIndex: require('./ops/vector_index_create'),
46-
GetIndex: require('./ops/vector_index_get'),
47-
ListIndexes: require('./ops/vector_index_list'),
48-
DeleteIndex: require('./ops/vector_index_delete'),
49-
PutVectors: require('./ops/vector_put_vectors'),
50-
ListVectors: require('./ops/vector_list_vectors'),
51-
QueryVectors: require('./ops/vector_query_vectors'),
52-
DeleteVectors: require('./ops/vector_delete_vectors'),
53-
PutVectorBucketPolicy: require('./ops/vector_put_vector_bucket_policy'),
54-
GetVectorBucketPolicy: require('./ops/vector_get_vector_bucket_policy'),
55-
DeleteVectorBucketPolicy: require('./ops/vector_delete_vector_bucket_policy'),
41+
CreateVectorBucket: {
42+
handler: require('./ops/vector_bucket_create'),
43+
load_vector_bucket: false,
44+
load_vector_index: false,
45+
},
46+
GetVectorBucket: {
47+
handler: require('./ops/vector_bucket_get'),
48+
load_vector_bucket: true,
49+
load_vector_index: false,
50+
},
51+
DeleteVectorBucket: {
52+
handler: require('./ops/vector_bucket_delete'),
53+
load_vector_bucket: true,
54+
load_vector_index: false,
55+
},
56+
ListVectorBuckets: {
57+
handler: require('./ops/vector_list_vector_buckets'),
58+
load_vector_bucket: false,
59+
load_vector_index: false,
60+
},
61+
CreateIndex: {
62+
handler: require('./ops/vector_index_create'),
63+
load_vector_bucket: true,
64+
load_vector_index: false,
65+
},
66+
GetIndex: {
67+
handler: require('./ops/vector_index_get'),
68+
load_vector_bucket: true,
69+
load_vector_index: true,
70+
},
71+
ListIndexes: {
72+
handler: require('./ops/vector_index_list'),
73+
load_vector_bucket: true,
74+
load_vector_index: false,
75+
},
76+
DeleteIndex: {
77+
handler: require('./ops/vector_index_delete'),
78+
load_vector_bucket: true,
79+
load_vector_index: true,
80+
},
81+
PutVectors: {
82+
handler: require('./ops/vector_put_vectors'),
83+
load_vector_bucket: true,
84+
load_vector_index: true,
85+
},
86+
ListVectors: {
87+
handler: require('./ops/vector_list_vectors'),
88+
load_vector_bucket: true,
89+
load_vector_index: true,
90+
},
91+
QueryVectors: {
92+
handler: require('./ops/vector_query_vectors'),
93+
load_vector_bucket: true,
94+
load_vector_index: true,
95+
},
96+
DeleteVectors: {
97+
handler: require('./ops/vector_delete_vectors'),
98+
load_vector_bucket: true,
99+
load_vector_index: true,
100+
},
101+
PutVectorBucketPolicy: {
102+
handler: require('./ops/vector_put_vector_bucket_policy'),
103+
load_vector_bucket: true,
104+
load_vector_index: false,
105+
},
106+
GetVectorBucketPolicy: {
107+
handler: require('./ops/vector_get_vector_bucket_policy'),
108+
load_vector_bucket: true,
109+
load_vector_index: false,
110+
},
111+
DeleteVectorBucketPolicy: {
112+
handler: require('./ops/vector_delete_vector_bucket_policy'),
113+
load_vector_bucket: true,
114+
load_vector_index: false,
115+
},
56116
});
57117

58118
async function vector_rest(req, res) {
@@ -121,22 +181,24 @@ async function handle_request(req, res) {
121181

122182
http_utils.authorize_session_token(req, headers_options);
123183
authenticate_request(req);
124-
await authorize_request(req);
184+
await req.object_sdk.load_requesting_account(req);
185+
await req.object_sdk.authorize_request_account(req);
125186

126187
dbg.log1('VECTOR REQUEST', req.method, req.originalUrl, 'op', op_name, 'request_id', req.request_id, req.headers);
127188

128189
//init vector_sdk here to avoid creating this object for s3 reqs that don't need it
129190
//TODO - find a better place to get BS?
130191
req.vector_sdk = new VectorSDK({bucketspace: req.object_sdk._get_bucketspace()});
131-
const reply = await op.handler(req, res);
192+
await req.vector_sdk.load_vector_bucket_and_index(req, op);
193+
const reply = await op.handler.handler(req, res);
132194
dbg.log0("VECTOR reply =", reply);
133195

134196
http_utils.send_reply(req, res, reply, options);
135197
}
136198

137199
function authenticate_request(req) {
138200
try {
139-
signature_utils.authenticate_request_by_service(req, req.account_sdk);
201+
signature_utils.authenticate_request_by_service(req, req.object_sdk);
140202
} catch (err) {
141203
dbg.error('authenticate_request: ERROR', err.stack || err);
142204
if (err.code) {
@@ -147,12 +209,6 @@ function authenticate_request(req) {
147209
}
148210
}
149211

150-
// authorize_request_account authorizes the account of the requester
151-
async function authorize_request(req) {
152-
await req.account_sdk.load_requesting_account(req);
153-
req.account_sdk.authorize_request_account(req);
154-
}
155-
156212
function handle_error(req, res, err) {
157213
const vector_err =
158214
((err instanceof VectorError) && err) ||

src/sdk/object_sdk.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,16 +315,14 @@ class ObjectSDK {
315315
}
316316

317317
async authorize_request_account(req) {
318-
const { bucket } = req.params;
318+
const bucket = req.params?.bucket;
319319
const token = this.get_auth_token();
320320
// If the request is signed (authenticated)
321321
if (token) {
322322
signature_utils.authorize_request_account_by_token(token, this.requesting_account);
323323
}
324324
// check for a specific bucket
325-
if (bucket && req.op_name !== 'put_bucket' && req.op_name !== 'post_vector_bucket' &&
326-
req.op_name.indexOf('vector') === -1 //TODO - this line should be removed :)
327-
) {
325+
if (bucket && req.op_name !== 'put_bucket' && req.op_name !== 'post_vector_bucket') {
328326
// ANONYMOUS: cannot work without bucket.
329327
// Return if the acount is anonymous
330328
if (this._get_bucketspace().is_nsfs_non_containerized_user_anonymous(token)) return;

src/sdk/vector_sdk.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ class VectorSDK {
2424
return this.bucketspace;
2525
}
2626

27+
//load the vector bucket and index (if handling the op requries it)
28+
async load_vector_bucket_and_index(req, op) {
29+
if (!op.load_vector_bucket) return;
30+
const params = {
31+
vector_bucket_name: req.body.vectorBucketName
32+
};
33+
req.vector_bucket = await this.get_vector_bucket(params);
34+
if (!op.load_vector_index) return;
35+
params.vector_index_name = req.body.indexName;
36+
req.vector_index = await this.get_vector_index(params);
37+
}
38+
2739
//////////////////////////
2840
// VECTOR BUCKETS //
2941
//////////////////////////

src/test/integration_tests/api/vectors/test_vectors_ops.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ mocha.describe('vectors_ops', function() {
106106
}
107107
});
108108
});
109-
109+
110110
mocha.it('should get a vector bucket', async function() {
111111
const beforeTs = Date.now();
112112
await create_vector_bucket(s3_vectors_client, created_vector_buckets, vector_bucket_name1);

0 commit comments

Comments
 (0)