Operation<T>.withPayload constructor

Operation<T>.withPayload(
  1. OperationType? operationType,
  2. String? table,
  3. String? opResultId,
  4. T? payload,
)

Implementation

Operation.withPayload(
    this.operationType, this.table, this.opResultId, this.payload) {
  if (payload is DataQueryBuilder) {
    Map mapPayload = (payload as DataQueryBuilder).toJson();
    Map relationQuery = {
      'sortBy': mapPayload['sortBy'],
      'related': (mapPayload['loadRelations'] as String).isNotEmpty
          ? (mapPayload['loadRelations'] as String).split(',')
          : [],
      'relationsDepth': mapPayload['relationsDepth'],
      'relationsPageSize': mapPayload['relationsPageSize'],
    };

    mapPayload['whereClause'] = mapPayload['where'];
    mapPayload['properties'] = mapPayload['props'];
    mapPayload['havingClause'] = mapPayload['having'];
    mapPayload['queryOptions'] = relationQuery;

    mapPayload.removeWhere((key, value) {
      return key == 'sortBy' ||
          key == 'loadRelations' ||
          key == 'relationsDepth' ||
          key == 'relationsPageSize' ||
          key == 'where' ||
          key == 'props' ||
          key == 'having';
    });
    payload = mapPayload as T;
  }
}