visitColumnConstraint method

  1. @override
void visitColumnConstraint(
  1. ColumnConstraint e,
  2. void arg
)
override

Implementation

@override
void visitColumnConstraint(ColumnConstraint e, void arg) {
  if (e.name != null) {
    keyword(TokenType.constraint);
    identifier(e.name!);
  }

  e.when(
    primaryKey: (primaryKey) {
      keyword(TokenType.primary);
      keyword(TokenType.key);
      _orderingMode(primaryKey.mode);
      _conflictClause(primaryKey.onConflict);
      if (primaryKey.autoIncrement) keyword(TokenType.autoincrement);
    },
    notNull: (notNull) {
      keyword(TokenType.not);
      keyword(TokenType.$null);
      _conflictClause(notNull.onConflict);
    },
    nullable: (nullable) {
      keyword(TokenType.$null);
    },
    unique: (unique) {
      keyword(TokenType.unique);
      _conflictClause(unique.onConflict);
    },
    check: (check) {
      keyword(TokenType.check);
      symbol('(', spaceBefore: true);
      visit(check.expression, arg);
      symbol(')', spaceAfter: true);
    },
    isDefault: (def) {
      keyword(TokenType.$default);
      final expr = def.expression;
      if (expr is Literal) {
        visit(expr, arg);
      } else {
        symbol('(', spaceBefore: true);
        visit(expr, arg);
        symbol(')', spaceAfter: true);
      }
    },
    collate: (collate) {
      keyword(TokenType.collate);
      identifier(collate.collation);
    },
    foreignKey: (foreignKey) {
      visit(foreignKey.clause, arg);
    },
    generatedAs: (generatedAs) {
      keyword(TokenType.generated);
      keyword(TokenType.always);
      keyword(TokenType.as);

      symbol('(', spaceBefore: true);
      visit(generatedAs.expression, arg);
      symbol(')', spaceAfter: true);

      if (generatedAs.stored) {
        keyword(TokenType.stored);
      } else {
        keyword(TokenType.virtual);
      }
    },
    mappedBy: (mappedBy) {
      keyword(TokenType.mapped);
      keyword(TokenType.by);
      dartCode(mappedBy.mapper.dartCode);
    },
  );
}