1
1
import { ConnectionGRPC } from '../../connection/index.js' ;
2
- import { WeaviateUnsupportedFeatureError } from '../../errors.js' ;
2
+ import { WeaviateUnexpectedStatusCodeError , WeaviateUnsupportedFeatureError } from '../../errors.js' ;
3
3
import { Tenant as TenantREST } from '../../openapi/types.js' ;
4
4
import { TenantsCreator , TenantsDeleter , TenantsGetter , TenantsUpdater } from '../../schema/index.js' ;
5
5
import { DbVersionSupport } from '../../utils/dbVersion.js' ;
@@ -17,12 +17,10 @@ const parseValueOrValueArray = <V>(value: V | V[]) => (Array.isArray(value) ? va
17
17
const parseStringOrTenant = < T extends TenantBase > ( tenant : string | T ) =>
18
18
typeof tenant === 'string' ? tenant : tenant . name ;
19
19
20
- const parseTenantREST = ( tenant : TenantREST ) : Tenant => {
21
- return {
22
- name : tenant . name ! ,
23
- activityStatus : Deserialize . activityStatusREST ( tenant . activityStatus ) ,
24
- } ;
25
- } ;
20
+ const parseTenantREST = ( tenant : TenantREST ) : Tenant => ( {
21
+ name : tenant . name ! ,
22
+ activityStatus : Deserialize . activityStatusREST ( tenant . activityStatus ) ,
23
+ } ) ;
26
24
27
25
const tenants = (
28
26
connection : ConnectionGRPC ,
@@ -53,9 +51,20 @@ const tenants = (
53
51
return check . supports ? getGRPC ( ) : getREST ( ) ;
54
52
} ,
55
53
getByNames : < T extends TenantBase > ( tenants : ( string | T ) [ ] ) => getGRPC ( tenants . map ( parseStringOrTenant ) ) ,
56
- getByName : < T extends TenantBase > ( tenant : string | T ) => {
54
+ getByName : async < T extends TenantBase > ( tenant : string | T ) => {
57
55
const tenantName = parseStringOrTenant ( tenant ) ;
58
- return getGRPC ( [ tenantName ] ) . then ( ( tenants ) => tenants [ tenantName ] || null ) ;
56
+ if ( await dbVersionSupport . supportsTenantGetRESTMethod ( ) . then ( ( check ) => ! check . supports ) ) {
57
+ return getGRPC ( [ tenantName ] ) . then ( ( tenants ) => tenants [ tenantName ] ?? null ) ;
58
+ }
59
+ return connection
60
+ . get < TenantREST > ( `/schema/${ collection } /tenants/${ tenantName } ` )
61
+ . then ( parseTenantREST )
62
+ . catch ( ( err ) => {
63
+ if ( err instanceof WeaviateUnexpectedStatusCodeError && err . code === 404 ) {
64
+ return null ;
65
+ }
66
+ throw err ;
67
+ } ) ;
59
68
} ,
60
69
remove : < T extends TenantBase > ( tenants : string | T | ( string | T ) [ ] ) =>
61
70
new TenantsDeleter (
0 commit comments