/// <summary> /// Extract IndexKey Definition from context /// </summary> /// <param name="context"></param> /// <returns></returns> public static MySqlKeyDefinition ExtractIndexKey(IndexDeclarationContext context) { if (context == null) { throw new ArgumentOutOfRangeException($"{nameof(context)} is null"); } var simpleIndexDeclarationContext = context.GetChild <SimpleIndexDeclarationContext>(); return(ExtractKeyDefinition(simpleIndexDeclarationContext)); }
/// <summary> /// Listener for Index Index detection /// </summary> /// <remarks> /// override method <see cref="EnterIndexColumnNames"/> includes PK and secondary key and it not contains index name. Therefore let's drill down declaration. /// </remarks> /// <param name="context"></param> public override void EnterIndexDeclaration([NotNull] IndexDeclarationContext context) { base.EnterIndexDeclaration(context); // index (secondary key) var definition = MySqlKeyDefinition.ExtractIndexKey(context); TableDefinition.AddIndexKey(definition); // map IndexKey and existing Column reference definition.AddIndexKeyReferenceOnColumn(TableDefinition.Columns); }