getPgColumnDefault method

String? getPgColumnDefault(
  1. dynamic defaultValue,
  2. String tableName, {
  3. required String dartType,
})

Implementation

String? getPgColumnDefault(
  dynamic defaultValue,
  String tableName, {
  required String dartType,
}) {
  if (defaultValue == null) return null;

  if ((this == ColumnType.integer || this == ColumnType.bigint) &&
      defaultValue == defaultIntSerial) {
    return "nextval('${tableName}_id_seq'::regclass)";
  }

  switch (this) {
    case ColumnType.timestampWithoutTimeZone:
      if (defaultValue is! String) {
        throw StateError('Invalid DateTime default value: $defaultValue');
      }
      if (defaultValue == defaultDateTimeValueNow) {
        return 'CURRENT_TIMESTAMP';
      }
      var dateTime = DateTime.parse(defaultValue);
      var formatted = DateFormat('yyyy-MM-dd HH:mm:ss.SSS').format(dateTime);
      return "'$formatted'::timestamp without time zone";
    case ColumnType.boolean:
    case ColumnType.integer:
    case ColumnType.doublePrecision:
    case ColumnType.bigint:
      return '$defaultValue';
    case ColumnType.text:
    case ColumnType.json:
      return '$defaultValue::text';
    case ColumnType.uuid:
      return switch (defaultValue) {
        defaultUuidValueRandom => 'gen_random_uuid()',
        defaultUuidValueRandomV7 => 'gen_random_uuid_v7()',
        _ => '$defaultValue::uuid',
      };
    default:
      return '$defaultValue::text';
  }
}