toPgSqlFragment method
Implementation
String toPgSqlFragment() {
String type;
switch (columnType) {
case ColumnType.bigint:
type = 'bigint';
break;
case ColumnType.boolean:
type = 'boolean';
break;
case ColumnType.bytea:
type = 'bytea';
break;
case ColumnType.doublePrecision:
type = 'double precision';
break;
case ColumnType.integer:
type = 'integer';
break;
case ColumnType.json:
type = 'json';
break;
case ColumnType.text:
type = 'text';
break;
case ColumnType.timestampWithoutTimeZone:
type = 'timestamp without time zone';
break;
case ColumnType.uuid:
type = 'uuid';
break;
case ColumnType.vector:
type = 'vector(${vectorDimension!})';
break;
case ColumnType.halfvec:
type = 'halfvec(${vectorDimension!})';
break;
case ColumnType.sparsevec:
type = 'sparsevec(${vectorDimension!})';
break;
case ColumnType.bit:
type = 'bit(${vectorDimension!})';
break;
case ColumnType.unknown:
throw (const FormatException('Unknown column type'));
}
var nullable = isNullable ? '' : ' NOT NULL';
var defaultValue = columnDefault != null ? ' DEFAULT $columnDefault' : '';
// The id column is special.
if (isIdColumn) {
if (isNullable) {
throw const FormatException('The id column must be non-nullable');
}
if (isIntSerialIdColumn) {
type = 'bigserial';
defaultValue = '';
}
type = '$type PRIMARY KEY';
nullable = '';
}
return '"$name" $type$nullable$defaultValue';
}