getInsertSQL function

Either<String, String> getInsertSQL(
  1. List<GenericField> fields,
  2. String fullTableName
)

Implementation

Either<String, String> getInsertSQL(
    List<GenericField> fields, String fullTableName) {
  var columns = '';
  var values = '';
  var returning = '';
  var sql = 'insert into $fullTableName';

  try {
    getAssignedFields(fields).forEach((field) {
      columns += ',${field._fieldName}';
      values += ',${field._getSqlValue()}';
    });

    fields
        .where((element) => element._isSerial || element._isId)
        .forEach((field) {
      returning += ',${field._fieldName}';
    });

    sql +=
        ' (${columns.replaceFirst(',', '')}) values(${values.replaceFirst(',', '')})';
    if (returning.isNotEmpty) {
      sql += ' returning ${returning.replaceFirst(',', '')}';
    }

    return right(sql);
  } on Exception catch (e) {
    return left('Unknown exception: $e');
  }
}