> allOffsets,
+) {
+ final object = TimerModel(
+ isPaused: reader.readLongOrNull(offsets[0]) ?? 0,
+ ringtoneName: reader.readString(offsets[1]),
+ startedOn: reader.readString(offsets[2]),
+ timeElapsed: reader.readLongOrNull(offsets[3]) ?? 0,
+ timerName: reader.readString(offsets[4]),
+ timerValue: reader.readLong(offsets[5]),
+ );
+ object.timerId = id;
+ return object;
+}
+
+P _timerModelDeserializeProp(
+ IsarReader reader,
+ int propertyId,
+ int offset,
+ Map> allOffsets,
+) {
+ switch (propertyId) {
+ case 0:
+ return (reader.readLongOrNull(offset) ?? 0) as P;
+ case 1:
+ return (reader.readString(offset)) as P;
+ case 2:
+ return (reader.readString(offset)) as P;
+ case 3:
+ return (reader.readLongOrNull(offset) ?? 0) as P;
+ case 4:
+ return (reader.readString(offset)) as P;
+ case 5:
+ return (reader.readLong(offset)) as P;
+ default:
+ throw IsarError('Unknown property with id $propertyId');
+ }
+}
+
+Id _timerModelGetId(TimerModel object) {
+ return object.timerId;
+}
+
+List> _timerModelGetLinks(TimerModel object) {
+ return [];
+}
+
+void _timerModelAttach(IsarCollection col, Id id, TimerModel object) {
+ object.timerId = id;
+}
+
+extension TimerModelQueryWhereSort
+ on QueryBuilder {
+ QueryBuilder anyTimerId() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addWhereClause(const IdWhereClause.any());
+ });
+ }
+}
+
+extension TimerModelQueryWhere
+ on QueryBuilder {
+ QueryBuilder timerIdEqualTo(
+ Id timerId) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addWhereClause(IdWhereClause.between(
+ lower: timerId,
+ upper: timerId,
+ ));
+ });
+ }
+
+ QueryBuilder timerIdNotEqualTo(
+ Id timerId) {
+ return QueryBuilder.apply(this, (query) {
+ if (query.whereSort == Sort.asc) {
+ return query
+ .addWhereClause(
+ IdWhereClause.lessThan(upper: timerId, includeUpper: false),
+ )
+ .addWhereClause(
+ IdWhereClause.greaterThan(lower: timerId, includeLower: false),
+ );
+ } else {
+ return query
+ .addWhereClause(
+ IdWhereClause.greaterThan(lower: timerId, includeLower: false),
+ )
+ .addWhereClause(
+ IdWhereClause.lessThan(upper: timerId, includeUpper: false),
+ );
+ }
+ });
+ }
+
+ QueryBuilder timerIdGreaterThan(
+ Id timerId,
+ {bool include = false}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addWhereClause(
+ IdWhereClause.greaterThan(lower: timerId, includeLower: include),
+ );
+ });
+ }
+
+ QueryBuilder timerIdLessThan(
+ Id timerId,
+ {bool include = false}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addWhereClause(
+ IdWhereClause.lessThan(upper: timerId, includeUpper: include),
+ );
+ });
+ }
+
+ QueryBuilder timerIdBetween(
+ Id lowerTimerId,
+ Id upperTimerId, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addWhereClause(IdWhereClause.between(
+ lower: lowerTimerId,
+ includeLower: includeLower,
+ upper: upperTimerId,
+ includeUpper: includeUpper,
+ ));
+ });
+ }
+}
+
+extension TimerModelQueryFilter
+ on QueryBuilder {
+ QueryBuilder isPausedEqualTo(
+ int value) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'isPaused',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder
+ isPausedGreaterThan(
+ int value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ include: include,
+ property: r'isPaused',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder isPausedLessThan(
+ int value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.lessThan(
+ include: include,
+ property: r'isPaused',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder isPausedBetween(
+ int lower,
+ int upper, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.between(
+ property: r'isPaused',
+ lower: lower,
+ includeLower: includeLower,
+ upper: upper,
+ includeUpper: includeUpper,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameEqualTo(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'ringtoneName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameGreaterThan(
+ String value, {
+ bool include = false,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ include: include,
+ property: r'ringtoneName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameLessThan(
+ String value, {
+ bool include = false,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.lessThan(
+ include: include,
+ property: r'ringtoneName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameBetween(
+ String lower,
+ String upper, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.between(
+ property: r'ringtoneName',
+ lower: lower,
+ includeLower: includeLower,
+ upper: upper,
+ includeUpper: includeUpper,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameStartsWith(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.startsWith(
+ property: r'ringtoneName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameEndsWith(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.endsWith(
+ property: r'ringtoneName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameContains(String value, {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.contains(
+ property: r'ringtoneName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameMatches(String pattern, {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.matches(
+ property: r'ringtoneName',
+ wildcard: pattern,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameIsEmpty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'ringtoneName',
+ value: '',
+ ));
+ });
+ }
+
+ QueryBuilder
+ ringtoneNameIsNotEmpty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ property: r'ringtoneName',
+ value: '',
+ ));
+ });
+ }
+
+ QueryBuilder startedOnEqualTo(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'startedOn',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ startedOnGreaterThan(
+ String value, {
+ bool include = false,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ include: include,
+ property: r'startedOn',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder startedOnLessThan(
+ String value, {
+ bool include = false,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.lessThan(
+ include: include,
+ property: r'startedOn',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder startedOnBetween(
+ String lower,
+ String upper, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.between(
+ property: r'startedOn',
+ lower: lower,
+ includeLower: includeLower,
+ upper: upper,
+ includeUpper: includeUpper,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ startedOnStartsWith(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.startsWith(
+ property: r'startedOn',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder startedOnEndsWith(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.endsWith(
+ property: r'startedOn',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder startedOnContains(
+ String value,
+ {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.contains(
+ property: r'startedOn',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder startedOnMatches(
+ String pattern,
+ {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.matches(
+ property: r'startedOn',
+ wildcard: pattern,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ startedOnIsEmpty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'startedOn',
+ value: '',
+ ));
+ });
+ }
+
+ QueryBuilder
+ startedOnIsNotEmpty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ property: r'startedOn',
+ value: '',
+ ));
+ });
+ }
+
+ QueryBuilder
+ timeElapsedEqualTo(int value) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'timeElapsed',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timeElapsedGreaterThan(
+ int value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ include: include,
+ property: r'timeElapsed',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timeElapsedLessThan(
+ int value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.lessThan(
+ include: include,
+ property: r'timeElapsed',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timeElapsedBetween(
+ int lower,
+ int upper, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.between(
+ property: r'timeElapsed',
+ lower: lower,
+ includeLower: includeLower,
+ upper: upper,
+ includeUpper: includeUpper,
+ ));
+ });
+ }
+
+ QueryBuilder timerIdEqualTo(
+ Id value) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'timerId',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timerIdGreaterThan(
+ Id value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ include: include,
+ property: r'timerId',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder timerIdLessThan(
+ Id value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.lessThan(
+ include: include,
+ property: r'timerId',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder timerIdBetween(
+ Id lower,
+ Id upper, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.between(
+ property: r'timerId',
+ lower: lower,
+ includeLower: includeLower,
+ upper: upper,
+ includeUpper: includeUpper,
+ ));
+ });
+ }
+
+ QueryBuilder timerNameEqualTo(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'timerName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timerNameGreaterThan(
+ String value, {
+ bool include = false,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ include: include,
+ property: r'timerName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder timerNameLessThan(
+ String value, {
+ bool include = false,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.lessThan(
+ include: include,
+ property: r'timerName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder timerNameBetween(
+ String lower,
+ String upper, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.between(
+ property: r'timerName',
+ lower: lower,
+ includeLower: includeLower,
+ upper: upper,
+ includeUpper: includeUpper,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timerNameStartsWith(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.startsWith(
+ property: r'timerName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder timerNameEndsWith(
+ String value, {
+ bool caseSensitive = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.endsWith(
+ property: r'timerName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder timerNameContains(
+ String value,
+ {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.contains(
+ property: r'timerName',
+ value: value,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder timerNameMatches(
+ String pattern,
+ {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.matches(
+ property: r'timerName',
+ wildcard: pattern,
+ caseSensitive: caseSensitive,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timerNameIsEmpty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'timerName',
+ value: '',
+ ));
+ });
+ }
+
+ QueryBuilder
+ timerNameIsNotEmpty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ property: r'timerName',
+ value: '',
+ ));
+ });
+ }
+
+ QueryBuilder timerValueEqualTo(
+ int value) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.equalTo(
+ property: r'timerValue',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timerValueGreaterThan(
+ int value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.greaterThan(
+ include: include,
+ property: r'timerValue',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder
+ timerValueLessThan(
+ int value, {
+ bool include = false,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.lessThan(
+ include: include,
+ property: r'timerValue',
+ value: value,
+ ));
+ });
+ }
+
+ QueryBuilder timerValueBetween(
+ int lower,
+ int upper, {
+ bool includeLower = true,
+ bool includeUpper = true,
+ }) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addFilterCondition(FilterCondition.between(
+ property: r'timerValue',
+ lower: lower,
+ includeLower: includeLower,
+ upper: upper,
+ includeUpper: includeUpper,
+ ));
+ });
+ }
+}
+
+extension TimerModelQueryObject
+ on QueryBuilder {}
+
+extension TimerModelQueryLinks
+ on QueryBuilder {}
+
+extension TimerModelQuerySortBy
+ on QueryBuilder {
+ QueryBuilder sortByIsPaused() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'isPaused', Sort.asc);
+ });
+ }
+
+ QueryBuilder sortByIsPausedDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'isPaused', Sort.desc);
+ });
+ }
+
+ QueryBuilder sortByRingtoneName() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'ringtoneName', Sort.asc);
+ });
+ }
+
+ QueryBuilder sortByRingtoneNameDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'ringtoneName', Sort.desc);
+ });
+ }
+
+ QueryBuilder sortByStartedOn() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'startedOn', Sort.asc);
+ });
+ }
+
+ QueryBuilder sortByStartedOnDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'startedOn', Sort.desc);
+ });
+ }
+
+ QueryBuilder sortByTimeElapsed() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timeElapsed', Sort.asc);
+ });
+ }
+
+ QueryBuilder sortByTimeElapsedDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timeElapsed', Sort.desc);
+ });
+ }
+
+ QueryBuilder sortByTimerName() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerName', Sort.asc);
+ });
+ }
+
+ QueryBuilder sortByTimerNameDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerName', Sort.desc);
+ });
+ }
+
+ QueryBuilder sortByTimerValue() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerValue', Sort.asc);
+ });
+ }
+
+ QueryBuilder sortByTimerValueDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerValue', Sort.desc);
+ });
+ }
+}
+
+extension TimerModelQuerySortThenBy
+ on QueryBuilder {
+ QueryBuilder thenByIsPaused() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'isPaused', Sort.asc);
+ });
+ }
+
+ QueryBuilder thenByIsPausedDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'isPaused', Sort.desc);
+ });
+ }
+
+ QueryBuilder thenByRingtoneName() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'ringtoneName', Sort.asc);
+ });
+ }
+
+ QueryBuilder thenByRingtoneNameDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'ringtoneName', Sort.desc);
+ });
+ }
+
+ QueryBuilder thenByStartedOn() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'startedOn', Sort.asc);
+ });
+ }
+
+ QueryBuilder thenByStartedOnDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'startedOn', Sort.desc);
+ });
+ }
+
+ QueryBuilder thenByTimeElapsed() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timeElapsed', Sort.asc);
+ });
+ }
+
+ QueryBuilder thenByTimeElapsedDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timeElapsed', Sort.desc);
+ });
+ }
+
+ QueryBuilder thenByTimerId() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerId', Sort.asc);
+ });
+ }
+
+ QueryBuilder thenByTimerIdDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerId', Sort.desc);
+ });
+ }
+
+ QueryBuilder thenByTimerName() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerName', Sort.asc);
+ });
+ }
+
+ QueryBuilder thenByTimerNameDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerName', Sort.desc);
+ });
+ }
+
+ QueryBuilder thenByTimerValue() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerValue', Sort.asc);
+ });
+ }
+
+ QueryBuilder thenByTimerValueDesc() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addSortBy(r'timerValue', Sort.desc);
+ });
+ }
+}
+
+extension TimerModelQueryWhereDistinct
+ on QueryBuilder {
+ QueryBuilder distinctByIsPaused() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addDistinctBy(r'isPaused');
+ });
+ }
+
+ QueryBuilder distinctByRingtoneName(
+ {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addDistinctBy(r'ringtoneName', caseSensitive: caseSensitive);
+ });
+ }
+
+ QueryBuilder distinctByStartedOn(
+ {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addDistinctBy(r'startedOn', caseSensitive: caseSensitive);
+ });
+ }
+
+ QueryBuilder distinctByTimeElapsed() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addDistinctBy(r'timeElapsed');
+ });
+ }
+
+ QueryBuilder distinctByTimerName(
+ {bool caseSensitive = true}) {
+ return QueryBuilder.apply(this, (query) {
+ return query.addDistinctBy(r'timerName', caseSensitive: caseSensitive);
+ });
+ }
+
+ QueryBuilder distinctByTimerValue() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addDistinctBy(r'timerValue');
+ });
+ }
+}
+
+extension TimerModelQueryProperty
+ on QueryBuilder {
+ QueryBuilder timerIdProperty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addPropertyName(r'timerId');
+ });
+ }
+
+ QueryBuilder isPausedProperty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addPropertyName(r'isPaused');
+ });
+ }
+
+ QueryBuilder ringtoneNameProperty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addPropertyName(r'ringtoneName');
+ });
+ }
+
+ QueryBuilder startedOnProperty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addPropertyName(r'startedOn');
+ });
+ }
+
+ QueryBuilder timeElapsedProperty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addPropertyName(r'timeElapsed');
+ });
+ }
+
+ QueryBuilder timerNameProperty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addPropertyName(r'timerName');
+ });
+ }
+
+ QueryBuilder timerValueProperty() {
+ return QueryBuilder.apply(this, (query) {
+ return query.addPropertyName(r'timerValue');
+ });
+ }
+}
diff --git a/lib/app/data/providers/isar_provider.dart b/lib/app/data/providers/isar_provider.dart
index f741cf38..9125e158 100644
--- a/lib/app/data/providers/isar_provider.dart
+++ b/lib/app/data/providers/isar_provider.dart
@@ -1,3 +1,5 @@
+import 'dart:async';
+
import 'package:flutter/material.dart';
import 'package:isar/isar.dart';
import 'package:path_provider/path_provider.dart';
@@ -19,16 +21,37 @@ class IsarDb {
db = openDB();
}
- Future getSQLiteDatabase() async {
+ Future getAlarmSQLiteDatabase() async {
Database? db;
final dir = await getDatabasesPath();
- final dbPath = '${dir}/alarms.db';
- print(dir);
+ final dbPath = '$dir/alarms.db';
db = await openDatabase(dbPath, version: 1, onCreate: _onCreate);
return db;
}
+ Future getTimerSQLiteDatabase() async {
+ Database? db;
+ final dir = await getDatabasesPath();
+ db = await openDatabase(
+ '$dir/timer.db',
+ version: 1,
+ onCreate: (Database db, int version) async {
+ await db.execute('''
+ create table timers (
+ id integer primary key autoincrement,
+ startedOn text not null,
+ timerValue integer not null,
+ timeElapsed integer not null,
+ ringtoneName text not null,
+ timerName text not null,
+ isPaused integer not null)
+ ''');
+ },
+ );
+ return db;
+ }
+
void _onCreate(Database db, int version) async {
// Create tables for alarms and ringtones (modify column types as needed)
await db.execute('''
@@ -89,7 +112,7 @@ class IsarDb {
final dir = await getApplicationDocumentsDirectory();
if (Isar.instanceNames.isEmpty) {
return await Isar.open(
- [AlarmModelSchema, RingtoneModelSchema],
+ [AlarmModelSchema, RingtoneModelSchema, TimerModelSchema],
directory: dir.path,
inspector: true,
);
@@ -99,15 +122,13 @@ class IsarDb {
static Future addAlarm(AlarmModel alarmRecord) async {
final isarProvider = IsarDb();
- final sql = await IsarDb().getSQLiteDatabase();
+ final sql = await IsarDb().getAlarmSQLiteDatabase();
final db = await isarProvider.db;
await db.writeTxn(() async {
await db.alarmModels.put(alarmRecord);
});
final sqlmap = alarmRecord.toSQFliteMap();
- await sql!
- .insert('alarms', sqlmap)
- .then((value) => print("insert success"));
+ await sql!.insert('alarms', sqlmap);
return alarmRecord;
}
@@ -217,7 +238,7 @@ class IsarDb {
static Future updateAlarm(AlarmModel alarmRecord) async {
final isarProvider = IsarDb();
- final sql = await IsarDb().getSQLiteDatabase();
+ final sql = await IsarDb().getAlarmSQLiteDatabase();
final db = await isarProvider.db;
await db.writeTxn(() async {
await db.alarmModels.put(alarmRecord);
@@ -243,21 +264,145 @@ class IsarDb {
yield* db.alarmModels.where().watch(fireImmediately: true);
} catch (e) {
debugPrint(e.toString());
- throw e;
+ rethrow;
}
}
static Future deleteAlarm(int id) async {
final isarProvider = IsarDb();
final db = await isarProvider.db;
- final sql = await IsarDb().getSQLiteDatabase();
- final tobedeleted = await db.alarmModels.get(id);
+ final sql = await IsarDb().getAlarmSQLiteDatabase();
+ final tobedeleted = await db.alarmModels.get(id);
await db.writeTxn(() async {
await db.alarmModels.delete(id);
});
- sql!.delete('alarms', where: 'alarmID = ?', whereArgs: [tobedeleted!.alarmID]);
+ await sql!.delete(
+ 'alarms',
+ where: 'alarmID = ?',
+ whereArgs: [tobedeleted!.alarmID],
+ );
+ }
+
+ // Timer Functions
+
+ static Future insertTimer(TimerModel timer) async {
+ final isarProvider = IsarDb();
+ final sql = await IsarDb().getTimerSQLiteDatabase();
+ final db = await isarProvider.db;
+ await db.writeTxn(() async {
+ await db.timerModels.put(timer);
+ });
+
+ await sql!.insert('timers', timer.toMap());
+ return timer;
+ }
+
+ static Future updateTimer(TimerModel timer) async {
+ final sql = await IsarDb().getTimerSQLiteDatabase();
+ return await sql!.update(
+ 'timers',
+ timer.toMap(),
+ where: 'id = ?',
+ whereArgs: [timer.timerId],
+ );
+ }
+
+ static Future updateTimerName(int id, String newTimerName) async {
+ final sql = await IsarDb().getTimerSQLiteDatabase();
+ return await sql!.update(
+ 'timers',
+ {'timerName': newTimerName},
+ where: 'id = ?',
+ whereArgs: [id],
+ );
+ }
+
+ static Future deleteTimer(int id) async {
+ final isarProvider = IsarDb();
+ final sql = await IsarDb().getTimerSQLiteDatabase();
+ final db = await isarProvider.db;
+ await db.writeTxn(() async {
+ await db.timerModels.delete(id);
+ });
+ return await sql!.delete('timers', where: 'id = ?', whereArgs: [id]);
+ }
+
+ static Future> getAllTimers() async {
+ final sql = await IsarDb().getTimerSQLiteDatabase();
+ List