toString method

  1. @override
String toString()
override

A string representation of this object.

Some classes have a default textual representation, often paired with a static parse function (like int.parse). These classes will provide the textual representation as their string representation.

Other classes have no meaningful textual representation that a program will care about. Such classes will typically override toString to provide useful information when inspecting the object, mainly for debugging or logging.

Implementation

@override
String toString() {
  final String toString = '''
     // region ${_table.modelName}FilterBuilder
class ${_table.modelName}FilterBuilder extends ConjunctionBase {
${_table.modelName}FilterBuilder(${_table.modelName} obj, bool? getIsDeleted) : super(obj,getIsDeleted) {
  _mn${_table.modelName} = obj._mn${_table.modelName};
  ${_table.objectType == ObjectType.table ? '_softDeleteActivated = obj.softDeleteActivated;' : ''}
}

${_table.objectType == ObjectType.table ? 'bool _softDeleteActivated = false;' : ''}
${_table.modelName}Manager? _mn${_table.modelName};

/// put the sql keyword 'AND'
@override
${_table.modelName}FilterBuilder get and {
  super.and;
  return this;
}

/// put the sql keyword 'OR'
@override
${_table.modelName}FilterBuilder get or {
  super.or;
  return this;
}

/// open parentheses
@override
${_table.modelName}FilterBuilder get startBlock {
  super.startBlock;
  return this;
}

/// String whereCriteria, write raw query without 'where' keyword. Like this: 'field1 like 'test%' and field2 = 3'
@override
${_table.modelName}FilterBuilder where(String? whereCriteria, {dynamic parameterValue}) {
  super.where(whereCriteria, parameterValue: parameterValue);
  return this;
}



/// page = page number,
/// pagesize = row(s) per page
@override
${_table.modelName}FilterBuilder page(int page, int pagesize) {
  super.page(page,pagesize);
  return this;
}

/// int count = LIMIT
@override
${_table.modelName}FilterBuilder top(int count) {
  super.top(count);
  return this;
}

/// close parentheses
@override
${_table.modelName}FilterBuilder get endBlock {
  super.endBlock;
  return this;
}

/// argFields might be String or List<String>.
/// Example 1: argFields='name, date'
/// Example 2: argFields = ['name', 'date']
@override
${_table.modelName}FilterBuilder orderBy(dynamic argFields) {
  super.orderBy(argFields);
  return this;
}


/// argFields might be String or List<String>.
/// Example 1: argFields='field1, field2'
/// Example 2: argFields = ['field1', 'field2']
@override
${_table.modelName}FilterBuilder orderByDesc(dynamic argFields) {
  super.orderByDesc(argFields);
  return this;
}

/// argFields might be String or List<String>.
/// Example 1: argFields='field1, field2'
/// Example 2: argFields = ['field1', 'field2']
@override
${_table.modelName}FilterBuilder groupBy(dynamic argFields) {
  super.groupBy(argFields);
  return this;
}

/// argFields might be String or List<String>.
/// Example 1: argFields='name, date'
/// Example 2: argFields = ['name', 'date']
@override
${_table.modelName}FilterBuilder having(dynamic argFields) {
  super.having(argFields);
  return this;
}
${_table.modelName}Field _setField(${_table.modelName}Field? field, String colName, DbType dbtype) {
  return ${_table.modelName}Field(this)
  ..param = DbParameter(
      dbType: dbtype,
      columnName: colName,
      wStartBlock: openedBlock);
}

$_createObjectFieldProperty


${_table.objectType == ObjectType.table ? '''

/// Deletes List<${_table.modelName}> bulk by query
///
/// <returns>BoolResult res.success= true (Deleted), false (Could not be deleted)
@override
Future<BoolResult> delete([bool hardDelete=false]) async {
buildParameters();
var r = BoolResult(success: false);
$_deleteMethodList
  if(_softDeleteActivated && !hardDelete) {
    r = await _mn${_table.modelName}!.updateBatch(qparams,{'isDeleted':1}); }
else {
    r = await _mn${_table.modelName}!.delete(qparams); }
return r;
}
$_recoverMethodList

/// using:
/// update({'fieldName': Value})
/// fieldName must be String. Value is dynamic, it can be any of the (int, bool, String.. )
@override
Future<BoolResult> update(Map<String, dynamic> values) {
  buildParameters();
  if (qparams.limit! > 0 || qparams.offset! > 0) {
    qparams.whereString = '${_table.primaryKeyNames[0]} IN (SELECT ${_table.primaryKeyNames[0]} from ${_table.tableName} \${qparams.whereString!.isNotEmpty ? 'WHERE \${qparams.whereString}': ''}\${qparams.limit!>0 ? ' LIMIT \${qparams.limit}':''}\${qparams.offset!>0 ? ' OFFSET \${qparams.offset}':''})';
  }
   return _mn${_table.modelName}!.updateBatch(qparams, values);
}''' : ''}
/// This method always returns [${_table.modelName}] Obj if exist, otherwise returns null
${commentPreload.replaceAll('methodname', 'toSingle')}
/// <returns> ${_table.modelName}?
@override
Future<${_table.modelName}?> toSingle({bool preload=false, List<String>? preloadFields, bool loadParents=false, List<String>? loadedFields}) async{
  buildParameters(pSize: 1);
  final objFuture = _mn${_table.modelName}!.toList(qparams);
  final data = await objFuture;
  ${_table.modelName}? obj;
  if (data.isNotEmpty) { obj = ${_table.modelName}.fromMap(data[0] as Map<String, dynamic>);
  $_toOnetoOneCollections
  $_toOnetoManyCollections
  $_createObjectRelationsPreLoad
   } else {obj = null;}
  return obj;
}

/// This method always returns [${_table.modelName}]
${commentPreload.replaceAll('methodname', 'toSingle')}
/// <returns> ${_table.modelName}?
@override
Future<${_table.modelName}> toSingleOrDefault({bool preload=false, List<String>? preloadFields, bool loadParents=false, List<String>? loadedFields}) async{
 return await toSingle(
          preload: preload,
          preloadFields: preloadFields,
          loadParents: loadParents,
          loadedFields: loadedFields) ??
      ${_table.modelName}();
}
/// This method returns int. [${_table.modelName}]
/// <returns>int
@override
Future<int> toCount([VoidCallback Function(int c)? ${_table._modelLowerCase}Count]) async {
  buildParameters();
  qparams.selectColumns = ['COUNT(1) AS CNT'];
  final ${toPluralLowerName(_table._modelLowerCase)}Future = await _mn${_table.modelName}!.toList(qparams);
  final int count = ${toPluralLowerName(_table._modelLowerCase)}Future[0]['CNT'] as int;
  if(${_table._modelLowerCase}Count != null) {${_table._modelLowerCase}Count (count);}
  return count;
}

/// This method returns List<${_table.modelName}> [${_table.modelName}]
${commentPreload.replaceAll('methodname', 'toList')}
/// <returns>List<${_table.modelName}>
@override
Future<List<${_table.modelName}>> toList({bool preload=false, List<String>? preloadFields, bool loadParents=false, List<String>? loadedFields}) async {
  final data = await toMapList();
  final List<${_table.modelName}> ${toPluralLowerName(_table._modelLowerCase)}Data = await ${_table.modelName}.fromMapList(data,preload: preload, preloadFields: preloadFields, loadParents: loadParents, loadedFields:loadedFields, setDefaultValues: qparams.selectColumns == null);
  return ${toPluralLowerName(_table._modelLowerCase)}Data;
}

/// This method returns Json String [${_table.modelName}]
@override
Future<String> toJson() async {
  final list = <dynamic>[];
  final data = await toList();
  for (var o in data) {
    list.add(o.toMap(forJson: true));
  }
  return json.encode(list);
}

/// This method returns Json String. [${_table.modelName}]
@override
Future<String> toJsonWithChilds() async {
  final list = <dynamic>[];
  final data = await toList();
  for (var o in data) {
    list.add(await o.toMapWithChildren(false,true));
  }
  return json.encode(list);
}

/// This method returns List<dynamic>. [${_table.modelName}]
/// <returns>List<dynamic>
@override
Future<List<dynamic>> toMapList() async {
  buildParameters();
  return await _mn${_table.modelName}!.toList(qparams);
}

${_isFormTable ? '''/// Returns List<DropdownMenuItem<${_table.modelName}>>
Future<List<DropdownMenuItem<${_table.modelName}>>> toDropDownMenu(
    String displayTextColumn,
    [VoidCallback Function(List<DropdownMenuItem<${_table.modelName}>> o)? dropDownMenu]) async {
  buildParameters();
  final ${toPluralLowerName(_table._modelLowerCase)}Future = _mn${_table.modelName}!.toList(qparams);

  final data = await ${toPluralLowerName(_table._modelLowerCase)}Future;
  final int count = data.length;
  final List<DropdownMenuItem<${_table.modelName}>> items = []
  ..add(DropdownMenuItem(
    value: ${_table.modelName}(),
    child: Text('-'),
  ));
  for (int i = 0; i < count; i++) {
    items.add(
      DropdownMenuItem(
        value: ${_table.modelName}.fromMap(data[i] as Map<String, dynamic>),
        child: Text(data[i][displayTextColumn].toString()),
      ),
    );
  }
  if (dropDownMenu != null) {
    dropDownMenu(items);
  }
  return items;
}
  /// Returns List<DropdownMenuItem<${_table.primaryKeyTypes[0]}>>
Future<List<DropdownMenuItem<${_table.primaryKeyTypes[0]}>>> toDropDownMenuInt(
    String displayTextColumn,
	  [VoidCallback Function(List<DropdownMenuItem<${_table.primaryKeyTypes[0]}>> o)? dropDownMenu]) async {
  buildParameters();
  qparams.selectColumns=['${_table.primaryKeyNames[0]}',displayTextColumn];
  final ${toPluralLowerName(_table._modelLowerCase)}Future = _mn${_table.modelName}!.toList(qparams);

  final data = await ${toPluralLowerName(_table._modelLowerCase)}Future;
  final int count = data.length;
  final List<DropdownMenuItem<${_table.primaryKeyTypes[0]}>> items = []
  ..add(DropdownMenuItem(
    value: ${_table.primaryKeyTypes[0] == 'int' ? '0' : '\'0\''},
    child: Text('-'),
  ));
  for (int i = 0; i < count; i++) {
    items.add(
      DropdownMenuItem(
        value: data[i]['${_table.primaryKeyNames[0]}']${_table.primaryKeyTypes[0] == 'int' ? ' as int' : '.toString()'},
        child: Text(data[i][displayTextColumn].toString()),
      ),
    );
  }
  if (dropDownMenu != null) {
    dropDownMenu(items);
  }
  return items;
}
''' : ''}
/// This method returns Primary Key List SQL and Parameters retVal = Map<String,dynamic>. [${_table.modelName}]
/// retVal['sql'] = SQL statement string, retVal['args'] = whereArguments List<dynamic>;
/// <returns>List<String>
@override
Map<String,dynamic> toListPrimaryKeySQL([bool buildParams = true]) {
 final Map<String,dynamic> _retVal = <String,dynamic>{};
  if (buildParams) {
    buildParameters();
  }
  _retVal['sql'] = 'SELECT `${_table.primaryKeyNames.join('`')}` FROM ${_table.tableName} WHERE \${qparams.whereString}';
  _retVal['args'] = qparams.whereArguments;
  return _retVal;
}
${_table.primaryKeyNames.length > 1 ? '''/// This method returns Primary Key List<${_table.primaryKeyNames.join(',')}> [${_table.modelName}]
/// <returns>List<${_table.primaryKeyNames.join(',')}>
@override
Future<List<${_table.modelName}>> toListPrimaryKey(
    [bool buildParams = true]) async {
  if (buildParams)
  {buildParameters();}
  qparams.selectColumns = ['${_table.primaryKeyNames.join('\',\'')}'];
  final ${_table._modelLowerCase}Future =
      await _mn${_table.modelName}!.toList(qparams);
  return await ${_table.modelName}.fromMapList(${_table._modelLowerCase}Future);
}''' : _table.primaryKeyNames.length == 1 ? '''/// This method returns Primary Key List<${_table.primaryKeyTypes[0]}>.
/// <returns>List<${_table.primaryKeyTypes[0]}>
@override
Future<List<${_table.primaryKeyTypes[0]}>> toListPrimaryKey([bool buildParams=true]) async {
if(buildParams)
{buildParameters();}
final List<${_table.primaryKeyTypes[0]}> ${_table.primaryKeyNames[0]}Data = <${_table.primaryKeyTypes[0]}>[];
qparams.selectColumns= ['${_table.primaryKeyNames[0]}'];
final ${_table.primaryKeyNames[0]}Future = await _mn${_table.modelName}!.toList(qparams);


  final int count = ${_table.primaryKeyNames[0]}Future.length;
  for (int i = 0; i < count; i++) {
    ${_table.primaryKeyNames[0]}Data.add(${_table.primaryKeyNames[0]}Future[i]['${_table.primaryKeyNames[0]}'] as ${_table.primaryKeyTypes[0]});
  }
  return ${_table.primaryKeyNames[0]}Data;
}''' : ''}



/// Returns List<dynamic> for selected columns. Use this method for 'groupBy' with min,max,avg..  [${_table.modelName}]
/// Sample usage: (see EXAMPLE 4.2 at https://github.com/hhtokpinar/sqfEntity#group-by)
@override
Future<List<dynamic>> toListObject() async {
buildParameters();

final objectFuture = _mn${_table.modelName}!.toList(qparams);

final List<dynamic> objectsData = <dynamic>[];
final data = await objectFuture;
  final int count = data.length;
  for (int i = 0; i < count; i++) {
    objectsData.add(data[i]);
  }
  return objectsData;
}

/// Returns List<String> for selected first column
/// Sample usage: await ${_table.modelName}.select(columnsToSelect: ['columnName']).toListString()
@override
Future<List<String>> toListString([VoidCallback Function(List<String> o)? listString]) async {
buildParameters();

final objectFuture = _mn${_table.modelName}!.toList(qparams);

final List<String> objectsData = <String>[];
final data = await objectFuture;
  final int count = data.length;
  for (int i = 0; i < count; i++) {
    objectsData.add(data[i][qparams.selectColumns![0]].toString());
  }
  if (listString != null) {listString(objectsData);}
  return objectsData;

}
}
// endregion ${_table.modelName}FilterBuilder

     ''';

  return toString;
}