visitDriftSpecificNode method

  1. @override
void visitDriftSpecificNode(
  1. DriftSpecificNode e,
  2. void arg
)
override

Implementation

@override
void visitDriftSpecificNode(DriftSpecificNode e, void arg) {
  if (e is DartPlaceholder) {
    e.when(
      isLimit: (_) => keyword(TokenType.limit),
      isOrderBy: (_) {
        keyword(TokenType.order);
        keyword(TokenType.by);
      },
    );

    symbol(r'$', spaceBefore: true);
    symbol(e.name, spaceAfter: true);
  } else if (e is DeclaredStatement) {
    identifier(e.identifier.name);

    if (e.parameters.isNotEmpty) {
      symbol('(');
      _join(e.parameters, ',');
      symbol(')');
    }

    visitNullable(e.as, arg);
    symbol(':', spaceAfter: true);
    visit(e.statement, arg);
    symbol(';');
  } else if (e is DriftFile) {
    for (final stmt in e.statements) {
      visit(stmt, arg);
      buffer.write('\n');
      needsSpace = false;
    }
  } else if (e is ImportStatement) {
    keyword(TokenType.import);
    _stringLiteral(e.importedFile);
    symbol(';', spaceAfter: true);
  } else if (e is StatementParameter) {
    if (e is VariableTypeHint) {
      if (e.isRequired) keyword(TokenType.required);

      visit(e.variable, arg);
      final typeName = e.typeName;
      if (typeName != null) {
        keyword(TokenType.as);
        symbol(typeName, spaceBefore: true, spaceAfter: true);
      }

      if (e.orNull) {
        keyword(TokenType.or);
        keyword(TokenType.$null);
      }
    } else if (e is DartPlaceholderDefaultValue) {
      symbol('\$${e.variableName}', spaceAfter: true);
      symbol('=', spaceBefore: true, spaceAfter: true);
      visit(e.defaultValue, arg);
    } else {
      throw AssertionError('Unknown StatementParameter: $e');
    }
  } else if (e is DriftTableName) {
    keyword(e.useExistingDartClass ? TokenType.$with : TokenType.as);
    identifier(e.overriddenDataClassName);
    final constructor = e.constructorName;
    if (constructor != null) {
      symbol('.');
      identifier(constructor);
    }
  } else if (e is NestedStarResultColumn) {
    identifier(e.tableName);
    symbol('.**', spaceAfter: true);
  } else if (e is NestedQueryColumn) {
    symbol('LIST(', spaceBefore: true);
    visit(e.select, arg);
    symbol(')', spaceAfter: true);

    if (e.as != null) {
      keyword(TokenType.as);
      identifier(e.as!);
    }
  } else if (e is TransactionBlock) {
    visit(e.begin, arg);
    _writeStatements(e.innerStatements);
    visit(e.commit, arg);
  }
}