@@ -22,12 +22,14 @@ import {
2222 ListDatabasesOptions , 
2323}  from  '@/src/administration/types' ; 
2424import  {  AstraDbAdmin  }  from  '@/src/administration/astra-db-admin' ; 
25- import  {  DbSpawnOptions ,  InternalRootClientOpts  }  from  '@/src/client/types' ; 
2625import  {  Db  }  from  '@/src/db/db' ; 
27- import  {  validateAdminOpts  }  from  '@/src/administration/utils' ; 
2826import  {  DEFAULT_DEVOPS_API_ENDPOINTS ,  DEFAULT_KEYSPACE ,  HttpMethods  }  from  '@/src/lib/api/constants' ; 
2927import  {  DevOpsAPIHttpClient  }  from  '@/src/lib/api/clients/devops-api-http-client' ; 
3028import  {  TokenProvider ,  WithTimeout  }  from  '@/src/lib' ; 
29+ import  {  parseAdminSpawnOpts  }  from  '@/src/client/parsers/spawn-admin' ; 
30+ import  {  InternalRootClientOpts  }  from  '@/src/client/types/internal' ; 
31+ import  {  DbSpawnOptions ,  Logger  }  from  '@/src/client' ; 
32+ import  {  buildAstraEndpoint  }  from  '@/src/lib/utils' ; 
3133
3234/** 
3335 * An administrative class for managing Astra databases, including creating, listing, and deleting databases. 
@@ -64,24 +66,31 @@ export class AstraAdmin {
6466 * 
6567 * @internal  
6668 */ 
67-  constructor ( rootOpts : InternalRootClientOpts ,  adminOpts ?: AdminSpawnOptions )  { 
68-  validateAdminOpts ( adminOpts ) ; 
69+  constructor ( rootOpts : InternalRootClientOpts ,  rawAdminOpts ?: AdminSpawnOptions )  { 
70+  const   adminOpts   =   parseAdminSpawnOpts ( rawAdminOpts ,   'options' ) ; 
6971
70-  this . #defaultOpts  =   rootOpts ; 
72+  const   token   =   TokenProvider . parseToken ( [ adminOpts ?. adminToken ,   rootOpts . adminOptions . adminToken ] ,   'admin token' ) ; 
7173
72-  const  combinedAdminOpts  =  { 
73-  ...rootOpts . adminOptions , 
74-  ...adminOpts , 
75-  adminToken : TokenProvider . parseToken ( adminOpts ?. adminToken  ??  rootOpts . adminOptions . adminToken ) , 
74+  this . #defaultOpts =  { 
75+  ...rootOpts , 
76+  adminOptions : { 
77+  endpointUrl : adminOpts ?. endpointUrl  ||  rootOpts . adminOptions . endpointUrl , 
78+  adminToken : token , 
79+  logging : Logger . advanceConfig ( rootOpts . adminOptions . logging ,  adminOpts ?. logging ) , 
80+  } , 
81+  dbOptions : { 
82+  ...rootOpts . dbOptions , 
83+  token : TokenProvider . parseToken ( [ rootOpts . dbOptions . token ,  token ] ,  'admin token' ) , 
84+  } , 
7685 } ; 
7786
7887 this . #httpClient =  new  DevOpsAPIHttpClient ( { 
79-  baseUrl : combinedAdminOpts . endpointUrl  ||  DEFAULT_DEVOPS_API_ENDPOINTS . prod , 
80-  monitorCommands :  combinedAdminOpts . monitorCommands , 
88+  baseUrl : this . #defaultOpts . adminOptions . endpointUrl  ||  DEFAULT_DEVOPS_API_ENDPOINTS . prod , 
89+  logging :  this . #defaultOpts . adminOptions . logging , 
8190 emitter : rootOpts . emitter , 
8291 fetchCtx : rootOpts . fetchCtx , 
8392 userAgent : rootOpts . userAgent , 
84-  tokenProvider : combinedAdminOpts . adminToken , 
93+  tokenProvider : this . #defaultOpts . adminOptions . adminToken , 
8594 } ) ; 
8695 } 
8796
@@ -245,7 +254,8 @@ export class AstraAdmin {
245254
246255 public  dbAdmin ( endpointOrId : string ,  regionOrOptions ?: string  |  DbSpawnOptions ,  maybeOptions ?: DbSpawnOptions ) : AstraDbAdmin  { 
247256 /* @ts -expect-error - calls internal representation of method */ 
248-  return  this . db ( endpointOrId ,  regionOrOptions ,  maybeOptions ) . admin ( this . #defaultOpts. adminOptions ) ; 
257+  return  this . db ( endpointOrId ,  regionOrOptions ,  maybeOptions ) 
258+  . admin ( this . #defaultOpts. adminOptions ) ; 
249259 } 
250260
251261 /** 
@@ -396,8 +406,9 @@ export class AstraAdmin {
396406 options, 
397407 } ) ; 
398408
399-  const  db  =  this . db ( resp . headers . location ,  definition . region ,  {  ...options ?. dbOptions ,  keyspace : definition . keyspace  } ) ; 
400-  return  db . admin ( this . #defaultOpts. adminOptions ) ; 
409+  const  endpoint  =  buildAstraEndpoint ( resp . headers . location ,  definition . region ) ; 
410+  const  db  =  this . db ( endpoint ,  {  ...options ?. dbOptions ,  keyspace : definition . keyspace  } ) ; 
411+  return  new  AstraDbAdmin ( db ,  this . #defaultOpts,  { } ,  this . #defaultOpts. adminOptions . adminToken ,  endpoint ) ; 
401412 } 
402413
403414 /** 
@@ -425,7 +436,7 @@ export class AstraAdmin {
425436 * 
426437 * @remarks  Use with caution. Wear a harness. Don't say I didn't warn you. 
427438 */ 
428-  async  dropDatabase ( db : Db  |  string ,  options ?: AdminBlockingOptions ) : Promise < void >  { 
439+  public   async  dropDatabase ( db : Db  |  string ,  options ?: AdminBlockingOptions ) : Promise < void >  { 
429440 const  id  =  typeof  db  ===  'string'  ? db  : db . id ; 
430441
431442 await  this . #httpClient. requestLongRunning ( { 
@@ -440,7 +451,7 @@ export class AstraAdmin {
440451 } ) ; 
441452 } 
442453
443-  private  get  _httpClient ( )  { 
454+  public  get  _httpClient ( )  { 
444455 return  this . #httpClient; 
445456 } 
446457} 
0 commit comments