Skip to content

Commit

Permalink
Add logger to IndexProvider constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
MXPOL committed Mar 6, 2024
1 parent 4bb6e7c commit 1ef8c94
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
2 changes: 1 addition & 1 deletion libs/external-db-mysql/src/connection_provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default (cfg: MySqlConfig, _poolOptions: Record<string, unknown>, logger?
const filterParser = new FilterParser()
const dataProvider = new DataProvider(pool, filterParser, logger)
const schemaProvider = new SchemaProvider(pool, logger)
const indexProvider = new IndexProvider(pool)
const indexProvider = new IndexProvider(pool, logger)

return { dataProvider, schemaProvider, databaseOperations, indexProvider, connection: pool, cleanup: async() => await pool.end() }
}
9 changes: 6 additions & 3 deletions libs/external-db-mysql/src/mysql_index_provider.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import { promisify } from 'util'
import { errors } from '@wix-velo/velo-external-db-commons'
import { DomainIndex, IIndexProvider, DomainIndexStatus } from '@wix-velo/velo-external-db-types'
import { ILogger } from '@wix-velo/external-db-logger'
import { Pool as MySqlPool } from 'mysql'
import { MySqlQuery } from './types'
import { escapeId, escapeTable } from './mysql_utils'

export default class IndexProvider implements IIndexProvider {
pool: MySqlPool
query: MySqlQuery
logger?: ILogger
failedIndexes: { [x: string]: DomainIndex } = {}
constructor(pool: any) {
constructor(pool: any, logger?: ILogger) {
this.pool = pool
this.logger = logger
this.query = promisify(this.pool.query).bind(this.pool)
}

Expand Down Expand Up @@ -46,7 +49,7 @@ export default class IndexProvider implements IIndexProvider {

private async getActiveIndexesFor(collectionName: string): Promise<{ [x: string]: DomainIndex }> {
const res = await this.query(`SHOW INDEXES FROM ${escapeTable(collectionName)}`)
.catch(this.translateErrorCodes)
.catch(this.translateErrorCodes)
const indexes: { [x: string]: DomainIndex } = {}

res.forEach((r: { Key_name: string; Column_name: string; Non_unique: number }) => {
Expand Down Expand Up @@ -98,7 +101,7 @@ export default class IndexProvider implements IIndexProvider {
private async returnStatusAfterXSeconds(x: number, promise: Promise<any>, index: DomainIndex): Promise<DomainIndexStatus> {
return new Promise((resolve, reject) => {
promise.catch((e: any) => {
console.log('failed to create index', e)
this.logger?.error('failed to create index', e)
this.failedIndexes[index.name] = ({ ...index, status: DomainIndexStatus.FAILED, error: this.translateErrorCodes(e) })
reject(this.translateErrorCodes(e))
})
Expand Down

0 comments on commit 1ef8c94

Please sign in to comment.