From c7df49b23e1732db20376a39f7ee82541c8dde3b Mon Sep 17 00:00:00 2001 From: Quinn Chaffee Date: Mon, 20 Aug 2018 11:32:54 -0400 Subject: [PATCH] Fix #97 The issue was `enumItem` looks like: ``` RowDataPacket { COLUMN_NAME: 'gameType', COLUMN_TYPE: 'enum(\'BRACKET\',\'PICKEM\')', DATA_TYPE: 'enum' } ``` I'm sure there is a nicer + tested solution, but unfortunately I don't have the time to submit that, sorry! --- src/schemaMysql.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/schemaMysql.ts b/src/schemaMysql.ts index f5beff1..f267a4d 100644 --- a/src/schemaMysql.ts +++ b/src/schemaMysql.ts @@ -112,11 +112,14 @@ export class MysqlDatabase implements Database { params ) rawEnumRecords.forEach((enumItem: { column_name: string, column_type: string, data_type: string }) => { - const enumName = MysqlDatabase.getEnumNameFromColumn(enumItem.data_type, enumItem.column_name) - const enumValues = MysqlDatabase.parseMysqlEnumeration(enumItem.column_type) + const dataType = enumItem.data_type || enumItem.DATA_TYPE + const columnType = enumItem.column_type || enumItem.COLUMN_TYPE + const columnName = enumItem.column_name || enumItem.COLUMN_NAME + const enumName = MysqlDatabase.getEnumNameFromColumn(dataType, columnName) + const enumValues = MysqlDatabase.parseMysqlEnumeration(columnType) if (enums[enumName] && !isEqual(enums[enumName], enumValues)) { const errorMsg = `Multiple enums with the same name and contradicting types were found: ` + - `${enumItem.column_name}: ${JSON.stringify(enums[enumName])} and ${JSON.stringify(enumValues)}` + `${enumItem.column_name || enumItem.COLUMN_NAME}: ${JSON.stringify(enums[enumName])} and ${JSON.stringify(enumValues)}` throw new Error(errorMsg) } enums[enumName] = enumValues