
import { Injectable } from '@nestjs/common';
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
import axios from 'axios';
import { GoogleAuth, JWT } from 'google-auth-library';



@Injectable()
export class DynamicDatabaseService {
  createDynamicDatabaseConfig(ip: string, databaseName: string, password: string,username:string): TypeOrmModuleOptions {
    return {
      name:`connection${Math.floor(10000 + Math.random() * 90000)}`,
      type: 'mysql',
      host: ip,
      port: 3306,
    //   username: 'root',
      username: username,
      password: password,
      database: databaseName,
      entities: ["dist/**/*.entity{.ts,.js}"],
      synchronize: false, 
    };
  }

  private readonly SCOPES = ['https://www.googleapis.com/auth/firebase.messaging']; 

  async getAccessToken(): Promise<string> {
    const jwtClient = new JWT({
      email: `firebase-adminsdk-ux6xs@aayush-phr-3da43.iam.gserviceaccount.com`,
      key: `-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCMg8nGMSKMvrVi\ng6QwkQwg0+CiraPzm34Vd6Eez6oPbcesPyimHkiU6DuRwQsCX7P2jtzOTcKyaHyc\nbrCAh3o/86G9qxR5PoJU7rK6dSRf++tdOrlW2IEiIHSh3W/iZXT5vSmQKXYDjUsj\n7Fsd8H2kjoWV9K1da81oIumJIzqvC874bGugVrL2OtiJeQ5n43P15DfiBZ1tageZ\nB6w05gSM5DGlx0eWTVQqT3FxCZ7U3OnK24ruBUcE/1VUUDydST+ZIZaVQqe9muxb\nwJPkL6CXUgt6IZHt+ntqsiqHU0hptLvx39V7TmqZrAGrkkSLw44hI2bDom449nPj\nBQBdGyvjAgMBAAECggEAAThPsynQC/rH5mAQN9+6hDpys9bgGohaEuOkAXl6F4Iz\nfppZxv9yT+CoS76qUs3z6QsafawNKbFgi5cmbyc993otCFGI7viM9yHPaXEE7NRq\nGbgdzdQ5Yst3V8RtaUDKQDTVPIwvmx5J7bjqnZrt7FTUchXav3nlIadT8b3dj5F+\nYj7GFGARR4ws6yDgugynNxtCjTAzUX99PnyZz6RCU0MnaviLMJTKr4aiS7+gW8U8\nZmmBkIlPtbNda6QrXqO/7kitO5z5Oyzrv3qMv0IzGJ7rlHwCbu6hSAHwkAPI9lVD\n0s87aGGzN+EPCtvnQmddDlKcV/1mfFChJ3E4aSQw0QKBgQDBlp3VZajkbzbfgMGd\naxxtk4i21vjkpjS6XCUQ3K/AIixFdYe+BtnDOPUJra0EqUVKjenKlYIkmrUw6SSj\nAP44u7PKMo0iWaA6CadhoXU5DyNd1JYLKZXIRH25qNNt2cY4AhUIwVx8DLujRm+/\na2bVBFh1M3HF1+PeI7WdCecpiQKBgQC50N1JrVchCNXfQJjpmLnbwCzd+SowI/oH\ngyQo9TMh/SyX/6zLMPprdQiZ+y+QF/qGprdF81Z7fg1ZgWaImYo1MNbYZx2FUtBw\ndChkSYA0xdAbPj/6a7tv01JUGGG4UNd/2p8PfLVfqvVaYgKF41gEY5Q0VHeHqegV\nCkbn4ueLCwKBgQCguTbDNErblUY+m7yjwIjypLmt657q3t8KFnSjokW8Q+LzrBeN\n+kwTnBc8+Neb9hlUQ6xmCGjrkRJ70CUdvDZUzeoAJqYsbbLsXJV+JjmXrOzU+ymz\njMwRYGPtn7AiFNtQJtJl2Xu6divW7CTdDQNsOdZjP9nmw04pYQZoog8s2QKBgGyK\nTtjcwkpvqM6SI0BAkECHDy5Sf4xDV6fPuO2b3VR7WPMozDyczYq7gFzB11SqTRMe\ni2v26ouUZCPmbIhad9r+PmGGSj4407z8fSOns5Yf/qILSL/08jYuEKdC3sIVpuvu\nPn+Db0cEy/ER0zt2Q1G9ATNYK8I5Q3IW4LhPWMVlAoGBAKctXBQjUFRJZpVsHK4O\nGjb/6EY46FKuNhK9YaQ3W+pXy7uZTOXttL0/cepZq/VT3qOz5l65N/3d2/G2mHwJ\ntRF/luFQ2aVJC+zVSF029UcQgh/CxSpqsaLuljKx5edbEhzIsPLMVG1w1LPpubP+\nfzss/jUDsETu71Gk4KxUwVMX\n-----END PRIVATE KEY-----\n`,
      scopes: this.SCOPES,
    });

    try {
      console.log("aaa");
      
      const tokens = await jwtClient.authorize();
      return tokens.access_token;
    } catch (err) {
      console.log(err,"errorae");
      
    }
  }


}
