foreignKey method

void foreignKey(
  1. String name, {
  2. String? reference,
  3. bool nullable = false,
  4. bool unique = false,
  5. String? defaultValue,
  6. OnDelete onDelete = OnDelete.restrict,
})

Add a foreign key to a column

Implementation

void foreignKey(String name,
    {String? reference,
    bool nullable = false,
    bool unique = false,
    String? defaultValue,
    OnDelete onDelete = OnDelete.restrict}) {
  var q = "$name INTEGER";
  if (unique) {
    q += " UNIQUE";
  }
  if (!nullable) {
    q += " NOT NULL";
  }
  if (defaultValue != null) {
    q += " DEFAULT $defaultValue";
  }
  String fk;
  fk = "  FOREIGN KEY ($name)\n";
  reference ??= name;
  fk += "  REFERENCES $reference(id)\n";
  fk += "  ON DELETE ";
  switch (onDelete) {
    case OnDelete.cascade:
      fk += "CASCADE";
      break;
    case OnDelete.setNull:
      fk += "SET NULL";
      break;
    case OnDelete.setDefault:
      fk += "SET DEFAULT";
      break;
    default:
      fk += "RESTRICT";
  }
  _columns.add(q);
  _fkConstraints.add(fk);
  _columnsData.add(DbColumn(
      name: name,
      unique: unique,
      nullable: nullable,
      defaultValue: defaultValue,
      type: DbColumnType.integer,
      isForeignKey: true,
      reference: reference,
      onDelete: onDelete));
}