// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'recurrent.dart';

// **************************************************************************
// IsarCollectionGenerator
// **************************************************************************

// coverage:ignore-file
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types

extension GetRecurringTransactionCollection on Isar {
  IsarCollection<RecurringTransaction> get recurringTransactions =>
      this.collection();
}

const RecurringTransactionSchema = CollectionSchema(
  name: r'RecurringTransaction',
  id: 969840479390105118,
  properties: {
    r'days': PropertySchema(id: 0, name: r'days', type: IsarType.long),
    r'lastExecution': PropertySchema(
      id: 1,
      name: r'lastExecution',
      type: IsarType.dateTime,
    ),
  },
  estimateSize: _recurringTransactionEstimateSize,
  serialize: _recurringTransactionSerialize,
  deserialize: _recurringTransactionDeserialize,
  deserializeProp: _recurringTransactionDeserializeProp,
  idName: r'id',
  indexes: {},
  links: {
    r'template': LinkSchema(
      id: -8891369755965227865,
      name: r'template',
      target: r'TransactionTemplate',
      single: true,
    ),
    r'account': LinkSchema(
      id: -6028551496614242115,
      name: r'account',
      target: r'Account',
      single: true,
    ),
  },
  embeddedSchemas: {},
  getId: _recurringTransactionGetId,
  getLinks: _recurringTransactionGetLinks,
  attach: _recurringTransactionAttach,
  version: '3.1.0+1',
);

int _recurringTransactionEstimateSize(
  RecurringTransaction object,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  var bytesCount = offsets.last;
  return bytesCount;
}

void _recurringTransactionSerialize(
  RecurringTransaction object,
  IsarWriter writer,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  writer.writeLong(offsets[0], object.days);
  writer.writeDateTime(offsets[1], object.lastExecution);
}

RecurringTransaction _recurringTransactionDeserialize(
  Id id,
  IsarReader reader,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  final object = RecurringTransaction();
  object.days = reader.readLong(offsets[0]);
  object.id = id;
  object.lastExecution = reader.readDateTimeOrNull(offsets[1]);
  return object;
}

P _recurringTransactionDeserializeProp<P>(
  IsarReader reader,
  int propertyId,
  int offset,
  Map<Type, List<int>> allOffsets,
) {
  switch (propertyId) {
    case 0:
      return (reader.readLong(offset)) as P;
    case 1:
      return (reader.readDateTimeOrNull(offset)) as P;
    default:
      throw IsarError('Unknown property with id $propertyId');
  }
}

Id _recurringTransactionGetId(RecurringTransaction object) {
  return object.id;
}

List<IsarLinkBase<dynamic>> _recurringTransactionGetLinks(
  RecurringTransaction object,
) {
  return [object.template, object.account];
}

void _recurringTransactionAttach(
  IsarCollection<dynamic> col,
  Id id,
  RecurringTransaction object,
) {
  object.id = id;
  object.template.attach(
    col,
    col.isar.collection<TransactionTemplate>(),
    r'template',
    id,
  );
  object.account.attach(col, col.isar.collection<Account>(), r'account', id);
}

extension RecurringTransactionQueryWhereSort
    on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhere> {
  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhere>
  anyId() {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(const IdWhereClause.any());
    });
  }
}

extension RecurringTransactionQueryWhere
    on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhereClause> {
  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
  idEqualTo(Id id) {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
  idNotEqualTo(Id id) {
    return QueryBuilder.apply(this, (query) {
      if (query.whereSort == Sort.asc) {
        return query
            .addWhereClause(
              IdWhereClause.lessThan(upper: id, includeUpper: false),
            )
            .addWhereClause(
              IdWhereClause.greaterThan(lower: id, includeLower: false),
            );
      } else {
        return query
            .addWhereClause(
              IdWhereClause.greaterThan(lower: id, includeLower: false),
            )
            .addWhereClause(
              IdWhereClause.lessThan(upper: id, includeUpper: false),
            );
      }
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
  idGreaterThan(Id id, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(
        IdWhereClause.greaterThan(lower: id, includeLower: include),
      );
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
  idLessThan(Id id, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(
        IdWhereClause.lessThan(upper: id, includeUpper: include),
      );
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
  idBetween(
    Id lowerId,
    Id upperId, {
    bool includeLower = true,
    bool includeUpper = true,
  }) {
    return QueryBuilder.apply(this, (query) {
      return query.addWhereClause(
        IdWhereClause.between(
          lower: lowerId,
          includeLower: includeLower,
          upper: upperId,
          includeUpper: includeUpper,
        ),
      );
    });
  }
}

extension RecurringTransactionQueryFilter
    on
        QueryBuilder<
          RecurringTransaction,
          RecurringTransaction,
          QFilterCondition
        > {
  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  daysEqualTo(int value) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.equalTo(property: r'days', value: value),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  daysGreaterThan(int value, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.greaterThan(
          include: include,
          property: r'days',
          value: value,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  daysLessThan(int value, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.lessThan(
          include: include,
          property: r'days',
          value: value,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  daysBetween(
    int lower,
    int upper, {
    bool includeLower = true,
    bool includeUpper = true,
  }) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.between(
          property: r'days',
          lower: lower,
          includeLower: includeLower,
          upper: upper,
          includeUpper: includeUpper,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  idEqualTo(Id value) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.equalTo(property: r'id', value: value),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  idGreaterThan(Id value, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.greaterThan(
          include: include,
          property: r'id',
          value: value,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  idLessThan(Id value, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.lessThan(
          include: include,
          property: r'id',
          value: value,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  idBetween(
    Id lower,
    Id upper, {
    bool includeLower = true,
    bool includeUpper = true,
  }) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.between(
          property: r'id',
          lower: lower,
          includeLower: includeLower,
          upper: upper,
          includeUpper: includeUpper,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  lastExecutionIsNull() {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        const FilterCondition.isNull(property: r'lastExecution'),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  lastExecutionIsNotNull() {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        const FilterCondition.isNotNull(property: r'lastExecution'),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  lastExecutionEqualTo(DateTime? value) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.equalTo(property: r'lastExecution', value: value),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  lastExecutionGreaterThan(DateTime? value, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.greaterThan(
          include: include,
          property: r'lastExecution',
          value: value,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  lastExecutionLessThan(DateTime? value, {bool include = false}) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.lessThan(
          include: include,
          property: r'lastExecution',
          value: value,
        ),
      );
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  lastExecutionBetween(
    DateTime? lower,
    DateTime? upper, {
    bool includeLower = true,
    bool includeUpper = true,
  }) {
    return QueryBuilder.apply(this, (query) {
      return query.addFilterCondition(
        FilterCondition.between(
          property: r'lastExecution',
          lower: lower,
          includeLower: includeLower,
          upper: upper,
          includeUpper: includeUpper,
        ),
      );
    });
  }
}

extension RecurringTransactionQueryObject
    on
        QueryBuilder<
          RecurringTransaction,
          RecurringTransaction,
          QFilterCondition
        > {}

extension RecurringTransactionQueryLinks
    on
        QueryBuilder<
          RecurringTransaction,
          RecurringTransaction,
          QFilterCondition
        > {
  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  template(FilterQuery<TransactionTemplate> q) {
    return QueryBuilder.apply(this, (query) {
      return query.link(q, r'template');
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  templateIsNull() {
    return QueryBuilder.apply(this, (query) {
      return query.linkLength(r'template', 0, true, 0, true);
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  account(FilterQuery<Account> q) {
    return QueryBuilder.apply(this, (query) {
      return query.link(q, r'account');
    });
  }

  QueryBuilder<
    RecurringTransaction,
    RecurringTransaction,
    QAfterFilterCondition
  >
  accountIsNull() {
    return QueryBuilder.apply(this, (query) {
      return query.linkLength(r'account', 0, true, 0, true);
    });
  }
}

extension RecurringTransactionQuerySortBy
    on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortBy> {
  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  sortByDays() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'days', Sort.asc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  sortByDaysDesc() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'days', Sort.desc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  sortByLastExecution() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'lastExecution', Sort.asc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  sortByLastExecutionDesc() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'lastExecution', Sort.desc);
    });
  }
}

extension RecurringTransactionQuerySortThenBy
    on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortThenBy> {
  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  thenByDays() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'days', Sort.asc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  thenByDaysDesc() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'days', Sort.desc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  thenById() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'id', Sort.asc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  thenByIdDesc() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'id', Sort.desc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  thenByLastExecution() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'lastExecution', Sort.asc);
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
  thenByLastExecutionDesc() {
    return QueryBuilder.apply(this, (query) {
      return query.addSortBy(r'lastExecution', Sort.desc);
    });
  }
}

extension RecurringTransactionQueryWhereDistinct
    on QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct> {
  QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
  distinctByDays() {
    return QueryBuilder.apply(this, (query) {
      return query.addDistinctBy(r'days');
    });
  }

  QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
  distinctByLastExecution() {
    return QueryBuilder.apply(this, (query) {
      return query.addDistinctBy(r'lastExecution');
    });
  }
}

extension RecurringTransactionQueryProperty
    on
        QueryBuilder<
          RecurringTransaction,
          RecurringTransaction,
          QQueryProperty
        > {
  QueryBuilder<RecurringTransaction, int, QQueryOperations> idProperty() {
    return QueryBuilder.apply(this, (query) {
      return query.addPropertyName(r'id');
    });
  }

  QueryBuilder<RecurringTransaction, int, QQueryOperations> daysProperty() {
    return QueryBuilder.apply(this, (query) {
      return query.addPropertyName(r'days');
    });
  }

  QueryBuilder<RecurringTransaction, DateTime?, QQueryOperations>
  lastExecutionProperty() {
    return QueryBuilder.apply(this, (query) {
      return query.addPropertyName(r'lastExecution');
    });
  }
}