visitInsertStatement method

  1. @override
void visitInsertStatement(
  1. InsertStatement e,
  2. void arg
)
override

Implementation

@override
void visitInsertStatement(InsertStatement e, void arg) {
  visitNullable(e.withClause, arg);

  final mode = e.mode;
  if (mode == InsertMode.insert) {
    keyword(TokenType.insert);
  } else if (mode == InsertMode.replace) {
    keyword(TokenType.replace);
  } else {
    keyword(TokenType.insert);
    keyword(TokenType.or);

    keyword(const {
      InsertMode.insertOrReplace: TokenType.replace,
      InsertMode.insertOrRollback: TokenType.rollback,
      InsertMode.insertOrAbort: TokenType.abort,
      InsertMode.insertOrFail: TokenType.fail,
      InsertMode.insertOrIgnore: TokenType.ignore,
    }[mode]!);
  }

  keyword(TokenType.into);
  visit(e.table, arg);

  if (e.targetColumns.isNotEmpty) {
    symbol('(', spaceBefore: true);
    _join(e.targetColumns, ',');
    symbol(')', spaceAfter: true);
  }

  visit(e.source, arg);
  visitNullable(e.upsert, arg);
  visitNullable(e.returning, arg);
}