Compare commits

..

No commits in common. "f4a232883f02fe15b6d7e96c149ba5926f7924b2" and "e261710eba01bddb905c1fb4f008c70603d99697" have entirely different histories.

32 changed files with 2127 additions and 2737 deletions

View File

@ -17,11 +17,7 @@ const AccountSchema = CollectionSchema(
name: r'Account', name: r'Account',
id: -6646797162501847804, id: -6646797162501847804,
properties: { properties: {
r'name': PropertySchema( r'name': PropertySchema(id: 0, name: r'name', type: IsarType.string),
id: 0,
name: r'name',
type: IsarType.string,
)
}, },
estimateSize: _accountEstimateSize, estimateSize: _accountEstimateSize,
serialize: _accountSerialize, serialize: _accountSerialize,
@ -110,10 +106,7 @@ extension AccountQueryWhereSort on QueryBuilder<Account, Account, QWhere> {
extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> { extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
QueryBuilder<Account, Account, QAfterWhereClause> idEqualTo(Id id) { QueryBuilder<Account, Account, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
@ -139,8 +132,10 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
}); });
} }
QueryBuilder<Account, Account, QAfterWhereClause> idGreaterThan(Id id, QueryBuilder<Account, Account, QAfterWhereClause> idGreaterThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -148,8 +143,10 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
}); });
} }
QueryBuilder<Account, Account, QAfterWhereClause> idLessThan(Id id, QueryBuilder<Account, Account, QAfterWhereClause> idLessThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -164,12 +161,14 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -178,10 +177,9 @@ extension AccountQueryFilter
on QueryBuilder<Account, Account, QFilterCondition> { on QueryBuilder<Account, Account, QFilterCondition> {
QueryBuilder<Account, Account, QAfterFilterCondition> idEqualTo(Id value) { QueryBuilder<Account, Account, QAfterFilterCondition> idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
@ -190,11 +188,13 @@ extension AccountQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -203,11 +203,13 @@ extension AccountQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -218,29 +220,31 @@ extension AccountQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNull() { QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull( return query.addFilterCondition(
property: r'name', const FilterCondition.isNull(property: r'name'),
)); );
}); });
} }
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotNull() { QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull( return query.addFilterCondition(
property: r'name', const FilterCondition.isNotNull(property: r'name'),
)); );
}); });
} }
@ -249,11 +253,13 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -263,12 +269,14 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -278,12 +286,14 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -295,14 +305,16 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'name', FilterCondition.between(
lower: lower, property: r'name',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
caseSensitive: caseSensitive, includeUpper: includeUpper,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -311,11 +323,13 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith( return query.addFilterCondition(
property: r'name', FilterCondition.startsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -324,53 +338,59 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith( return query.addFilterCondition(
property: r'name', FilterCondition.endsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Account, Account, QAfterFilterCondition> nameContains( QueryBuilder<Account, Account, QAfterFilterCondition> nameContains(
String value, String value, {
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains( return query.addFilterCondition(
property: r'name', FilterCondition.contains(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Account, Account, QAfterFilterCondition> nameMatches( QueryBuilder<Account, Account, QAfterFilterCondition> nameMatches(
String pattern, String pattern, {
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches( return query.addFilterCondition(
property: r'name', FilterCondition.matches(
wildcard: pattern, property: r'name',
caseSensitive: caseSensitive, wildcard: pattern,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsEmpty() { QueryBuilder<Account, Account, QAfterFilterCondition> nameIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotEmpty() { QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
property: r'name', FilterCondition.greaterThan(property: r'name', value: ''),
value: '', );
));
}); });
} }
} }
@ -424,8 +444,9 @@ extension AccountQuerySortThenBy
extension AccountQueryWhereDistinct extension AccountQueryWhereDistinct
on QueryBuilder<Account, Account, QDistinct> { on QueryBuilder<Account, Account, QDistinct> {
QueryBuilder<Account, Account, QDistinct> distinctByName( QueryBuilder<Account, Account, QDistinct> distinctByName({
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'name', caseSensitive: caseSensitive); return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
}); });

View File

@ -22,17 +22,13 @@ const BeneficiarySchema = CollectionSchema(
name: r'imagePath', name: r'imagePath',
type: IsarType.string, type: IsarType.string,
), ),
r'name': PropertySchema( r'name': PropertySchema(id: 1, name: r'name', type: IsarType.string),
id: 1,
name: r'name',
type: IsarType.string,
),
r'type': PropertySchema( r'type': PropertySchema(
id: 2, id: 2,
name: r'type', name: r'type',
type: IsarType.byte, type: IsarType.byte,
enumMap: _BeneficiarytypeEnumValueMap, enumMap: _BeneficiarytypeEnumValueMap,
) ),
}, },
estimateSize: _beneficiaryEstimateSize, estimateSize: _beneficiaryEstimateSize,
serialize: _beneficiarySerialize, serialize: _beneficiarySerialize,
@ -46,7 +42,7 @@ const BeneficiarySchema = CollectionSchema(
name: r'account', name: r'account',
target: r'Account', target: r'Account',
single: true, single: true,
) ),
}, },
embeddedSchemas: {}, embeddedSchemas: {},
getId: _beneficiaryGetId, getId: _beneficiaryGetId,
@ -94,7 +90,7 @@ Beneficiary _beneficiaryDeserialize(
object.name = reader.readString(offsets[1]); object.name = reader.readString(offsets[1]);
object.type = object.type =
_BeneficiarytypeValueEnumMap[reader.readByteOrNull(offsets[2])] ?? _BeneficiarytypeValueEnumMap[reader.readByteOrNull(offsets[2])] ??
BeneficiaryType.account; BeneficiaryType.account;
return object; return object;
} }
@ -111,16 +107,14 @@ P _beneficiaryDeserializeProp<P>(
return (reader.readString(offset)) as P; return (reader.readString(offset)) as P;
case 2: case 2:
return (_BeneficiarytypeValueEnumMap[reader.readByteOrNull(offset)] ?? return (_BeneficiarytypeValueEnumMap[reader.readByteOrNull(offset)] ??
BeneficiaryType.account) as P; BeneficiaryType.account)
as P;
default: default:
throw IsarError('Unknown property with id $propertyId'); throw IsarError('Unknown property with id $propertyId');
} }
} }
const _BeneficiarytypeEnumValueMap = { const _BeneficiarytypeEnumValueMap = {'account': 0, 'other': 1};
'account': 0,
'other': 1,
};
const _BeneficiarytypeValueEnumMap = { const _BeneficiarytypeValueEnumMap = {
0: BeneficiaryType.account, 0: BeneficiaryType.account,
1: BeneficiaryType.other, 1: BeneficiaryType.other,
@ -135,7 +129,10 @@ List<IsarLinkBase<dynamic>> _beneficiaryGetLinks(Beneficiary object) {
} }
void _beneficiaryAttach( void _beneficiaryAttach(
IsarCollection<dynamic> col, Id id, Beneficiary object) { IsarCollection<dynamic> col,
Id id,
Beneficiary object,
) {
object.id = id; object.id = id;
object.account.attach(col, col.isar.collection<Account>(), r'account', id); object.account.attach(col, col.isar.collection<Account>(), r'account', id);
} }
@ -153,15 +150,13 @@ extension BeneficiaryQueryWhere
on QueryBuilder<Beneficiary, Beneficiary, QWhereClause> { on QueryBuilder<Beneficiary, Beneficiary, QWhereClause> {
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idEqualTo(Id id) { QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idNotEqualTo( QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idNotEqualTo(
Id id) { Id id,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) { if (query.whereSort == Sort.asc) {
return query return query
@ -183,8 +178,10 @@ extension BeneficiaryQueryWhere
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idGreaterThan(Id id, QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idGreaterThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -192,8 +189,10 @@ extension BeneficiaryQueryWhere
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idLessThan(Id id, QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idLessThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -208,12 +207,14 @@ extension BeneficiaryQueryWhere
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -221,12 +222,12 @@ extension BeneficiaryQueryWhere
extension BeneficiaryQueryFilter extension BeneficiaryQueryFilter
on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> { on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> {
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> idEqualTo( QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> idEqualTo(
Id value) { Id value,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
@ -235,11 +236,13 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -248,11 +251,13 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -263,82 +268,87 @@ extension BeneficiaryQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathIsNull() { imagePathIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull( return query.addFilterCondition(
property: r'imagePath', const FilterCondition.isNull(property: r'imagePath'),
)); );
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathIsNotNull() { imagePathIsNotNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull( return query.addFilterCondition(
property: r'imagePath', const FilterCondition.isNotNull(property: r'imagePath'),
)); );
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathEqualTo( imagePathEqualTo(String? value, {bool caseSensitive = true}) {
String? value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'imagePath', FilterCondition.equalTo(
value: value, property: r'imagePath',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathGreaterThan( imagePathGreaterThan(
String? value, { String? value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'imagePath', include: include,
value: value, property: r'imagePath',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathLessThan( imagePathLessThan(
String? value, { String? value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'imagePath', include: include,
value: value, property: r'imagePath',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathBetween( imagePathBetween(
String? lower, String? lower,
String? upper, { String? upper, {
bool includeLower = true, bool includeLower = true,
@ -346,84 +356,86 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'imagePath', FilterCondition.between(
lower: lower, property: r'imagePath',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
caseSensitive: caseSensitive, includeUpper: includeUpper,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathStartsWith( imagePathStartsWith(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith( return query.addFilterCondition(
property: r'imagePath', FilterCondition.startsWith(
value: value, property: r'imagePath',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathEndsWith( imagePathEndsWith(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith( return query.addFilterCondition(
property: r'imagePath', FilterCondition.endsWith(
value: value, property: r'imagePath',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathContains(String value, {bool caseSensitive = true}) { imagePathContains(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains( return query.addFilterCondition(
property: r'imagePath', FilterCondition.contains(
value: value, property: r'imagePath',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathMatches(String pattern, {bool caseSensitive = true}) { imagePathMatches(String pattern, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches( return query.addFilterCondition(
property: r'imagePath', FilterCondition.matches(
wildcard: pattern, property: r'imagePath',
caseSensitive: caseSensitive, wildcard: pattern,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathIsEmpty() { imagePathIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'imagePath', FilterCondition.equalTo(property: r'imagePath', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathIsNotEmpty() { imagePathIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
property: r'imagePath', FilterCondition.greaterThan(property: r'imagePath', value: ''),
value: '', );
));
}); });
} }
@ -432,11 +444,13 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -446,12 +460,14 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -461,12 +477,14 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -478,14 +496,16 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'name', FilterCondition.between(
lower: lower, property: r'name',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
caseSensitive: caseSensitive, includeUpper: includeUpper,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -494,11 +514,13 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith( return query.addFilterCondition(
property: r'name', FilterCondition.startsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -507,64 +529,70 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith( return query.addFilterCondition(
property: r'name', FilterCondition.endsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameContains( QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameContains(
String value, String value, {
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains( return query.addFilterCondition(
property: r'name', FilterCondition.contains(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameMatches( QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameMatches(
String pattern, String pattern, {
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches( return query.addFilterCondition(
property: r'name', FilterCondition.matches(
wildcard: pattern, property: r'name',
caseSensitive: caseSensitive, wildcard: pattern,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameIsEmpty() { QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
nameIsNotEmpty() { nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
property: r'name', FilterCondition.greaterThan(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> typeEqualTo( QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> typeEqualTo(
BeneficiaryType value) { BeneficiaryType value,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'type', FilterCondition.equalTo(property: r'type', value: value),
value: value, );
));
}); });
} }
@ -573,11 +601,13 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'type', include: include,
value: value, property: r'type',
)); value: value,
),
);
}); });
} }
@ -586,11 +616,13 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'type', include: include,
value: value, property: r'type',
)); value: value,
),
);
}); });
} }
@ -601,13 +633,15 @@ extension BeneficiaryQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'type', FilterCondition.between(
lower: lower, property: r'type',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -618,14 +652,15 @@ extension BeneficiaryQueryObject
extension BeneficiaryQueryLinks extension BeneficiaryQueryLinks
on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> { on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> {
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> account( QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> account(
FilterQuery<Account> q) { FilterQuery<Account> q,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'account'); return query.link(q, r'account');
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
accountIsNull() { accountIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'account', 0, true, 0, true); return query.linkLength(r'account', 0, true, 0, true);
}); });
@ -724,15 +759,17 @@ extension BeneficiaryQuerySortThenBy
extension BeneficiaryQueryWhereDistinct extension BeneficiaryQueryWhereDistinct
on QueryBuilder<Beneficiary, Beneficiary, QDistinct> { on QueryBuilder<Beneficiary, Beneficiary, QDistinct> {
QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByImagePath( QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByImagePath({
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'imagePath', caseSensitive: caseSensitive); return query.addDistinctBy(r'imagePath', caseSensitive: caseSensitive);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByName( QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByName({
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'name', caseSensitive: caseSensitive); return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
}); });

View File

@ -17,11 +17,7 @@ const BudgetItemSchema = CollectionSchema(
name: r'BudgetItem', name: r'BudgetItem',
id: 618999772191843499, id: 618999772191843499,
properties: { properties: {
r'amount': PropertySchema( r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double),
id: 0,
name: r'amount',
type: IsarType.double,
)
}, },
estimateSize: _budgetItemEstimateSize, estimateSize: _budgetItemEstimateSize,
serialize: _budgetItemSerialize, serialize: _budgetItemSerialize,
@ -35,7 +31,7 @@ const BudgetItemSchema = CollectionSchema(
name: r'expenseCategory', name: r'expenseCategory',
target: r'ExpenseCategory', target: r'ExpenseCategory',
single: true, single: true,
) ),
}, },
embeddedSchemas: {}, embeddedSchemas: {},
getId: _budgetItemGetId, getId: _budgetItemGetId,
@ -99,7 +95,11 @@ List<IsarLinkBase<dynamic>> _budgetItemGetLinks(BudgetItem object) {
void _budgetItemAttach(IsarCollection<dynamic> col, Id id, BudgetItem object) { void _budgetItemAttach(IsarCollection<dynamic> col, Id id, BudgetItem object) {
object.id = id; object.id = id;
object.expenseCategory.attach( object.expenseCategory.attach(
col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id); col,
col.isar.collection<ExpenseCategory>(),
r'expenseCategory',
id,
);
} }
extension BudgetItemQueryWhereSort extension BudgetItemQueryWhereSort
@ -115,10 +115,7 @@ extension BudgetItemQueryWhere
on QueryBuilder<BudgetItem, BudgetItem, QWhereClause> { on QueryBuilder<BudgetItem, BudgetItem, QWhereClause> {
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idEqualTo(Id id) { QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
@ -144,8 +141,10 @@ extension BudgetItemQueryWhere
}); });
} }
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idGreaterThan(Id id, QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idGreaterThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -153,8 +152,10 @@ extension BudgetItemQueryWhere
}); });
} }
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idLessThan(Id id, QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idLessThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -169,12 +170,14 @@ extension BudgetItemQueryWhere
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -186,11 +189,13 @@ extension BudgetItemQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'amount', FilterCondition.equalTo(
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -200,12 +205,14 @@ extension BudgetItemQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'amount', include: include,
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -215,12 +222,14 @@ extension BudgetItemQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'amount', include: include,
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -232,24 +241,26 @@ extension BudgetItemQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'amount', FilterCondition.between(
lower: lower, property: r'amount',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
epsilon: epsilon, includeUpper: includeUpper,
)); epsilon: epsilon,
),
);
}); });
} }
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> idEqualTo( QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> idEqualTo(
Id value) { Id value,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
@ -258,11 +269,13 @@ extension BudgetItemQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -271,11 +284,13 @@ extension BudgetItemQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -286,13 +301,15 @@ extension BudgetItemQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -303,14 +320,15 @@ extension BudgetItemQueryObject
extension BudgetItemQueryLinks extension BudgetItemQueryLinks
on QueryBuilder<BudgetItem, BudgetItem, QFilterCondition> { on QueryBuilder<BudgetItem, BudgetItem, QFilterCondition> {
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> expenseCategory( QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> expenseCategory(
FilterQuery<ExpenseCategory> q) { FilterQuery<ExpenseCategory> q,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'expenseCategory'); return query.link(q, r'expenseCategory');
}); });
} }
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition>
expenseCategoryIsNull() { expenseCategoryIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'expenseCategory', 0, true, 0, true); return query.linkLength(r'expenseCategory', 0, true, 0, true);
}); });
@ -399,22 +417,14 @@ const BudgetSchema = CollectionSchema(
name: r'includeOtherSpendings', name: r'includeOtherSpendings',
type: IsarType.bool, type: IsarType.bool,
), ),
r'income': PropertySchema( r'income': PropertySchema(id: 1, name: r'income', type: IsarType.double),
id: 1, r'name': PropertySchema(id: 2, name: r'name', type: IsarType.string),
name: r'income',
type: IsarType.double,
),
r'name': PropertySchema(
id: 2,
name: r'name',
type: IsarType.string,
),
r'period': PropertySchema( r'period': PropertySchema(
id: 3, id: 3,
name: r'period', name: r'period',
type: IsarType.byte, type: IsarType.byte,
enumMap: _BudgetperiodEnumValueMap, enumMap: _BudgetperiodEnumValueMap,
) ),
}, },
estimateSize: _budgetEstimateSize, estimateSize: _budgetEstimateSize,
serialize: _budgetSerialize, serialize: _budgetSerialize,
@ -434,7 +444,7 @@ const BudgetSchema = CollectionSchema(
name: r'items', name: r'items',
target: r'BudgetItem', target: r'BudgetItem',
single: false, single: false,
) ),
}, },
embeddedSchemas: {}, embeddedSchemas: {},
getId: _budgetGetId, getId: _budgetGetId,
@ -478,7 +488,7 @@ Budget _budgetDeserialize(
object.name = reader.readString(offsets[2]); object.name = reader.readString(offsets[2]);
object.period = object.period =
_BudgetperiodValueEnumMap[reader.readByteOrNull(offsets[3])] ?? _BudgetperiodValueEnumMap[reader.readByteOrNull(offsets[3])] ??
BudgetPeriod.month; BudgetPeriod.month;
return object; return object;
} }
@ -497,18 +507,15 @@ P _budgetDeserializeProp<P>(
return (reader.readString(offset)) as P; return (reader.readString(offset)) as P;
case 3: case 3:
return (_BudgetperiodValueEnumMap[reader.readByteOrNull(offset)] ?? return (_BudgetperiodValueEnumMap[reader.readByteOrNull(offset)] ??
BudgetPeriod.month) as P; BudgetPeriod.month)
as P;
default: default:
throw IsarError('Unknown property with id $propertyId'); throw IsarError('Unknown property with id $propertyId');
} }
} }
const _BudgetperiodEnumValueMap = { const _BudgetperiodEnumValueMap = {'month': 0};
'month': 0, const _BudgetperiodValueEnumMap = {0: BudgetPeriod.month};
};
const _BudgetperiodValueEnumMap = {
0: BudgetPeriod.month,
};
Id _budgetGetId(Budget object) { Id _budgetGetId(Budget object) {
return object.id; return object.id;
@ -535,10 +542,7 @@ extension BudgetQueryWhereSort on QueryBuilder<Budget, Budget, QWhere> {
extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> { extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
QueryBuilder<Budget, Budget, QAfterWhereClause> idEqualTo(Id id) { QueryBuilder<Budget, Budget, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
@ -564,8 +568,10 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
}); });
} }
QueryBuilder<Budget, Budget, QAfterWhereClause> idGreaterThan(Id id, QueryBuilder<Budget, Budget, QAfterWhereClause> idGreaterThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -573,8 +579,10 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
}); });
} }
QueryBuilder<Budget, Budget, QAfterWhereClause> idLessThan(Id id, QueryBuilder<Budget, Budget, QAfterWhereClause> idLessThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -589,12 +597,14 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -602,10 +612,9 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> { extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
QueryBuilder<Budget, Budget, QAfterFilterCondition> idEqualTo(Id value) { QueryBuilder<Budget, Budget, QAfterFilterCondition> idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
@ -614,11 +623,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -627,11 +638,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -642,23 +655,27 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> QueryBuilder<Budget, Budget, QAfterFilterCondition>
includeOtherSpendingsEqualTo(bool value) { includeOtherSpendingsEqualTo(bool value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'includeOtherSpendings', FilterCondition.equalTo(
value: value, property: r'includeOtherSpendings',
)); value: value,
),
);
}); });
} }
@ -667,11 +684,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'income', FilterCondition.equalTo(
value: value, property: r'income',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -681,12 +700,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'income', include: include,
value: value, property: r'income',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -696,12 +717,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'income', include: include,
value: value, property: r'income',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -713,14 +736,16 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'income', FilterCondition.between(
lower: lower, property: r'income',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
epsilon: epsilon, includeUpper: includeUpper,
)); epsilon: epsilon,
),
);
}); });
} }
@ -729,11 +754,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -743,12 +770,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -758,12 +787,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -775,14 +806,16 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'name', FilterCondition.between(
lower: lower, property: r'name',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
caseSensitive: caseSensitive, includeUpper: includeUpper,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -791,11 +824,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith( return query.addFilterCondition(
property: r'name', FilterCondition.startsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
@ -804,62 +839,69 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith( return query.addFilterCondition(
property: r'name', FilterCondition.endsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameContains(String value, QueryBuilder<Budget, Budget, QAfterFilterCondition> nameContains(
{bool caseSensitive = true}) { String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains( return query.addFilterCondition(
property: r'name', FilterCondition.contains(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameMatches( QueryBuilder<Budget, Budget, QAfterFilterCondition> nameMatches(
String pattern, String pattern, {
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches( return query.addFilterCondition(
property: r'name', FilterCondition.matches(
wildcard: pattern, property: r'name',
caseSensitive: caseSensitive, wildcard: pattern,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsEmpty() { QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsNotEmpty() { QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
property: r'name', FilterCondition.greaterThan(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> periodEqualTo( QueryBuilder<Budget, Budget, QAfterFilterCondition> periodEqualTo(
BudgetPeriod value) { BudgetPeriod value,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'period', FilterCondition.equalTo(property: r'period', value: value),
value: value, );
));
}); });
} }
@ -868,11 +910,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'period', include: include,
value: value, property: r'period',
)); value: value,
),
);
}); });
} }
@ -881,11 +925,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'period', include: include,
value: value, property: r'period',
)); value: value,
),
);
}); });
} }
@ -896,13 +942,15 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'period', FilterCondition.between(
lower: lower, property: r'period',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -911,7 +959,8 @@ extension BudgetQueryObject on QueryBuilder<Budget, Budget, QFilterCondition> {}
extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> { extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> {
QueryBuilder<Budget, Budget, QAfterFilterCondition> account( QueryBuilder<Budget, Budget, QAfterFilterCondition> account(
FilterQuery<Account> q) { FilterQuery<Account> q,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'account'); return query.link(q, r'account');
}); });
@ -924,14 +973,16 @@ extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> {
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> items( QueryBuilder<Budget, Budget, QAfterFilterCondition> items(
FilterQuery<BudgetItem> q) { FilterQuery<BudgetItem> q,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'items'); return query.link(q, r'items');
}); });
} }
QueryBuilder<Budget, Budget, QAfterFilterCondition> itemsLengthEqualTo( QueryBuilder<Budget, Budget, QAfterFilterCondition> itemsLengthEqualTo(
int length) { int length,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'items', length, true, length, true); return query.linkLength(r'items', length, true, length, true);
}); });
@ -975,7 +1026,12 @@ extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> {
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength( return query.linkLength(
r'items', lower, includeLower, upper, includeUpper); r'items',
lower,
includeLower,
upper,
includeUpper,
);
}); });
} }
} }
@ -1105,8 +1161,9 @@ extension BudgetQueryWhereDistinct on QueryBuilder<Budget, Budget, QDistinct> {
}); });
} }
QueryBuilder<Budget, Budget, QDistinct> distinctByName( QueryBuilder<Budget, Budget, QDistinct> distinctByName({
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'name', caseSensitive: caseSensitive); return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
}); });

View File

@ -17,11 +17,7 @@ const ExpenseCategorySchema = CollectionSchema(
name: r'ExpenseCategory', name: r'ExpenseCategory',
id: -6352499903118634, id: -6352499903118634,
properties: { properties: {
r'name': PropertySchema( r'name': PropertySchema(id: 0, name: r'name', type: IsarType.string),
id: 0,
name: r'name',
type: IsarType.string,
)
}, },
estimateSize: _expenseCategoryEstimateSize, estimateSize: _expenseCategoryEstimateSize,
serialize: _expenseCategorySerialize, serialize: _expenseCategorySerialize,
@ -91,7 +87,10 @@ List<IsarLinkBase<dynamic>> _expenseCategoryGetLinks(ExpenseCategory object) {
} }
void _expenseCategoryAttach( void _expenseCategoryAttach(
IsarCollection<dynamic> col, Id id, ExpenseCategory object) { IsarCollection<dynamic> col,
Id id,
ExpenseCategory object,
) {
object.id = id; object.id = id;
} }
@ -107,17 +106,15 @@ extension ExpenseCategoryQueryWhereSort
extension ExpenseCategoryQueryWhere extension ExpenseCategoryQueryWhere
on QueryBuilder<ExpenseCategory, ExpenseCategory, QWhereClause> { on QueryBuilder<ExpenseCategory, ExpenseCategory, QWhereClause> {
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idEqualTo( QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idEqualTo(
Id id) { Id id,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause>
idNotEqualTo(Id id) { idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) { if (query.whereSort == Sort.asc) {
return query return query
@ -140,7 +137,7 @@ extension ExpenseCategoryQueryWhere
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause>
idGreaterThan(Id id, {bool include = false}) { idGreaterThan(Id id, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -149,8 +146,9 @@ extension ExpenseCategoryQueryWhere
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idLessThan( QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idLessThan(
Id id, Id id, {
{bool include = false}) { bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -165,12 +163,14 @@ extension ExpenseCategoryQueryWhere
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -178,109 +178,111 @@ extension ExpenseCategoryQueryWhere
extension ExpenseCategoryQueryFilter extension ExpenseCategoryQueryFilter
on QueryBuilder<ExpenseCategory, ExpenseCategory, QFilterCondition> { on QueryBuilder<ExpenseCategory, ExpenseCategory, QFilterCondition> {
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
idEqualTo(Id value) { idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
idGreaterThan( idGreaterThan(Id value, {bool include = false}) {
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
idLessThan( idLessThan(Id value, {bool include = false}) {
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
idBetween( idBetween(
Id lower, Id lower,
Id upper, { Id upper, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameEqualTo( nameEqualTo(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameGreaterThan( nameGreaterThan(
String value, { String value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameLessThan( nameLessThan(
String value, { String value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameBetween( nameBetween(
String lower, String lower,
String upper, { String upper, {
bool includeLower = true, bool includeLower = true,
@ -288,84 +290,86 @@ extension ExpenseCategoryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'name', FilterCondition.between(
lower: lower, property: r'name',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
caseSensitive: caseSensitive, includeUpper: includeUpper,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameStartsWith( nameStartsWith(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith( return query.addFilterCondition(
property: r'name', FilterCondition.startsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameEndsWith( nameEndsWith(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith( return query.addFilterCondition(
property: r'name', FilterCondition.endsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameContains(String value, {bool caseSensitive = true}) { nameContains(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains( return query.addFilterCondition(
property: r'name', FilterCondition.contains(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameMatches(String pattern, {bool caseSensitive = true}) { nameMatches(String pattern, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches( return query.addFilterCondition(
property: r'name', FilterCondition.matches(
wildcard: pattern, property: r'name',
caseSensitive: caseSensitive, wildcard: pattern,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameIsEmpty() { nameIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameIsNotEmpty() { nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
property: r'name', FilterCondition.greaterThan(property: r'name', value: ''),
value: '', );
));
}); });
} }
} }
@ -385,7 +389,7 @@ extension ExpenseCategoryQuerySortBy
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy>
sortByNameDesc() { sortByNameDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'name', Sort.desc); return query.addSortBy(r'name', Sort.desc);
}); });
@ -413,7 +417,7 @@ extension ExpenseCategoryQuerySortThenBy
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy>
thenByNameDesc() { thenByNameDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'name', Sort.desc); return query.addSortBy(r'name', Sort.desc);
}); });
@ -422,8 +426,9 @@ extension ExpenseCategoryQuerySortThenBy
extension ExpenseCategoryQueryWhereDistinct extension ExpenseCategoryQueryWhereDistinct
on QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> { on QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> {
QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> distinctByName( QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> distinctByName({
{bool caseSensitive = true}) { bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'name', caseSensitive: caseSensitive); return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
}); });

View File

@ -15,18 +15,4 @@ class RecurringTransaction {
final template = IsarLink<TransactionTemplate>(); final template = IsarLink<TransactionTemplate>();
final account = IsarLink<Account>(); final account = IsarLink<Account>();
bool isDue(DateTime now) {
if (lastExecution == null) {
return true;
}
final expectedNextExecution = lastExecution!.add(Duration(days: days));
if (now.isAfter(expectedNextExecution)) {
return true;
}
return now.difference(expectedNextExecution).inDays.abs() <=
(days * 0.5).toInt();
}
} }

View File

@ -18,16 +18,12 @@ const RecurringTransactionSchema = CollectionSchema(
name: r'RecurringTransaction', name: r'RecurringTransaction',
id: 969840479390105118, id: 969840479390105118,
properties: { properties: {
r'days': PropertySchema( r'days': PropertySchema(id: 0, name: r'days', type: IsarType.long),
id: 0,
name: r'days',
type: IsarType.long,
),
r'lastExecution': PropertySchema( r'lastExecution': PropertySchema(
id: 1, id: 1,
name: r'lastExecution', name: r'lastExecution',
type: IsarType.dateTime, type: IsarType.dateTime,
) ),
}, },
estimateSize: _recurringTransactionEstimateSize, estimateSize: _recurringTransactionEstimateSize,
serialize: _recurringTransactionSerialize, serialize: _recurringTransactionSerialize,
@ -47,7 +43,7 @@ const RecurringTransactionSchema = CollectionSchema(
name: r'account', name: r'account',
target: r'Account', target: r'Account',
single: true, single: true,
) ),
}, },
embeddedSchemas: {}, embeddedSchemas: {},
getId: _recurringTransactionGetId, getId: _recurringTransactionGetId,
@ -109,22 +105,30 @@ Id _recurringTransactionGetId(RecurringTransaction object) {
} }
List<IsarLinkBase<dynamic>> _recurringTransactionGetLinks( List<IsarLinkBase<dynamic>> _recurringTransactionGetLinks(
RecurringTransaction object) { RecurringTransaction object,
) {
return [object.template, object.account]; return [object.template, object.account];
} }
void _recurringTransactionAttach( void _recurringTransactionAttach(
IsarCollection<dynamic> col, Id id, RecurringTransaction object) { IsarCollection<dynamic> col,
Id id,
RecurringTransaction object,
) {
object.id = id; object.id = id;
object.template object.template.attach(
.attach(col, col.isar.collection<TransactionTemplate>(), r'template', id); col,
col.isar.collection<TransactionTemplate>(),
r'template',
id,
);
object.account.attach(col, col.isar.collection<Account>(), r'account', id); object.account.attach(col, col.isar.collection<Account>(), r'account', id);
} }
extension RecurringTransactionQueryWhereSort extension RecurringTransactionQueryWhereSort
on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhere> { on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhere> {
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhere> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhere>
anyId() { anyId() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(const IdWhereClause.any()); return query.addWhereClause(const IdWhereClause.any());
}); });
@ -134,17 +138,14 @@ extension RecurringTransactionQueryWhereSort
extension RecurringTransactionQueryWhere extension RecurringTransactionQueryWhere
on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhereClause> { on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhereClause> {
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
idEqualTo(Id id) { idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
idNotEqualTo(Id id) { idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) { if (query.whereSort == Sort.asc) {
return query return query
@ -167,7 +168,7 @@ extension RecurringTransactionQueryWhere
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
idGreaterThan(Id id, {bool include = false}) { idGreaterThan(Id id, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -176,7 +177,7 @@ extension RecurringTransactionQueryWhere
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
idLessThan(Id id, {bool include = false}) { idLessThan(Id id, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -185,240 +186,326 @@ extension RecurringTransactionQueryWhere
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
idBetween( idBetween(
Id lowerId, Id lowerId,
Id upperId, { Id upperId, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
extension RecurringTransactionQueryFilter on QueryBuilder<RecurringTransaction, extension RecurringTransactionQueryFilter
RecurringTransaction, QFilterCondition> { on
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> daysEqualTo(int value) { RecurringTransaction,
RecurringTransaction,
QFilterCondition
> {
QueryBuilder<
RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
daysEqualTo(int value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'days', FilterCondition.equalTo(property: r'days', value: value),
value: value, );
));
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> daysGreaterThan( RecurringTransaction,
int value, { RecurringTransaction,
bool include = false, QAfterFilterCondition
}) { >
daysGreaterThan(int value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'days', include: include,
value: value, property: r'days',
)); value: value,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> daysLessThan( RecurringTransaction,
int value, { RecurringTransaction,
bool include = false, QAfterFilterCondition
}) { >
daysLessThan(int value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'days', include: include,
value: value, property: r'days',
)); value: value,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> daysBetween( RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
daysBetween(
int lower, int lower,
int upper, { int upper, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'days', FilterCondition.between(
lower: lower, property: r'days',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> idEqualTo(Id value) { RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> idGreaterThan( RecurringTransaction,
Id value, { RecurringTransaction,
bool include = false, QAfterFilterCondition
}) { >
idGreaterThan(Id value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> idLessThan( RecurringTransaction,
Id value, { RecurringTransaction,
bool include = false, QAfterFilterCondition
}) { >
idLessThan(Id value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> idBetween( RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
idBetween(
Id lower, Id lower,
Id upper, { Id upper, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> lastExecutionIsNull() { RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
lastExecutionIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull( return query.addFilterCondition(
property: r'lastExecution', const FilterCondition.isNull(property: r'lastExecution'),
)); );
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> lastExecutionIsNotNull() { RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
lastExecutionIsNotNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull( return query.addFilterCondition(
property: r'lastExecution', const FilterCondition.isNotNull(property: r'lastExecution'),
)); );
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> lastExecutionEqualTo(DateTime? value) { RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
lastExecutionEqualTo(DateTime? value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'lastExecution', FilterCondition.equalTo(property: r'lastExecution', value: value),
value: value, );
));
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> lastExecutionGreaterThan( RecurringTransaction,
DateTime? value, { RecurringTransaction,
bool include = false, QAfterFilterCondition
}) { >
lastExecutionGreaterThan(DateTime? value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'lastExecution', include: include,
value: value, property: r'lastExecution',
)); value: value,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> lastExecutionLessThan( RecurringTransaction,
DateTime? value, { RecurringTransaction,
bool include = false, QAfterFilterCondition
}) { >
lastExecutionLessThan(DateTime? value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'lastExecution', include: include,
value: value, property: r'lastExecution',
)); value: value,
),
);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> lastExecutionBetween( RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
lastExecutionBetween(
DateTime? lower, DateTime? lower,
DateTime? upper, { DateTime? upper, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'lastExecution', FilterCondition.between(
lower: lower, property: r'lastExecution',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
extension RecurringTransactionQueryObject on QueryBuilder<RecurringTransaction, extension RecurringTransactionQueryObject
RecurringTransaction, QFilterCondition> {} on
QueryBuilder<
RecurringTransaction,
RecurringTransaction,
QFilterCondition
> {}
extension RecurringTransactionQueryLinks on QueryBuilder<RecurringTransaction, extension RecurringTransactionQueryLinks
RecurringTransaction, QFilterCondition> { on
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> template(FilterQuery<TransactionTemplate> q) { RecurringTransaction,
RecurringTransaction,
QFilterCondition
> {
QueryBuilder<
RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
template(FilterQuery<TransactionTemplate> q) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'template'); return query.link(q, r'template');
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> templateIsNull() { RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
templateIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'template', 0, true, 0, true); return query.linkLength(r'template', 0, true, 0, true);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> account(FilterQuery<Account> q) { RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
account(FilterQuery<Account> q) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'account'); return query.link(q, r'account');
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QueryBuilder<
QAfterFilterCondition> accountIsNull() { RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
accountIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'account', 0, true, 0, true); return query.linkLength(r'account', 0, true, 0, true);
}); });
@ -428,28 +515,28 @@ extension RecurringTransactionQueryLinks on QueryBuilder<RecurringTransaction,
extension RecurringTransactionQuerySortBy extension RecurringTransactionQuerySortBy
on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortBy> { on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortBy> {
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
sortByDays() { sortByDays() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'days', Sort.asc); return query.addSortBy(r'days', Sort.asc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
sortByDaysDesc() { sortByDaysDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'days', Sort.desc); return query.addSortBy(r'days', Sort.desc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
sortByLastExecution() { sortByLastExecution() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'lastExecution', Sort.asc); return query.addSortBy(r'lastExecution', Sort.asc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
sortByLastExecutionDesc() { sortByLastExecutionDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'lastExecution', Sort.desc); return query.addSortBy(r'lastExecution', Sort.desc);
}); });
@ -459,42 +546,42 @@ extension RecurringTransactionQuerySortBy
extension RecurringTransactionQuerySortThenBy extension RecurringTransactionQuerySortThenBy
on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortThenBy> { on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortThenBy> {
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
thenByDays() { thenByDays() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'days', Sort.asc); return query.addSortBy(r'days', Sort.asc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
thenByDaysDesc() { thenByDaysDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'days', Sort.desc); return query.addSortBy(r'days', Sort.desc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
thenById() { thenById() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.asc); return query.addSortBy(r'id', Sort.asc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
thenByIdDesc() { thenByIdDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.desc); return query.addSortBy(r'id', Sort.desc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
thenByLastExecution() { thenByLastExecution() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'lastExecution', Sort.asc); return query.addSortBy(r'lastExecution', Sort.asc);
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy> QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
thenByLastExecutionDesc() { thenByLastExecutionDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'lastExecution', Sort.desc); return query.addSortBy(r'lastExecution', Sort.desc);
}); });
@ -504,22 +591,27 @@ extension RecurringTransactionQuerySortThenBy
extension RecurringTransactionQueryWhereDistinct extension RecurringTransactionQueryWhereDistinct
on QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct> { on QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct> {
QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct> QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
distinctByDays() { distinctByDays() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'days'); return query.addDistinctBy(r'days');
}); });
} }
QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct> QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
distinctByLastExecution() { distinctByLastExecution() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'lastExecution'); return query.addDistinctBy(r'lastExecution');
}); });
} }
} }
extension RecurringTransactionQueryProperty on QueryBuilder< extension RecurringTransactionQueryProperty
RecurringTransaction, RecurringTransaction, QQueryProperty> { on
QueryBuilder<
RecurringTransaction,
RecurringTransaction,
QQueryProperty
> {
QueryBuilder<RecurringTransaction, int, QQueryOperations> idProperty() { QueryBuilder<RecurringTransaction, int, QQueryOperations> idProperty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'id'); return query.addPropertyName(r'id');
@ -533,7 +625,7 @@ extension RecurringTransactionQueryProperty on QueryBuilder<
} }
QueryBuilder<RecurringTransaction, DateTime?, QQueryOperations> QueryBuilder<RecurringTransaction, DateTime?, QQueryOperations>
lastExecutionProperty() { lastExecutionProperty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'lastExecution'); return query.addPropertyName(r'lastExecution');
}); });

View File

@ -18,21 +18,13 @@ const TransactionTemplateSchema = CollectionSchema(
name: r'TransactionTemplate', name: r'TransactionTemplate',
id: -2324989530163310644, id: -2324989530163310644,
properties: { properties: {
r'amount': PropertySchema( r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double),
id: 0, r'name': PropertySchema(id: 1, name: r'name', type: IsarType.string),
name: r'amount',
type: IsarType.double,
),
r'name': PropertySchema(
id: 1,
name: r'name',
type: IsarType.string,
),
r'recurring': PropertySchema( r'recurring': PropertySchema(
id: 2, id: 2,
name: r'recurring', name: r'recurring',
type: IsarType.bool, type: IsarType.bool,
) ),
}, },
estimateSize: _transactionTemplateEstimateSize, estimateSize: _transactionTemplateEstimateSize,
serialize: _transactionTemplateSerialize, serialize: _transactionTemplateSerialize,
@ -58,7 +50,7 @@ const TransactionTemplateSchema = CollectionSchema(
name: r'account', name: r'account',
target: r'Account', target: r'Account',
single: true, single: true,
) ),
}, },
embeddedSchemas: {}, embeddedSchemas: {},
getId: _transactionTemplateGetId, getId: _transactionTemplateGetId,
@ -125,17 +117,29 @@ Id _transactionTemplateGetId(TransactionTemplate object) {
} }
List<IsarLinkBase<dynamic>> _transactionTemplateGetLinks( List<IsarLinkBase<dynamic>> _transactionTemplateGetLinks(
TransactionTemplate object) { TransactionTemplate object,
) {
return [object.expenseCategory, object.beneficiary, object.account]; return [object.expenseCategory, object.beneficiary, object.account];
} }
void _transactionTemplateAttach( void _transactionTemplateAttach(
IsarCollection<dynamic> col, Id id, TransactionTemplate object) { IsarCollection<dynamic> col,
Id id,
TransactionTemplate object,
) {
object.id = id; object.id = id;
object.expenseCategory.attach( object.expenseCategory.attach(
col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id); col,
object.beneficiary col.isar.collection<ExpenseCategory>(),
.attach(col, col.isar.collection<Beneficiary>(), r'beneficiary', id); r'expenseCategory',
id,
);
object.beneficiary.attach(
col,
col.isar.collection<Beneficiary>(),
r'beneficiary',
id,
);
object.account.attach(col, col.isar.collection<Account>(), r'account', id); object.account.attach(col, col.isar.collection<Account>(), r'account', id);
} }
@ -151,17 +155,14 @@ extension TransactionTemplateQueryWhereSort
extension TransactionTemplateQueryWhere extension TransactionTemplateQueryWhere
on QueryBuilder<TransactionTemplate, TransactionTemplate, QWhereClause> { on QueryBuilder<TransactionTemplate, TransactionTemplate, QWhereClause> {
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
idEqualTo(Id id) { idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
idNotEqualTo(Id id) { idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) { if (query.whereSort == Sort.asc) {
return query return query
@ -184,7 +185,7 @@ extension TransactionTemplateQueryWhere
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
idGreaterThan(Id id, {bool include = false}) { idGreaterThan(Id id, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -193,7 +194,7 @@ extension TransactionTemplateQueryWhere
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
idLessThan(Id id, {bool include = false}) { idLessThan(Id id, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -202,73 +203,83 @@ extension TransactionTemplateQueryWhere
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
idBetween( idBetween(
Id lowerId, Id lowerId,
Id upperId, { Id upperId, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
extension TransactionTemplateQueryFilter on QueryBuilder<TransactionTemplate, extension TransactionTemplateQueryFilter
TransactionTemplate, QFilterCondition> { on
QueryBuilder<
TransactionTemplate,
TransactionTemplate,
QFilterCondition
> {
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
amountEqualTo( amountEqualTo(double value, {double epsilon = Query.epsilon}) {
double value, {
double epsilon = Query.epsilon,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'amount', FilterCondition.equalTo(
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
amountGreaterThan( amountGreaterThan(
double value, { double value, {
bool include = false, bool include = false,
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'amount', include: include,
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
amountLessThan( amountLessThan(
double value, { double value, {
bool include = false, bool include = false,
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'amount', include: include,
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
amountBetween( amountBetween(
double lower, double lower,
double upper, { double upper, {
bool includeLower = true, bool includeLower = true,
@ -276,121 +287,125 @@ extension TransactionTemplateQueryFilter on QueryBuilder<TransactionTemplate,
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'amount', FilterCondition.between(
lower: lower, property: r'amount',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
epsilon: epsilon, includeUpper: includeUpper,
)); epsilon: epsilon,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
idEqualTo(Id value) { idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
idGreaterThan( idGreaterThan(Id value, {bool include = false}) {
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
idLessThan( idLessThan(Id value, {bool include = false}) {
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
idBetween( idBetween(
Id lower, Id lower,
Id upper, { Id upper, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameEqualTo( nameEqualTo(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameGreaterThan( nameGreaterThan(
String value, { String value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameLessThan( nameLessThan(
String value, { String value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'name', include: include,
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameBetween( nameBetween(
String lower, String lower,
String upper, { String upper, {
bool includeLower = true, bool includeLower = true,
@ -398,140 +413,151 @@ extension TransactionTemplateQueryFilter on QueryBuilder<TransactionTemplate,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'name', FilterCondition.between(
lower: lower, property: r'name',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
caseSensitive: caseSensitive, includeUpper: includeUpper,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameStartsWith( nameStartsWith(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith( return query.addFilterCondition(
property: r'name', FilterCondition.startsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameEndsWith( nameEndsWith(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith( return query.addFilterCondition(
property: r'name', FilterCondition.endsWith(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameContains(String value, {bool caseSensitive = true}) { nameContains(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains( return query.addFilterCondition(
property: r'name', FilterCondition.contains(
value: value, property: r'name',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameMatches(String pattern, {bool caseSensitive = true}) { nameMatches(String pattern, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches( return query.addFilterCondition(
property: r'name', FilterCondition.matches(
wildcard: pattern, property: r'name',
caseSensitive: caseSensitive, wildcard: pattern,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameIsEmpty() { nameIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'name', FilterCondition.equalTo(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameIsNotEmpty() { nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
property: r'name', FilterCondition.greaterThan(property: r'name', value: ''),
value: '', );
));
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
recurringEqualTo(bool value) { recurringEqualTo(bool value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'recurring', FilterCondition.equalTo(property: r'recurring', value: value),
value: value, );
));
}); });
} }
} }
extension TransactionTemplateQueryObject on QueryBuilder<TransactionTemplate, extension TransactionTemplateQueryObject
TransactionTemplate, QFilterCondition> {} on
QueryBuilder<
TransactionTemplate,
TransactionTemplate,
QFilterCondition
> {}
extension TransactionTemplateQueryLinks on QueryBuilder<TransactionTemplate, extension TransactionTemplateQueryLinks
TransactionTemplate, QFilterCondition> { on
QueryBuilder<
TransactionTemplate,
TransactionTemplate,
QFilterCondition
> {
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
expenseCategory(FilterQuery<ExpenseCategory> q) { expenseCategory(FilterQuery<ExpenseCategory> q) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'expenseCategory'); return query.link(q, r'expenseCategory');
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
expenseCategoryIsNull() { expenseCategoryIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'expenseCategory', 0, true, 0, true); return query.linkLength(r'expenseCategory', 0, true, 0, true);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
beneficiary(FilterQuery<Beneficiary> q) { beneficiary(FilterQuery<Beneficiary> q) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'beneficiary'); return query.link(q, r'beneficiary');
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
beneficiaryIsNull() { beneficiaryIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'beneficiary', 0, true, 0, true); return query.linkLength(r'beneficiary', 0, true, 0, true);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
account(FilterQuery<Account> q) { account(FilterQuery<Account> q) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'account'); return query.link(q, r'account');
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
accountIsNull() { accountIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'account', 0, true, 0, true); return query.linkLength(r'account', 0, true, 0, true);
}); });
@ -541,42 +567,42 @@ extension TransactionTemplateQueryLinks on QueryBuilder<TransactionTemplate,
extension TransactionTemplateQuerySortBy extension TransactionTemplateQuerySortBy
on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortBy> { on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortBy> {
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
sortByAmount() { sortByAmount() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'amount', Sort.asc); return query.addSortBy(r'amount', Sort.asc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
sortByAmountDesc() { sortByAmountDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'amount', Sort.desc); return query.addSortBy(r'amount', Sort.desc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
sortByName() { sortByName() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'name', Sort.asc); return query.addSortBy(r'name', Sort.asc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
sortByNameDesc() { sortByNameDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'name', Sort.desc); return query.addSortBy(r'name', Sort.desc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
sortByRecurring() { sortByRecurring() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'recurring', Sort.asc); return query.addSortBy(r'recurring', Sort.asc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
sortByRecurringDesc() { sortByRecurringDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'recurring', Sort.desc); return query.addSortBy(r'recurring', Sort.desc);
}); });
@ -586,56 +612,56 @@ extension TransactionTemplateQuerySortBy
extension TransactionTemplateQuerySortThenBy extension TransactionTemplateQuerySortThenBy
on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortThenBy> { on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortThenBy> {
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenByAmount() { thenByAmount() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'amount', Sort.asc); return query.addSortBy(r'amount', Sort.asc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenByAmountDesc() { thenByAmountDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'amount', Sort.desc); return query.addSortBy(r'amount', Sort.desc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenById() { thenById() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.asc); return query.addSortBy(r'id', Sort.asc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenByIdDesc() { thenByIdDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.desc); return query.addSortBy(r'id', Sort.desc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenByName() { thenByName() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'name', Sort.asc); return query.addSortBy(r'name', Sort.asc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenByNameDesc() { thenByNameDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'name', Sort.desc); return query.addSortBy(r'name', Sort.desc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenByRecurring() { thenByRecurring() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'recurring', Sort.asc); return query.addSortBy(r'recurring', Sort.asc);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
thenByRecurringDesc() { thenByRecurringDesc() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'recurring', Sort.desc); return query.addSortBy(r'recurring', Sort.desc);
}); });
@ -645,21 +671,21 @@ extension TransactionTemplateQuerySortThenBy
extension TransactionTemplateQueryWhereDistinct extension TransactionTemplateQueryWhereDistinct
on QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct> { on QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct> {
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct> QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
distinctByAmount() { distinctByAmount() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'amount'); return query.addDistinctBy(r'amount');
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct> QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
distinctByName({bool caseSensitive = true}) { distinctByName({bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'name', caseSensitive: caseSensitive); return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct> QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
distinctByRecurring() { distinctByRecurring() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'recurring'); return query.addDistinctBy(r'recurring');
}); });
@ -687,7 +713,7 @@ extension TransactionTemplateQueryProperty
} }
QueryBuilder<TransactionTemplate, bool, QQueryOperations> QueryBuilder<TransactionTemplate, bool, QQueryOperations>
recurringProperty() { recurringProperty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'recurring'); return query.addPropertyName(r'recurring');
}); });

View File

@ -17,21 +17,9 @@ const TransactionSchema = CollectionSchema(
name: r'Transaction', name: r'Transaction',
id: 5320225499417954855, id: 5320225499417954855,
properties: { properties: {
r'amount': PropertySchema( r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double),
id: 0, r'date': PropertySchema(id: 1, name: r'date', type: IsarType.dateTime),
name: r'amount', r'tags': PropertySchema(id: 2, name: r'tags', type: IsarType.stringList),
type: IsarType.double,
),
r'date': PropertySchema(
id: 1,
name: r'date',
type: IsarType.dateTime,
),
r'tags': PropertySchema(
id: 2,
name: r'tags',
type: IsarType.stringList,
)
}, },
estimateSize: _transactionEstimateSize, estimateSize: _transactionEstimateSize,
serialize: _transactionSerialize, serialize: _transactionSerialize,
@ -57,7 +45,7 @@ const TransactionSchema = CollectionSchema(
name: r'beneficiary', name: r'beneficiary',
target: r'Beneficiary', target: r'Beneficiary',
single: true, single: true,
) ),
}, },
embeddedSchemas: {}, embeddedSchemas: {},
getId: _transactionGetId, getId: _transactionGetId,
@ -134,13 +122,24 @@ List<IsarLinkBase<dynamic>> _transactionGetLinks(Transaction object) {
} }
void _transactionAttach( void _transactionAttach(
IsarCollection<dynamic> col, Id id, Transaction object) { IsarCollection<dynamic> col,
Id id,
Transaction object,
) {
object.id = id; object.id = id;
object.expenseCategory.attach( object.expenseCategory.attach(
col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id); col,
col.isar.collection<ExpenseCategory>(),
r'expenseCategory',
id,
);
object.account.attach(col, col.isar.collection<Account>(), r'account', id); object.account.attach(col, col.isar.collection<Account>(), r'account', id);
object.beneficiary object.beneficiary.attach(
.attach(col, col.isar.collection<Beneficiary>(), r'beneficiary', id); col,
col.isar.collection<Beneficiary>(),
r'beneficiary',
id,
);
} }
extension TransactionQueryWhereSort extension TransactionQueryWhereSort
@ -156,15 +155,13 @@ extension TransactionQueryWhere
on QueryBuilder<Transaction, Transaction, QWhereClause> { on QueryBuilder<Transaction, Transaction, QWhereClause> {
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idEqualTo(Id id) { QueryBuilder<Transaction, Transaction, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
lower: id,
upper: id,
));
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idNotEqualTo( QueryBuilder<Transaction, Transaction, QAfterWhereClause> idNotEqualTo(
Id id) { Id id,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) { if (query.whereSort == Sort.asc) {
return query return query
@ -186,8 +183,10 @@ extension TransactionQueryWhere
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idGreaterThan(Id id, QueryBuilder<Transaction, Transaction, QAfterWhereClause> idGreaterThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -195,8 +194,10 @@ extension TransactionQueryWhere
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idLessThan(Id id, QueryBuilder<Transaction, Transaction, QAfterWhereClause> idLessThan(
{bool include = false}) { Id id, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include), IdWhereClause.lessThan(upper: id, includeUpper: include),
@ -211,12 +212,14 @@ extension TransactionQueryWhere
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(
lower: lowerId, IdWhereClause.between(
includeLower: includeLower, lower: lowerId,
upper: upperId, includeLower: includeLower,
includeUpper: includeUpper, upper: upperId,
)); includeUpper: includeUpper,
),
);
}); });
} }
} }
@ -228,27 +231,31 @@ extension TransactionQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'amount', FilterCondition.equalTo(
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
amountGreaterThan( amountGreaterThan(
double value, { double value, {
bool include = false, bool include = false,
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'amount', include: include,
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -258,12 +265,14 @@ extension TransactionQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'amount', include: include,
value: value, property: r'amount',
epsilon: epsilon, value: value,
)); epsilon: epsilon,
),
);
}); });
} }
@ -275,24 +284,26 @@ extension TransactionQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'amount', FilterCondition.between(
lower: lower, property: r'amount',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
epsilon: epsilon, includeUpper: includeUpper,
)); epsilon: epsilon,
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> dateEqualTo( QueryBuilder<Transaction, Transaction, QAfterFilterCondition> dateEqualTo(
DateTime value) { DateTime value,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'date', FilterCondition.equalTo(property: r'date', value: value),
value: value, );
));
}); });
} }
@ -301,11 +312,13 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'date', include: include,
value: value, property: r'date',
)); value: value,
),
);
}); });
} }
@ -314,11 +327,13 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'date', include: include,
value: value, property: r'date',
)); value: value,
),
);
}); });
} }
@ -329,23 +344,25 @@ extension TransactionQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'date', FilterCondition.between(
lower: lower, property: r'date',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> idEqualTo( QueryBuilder<Transaction, Transaction, QAfterFilterCondition> idEqualTo(
Id value) { Id value,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'id', FilterCondition.equalTo(property: r'id', value: value),
value: value, );
));
}); });
} }
@ -354,11 +371,13 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -367,11 +386,13 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'id', include: include,
value: value, property: r'id',
)); value: value,
),
);
}); });
} }
@ -382,64 +403,69 @@ extension TransactionQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'id', FilterCondition.between(
lower: lower, property: r'id',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
)); includeUpper: includeUpper,
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementEqualTo( tagsElementEqualTo(String value, {bool caseSensitive = true}) {
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(
property: r'tags', FilterCondition.equalTo(
value: value, property: r'tags',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementGreaterThan( tagsElementGreaterThan(
String value, { String value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan( return query.addFilterCondition(
include: include, FilterCondition.greaterThan(
property: r'tags', include: include,
value: value, property: r'tags',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementLessThan( tagsElementLessThan(
String value, { String value, {
bool include = false, bool include = false,
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan( return query.addFilterCondition(
include: include, FilterCondition.lessThan(
property: r'tags', include: include,
value: value, property: r'tags',
caseSensitive: caseSensitive, value: value,
)); caseSensitive: caseSensitive,
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementBetween( tagsElementBetween(
String lower, String lower,
String upper, { String upper, {
bool includeLower = true, bool includeLower = true,
@ -447,159 +473,125 @@ extension TransactionQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(
property: r'tags', FilterCondition.between(
lower: lower, property: r'tags',
includeLower: includeLower, lower: lower,
upper: upper, includeLower: includeLower,
includeUpper: includeUpper, upper: upper,
caseSensitive: caseSensitive, includeUpper: includeUpper,
)); caseSensitive: caseSensitive,
}); ),
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith(
property: r'tags',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith(
property: r'tags',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementContains(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains(
property: r'tags',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementMatches(String pattern, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches(
property: r'tags',
wildcard: pattern,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'tags',
value: '',
));
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
property: r'tags',
value: '',
));
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthEqualTo(int length) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'tags',
length,
true,
length,
true,
); );
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementStartsWith(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(
FilterCondition.startsWith(
property: r'tags',
value: value,
caseSensitive: caseSensitive,
),
);
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementEndsWith(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(
FilterCondition.endsWith(
property: r'tags',
value: value,
caseSensitive: caseSensitive,
),
);
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementContains(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(
FilterCondition.contains(
property: r'tags',
value: value,
caseSensitive: caseSensitive,
),
);
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementMatches(String pattern, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(
FilterCondition.matches(
property: r'tags',
wildcard: pattern,
caseSensitive: caseSensitive,
),
);
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(
FilterCondition.equalTo(property: r'tags', value: ''),
);
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(
FilterCondition.greaterThan(property: r'tags', value: ''),
);
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthEqualTo(int length) {
return QueryBuilder.apply(this, (query) {
return query.listLength(r'tags', length, true, length, true);
});
}
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> tagsIsEmpty() { QueryBuilder<Transaction, Transaction, QAfterFilterCondition> tagsIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.listLength( return query.listLength(r'tags', 0, true, 0, true);
r'tags',
0,
true,
0,
true,
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsIsNotEmpty() { tagsIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.listLength( return query.listLength(r'tags', 0, false, 999999, true);
r'tags',
0,
false,
999999,
true,
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthLessThan( tagsLengthLessThan(int length, {bool include = false}) {
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.listLength( return query.listLength(r'tags', 0, true, length, include);
r'tags',
0,
true,
length,
include,
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthGreaterThan( tagsLengthGreaterThan(int length, {bool include = false}) {
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.listLength( return query.listLength(r'tags', length, include, 999999, true);
r'tags',
length,
include,
999999,
true,
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthBetween( tagsLengthBetween(
int lower, int lower,
int upper, { int upper, {
bool includeLower = true, bool includeLower = true,
@ -623,42 +615,45 @@ extension TransactionQueryObject
extension TransactionQueryLinks extension TransactionQueryLinks
on QueryBuilder<Transaction, Transaction, QFilterCondition> { on QueryBuilder<Transaction, Transaction, QFilterCondition> {
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> expenseCategory( QueryBuilder<Transaction, Transaction, QAfterFilterCondition> expenseCategory(
FilterQuery<ExpenseCategory> q) { FilterQuery<ExpenseCategory> q,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'expenseCategory'); return query.link(q, r'expenseCategory');
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
expenseCategoryIsNull() { expenseCategoryIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'expenseCategory', 0, true, 0, true); return query.linkLength(r'expenseCategory', 0, true, 0, true);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> account( QueryBuilder<Transaction, Transaction, QAfterFilterCondition> account(
FilterQuery<Account> q) { FilterQuery<Account> q,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'account'); return query.link(q, r'account');
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
accountIsNull() { accountIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'account', 0, true, 0, true); return query.linkLength(r'account', 0, true, 0, true);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> beneficiary( QueryBuilder<Transaction, Transaction, QAfterFilterCondition> beneficiary(
FilterQuery<Beneficiary> q) { FilterQuery<Beneficiary> q,
) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.link(q, r'beneficiary'); return query.link(q, r'beneficiary');
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
beneficiaryIsNull() { beneficiaryIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.linkLength(r'beneficiary', 0, true, 0, true); return query.linkLength(r'beneficiary', 0, true, 0, true);
}); });

View File

@ -83,7 +83,9 @@ Stream<void> watchRecurringTransactions(Account account) {
Future<void> upsertAccount(Account account) async { Future<void> upsertAccount(Account account) async {
final db = GetIt.I.get<Isar>(); final db = GetIt.I.get<Isar>();
return db.writeTxn(() async { return db.writeTxn(() async {
await db.accounts.put(account); print("Before account insert");
final id = await db.accounts.put(account);
print("After account insert: $id");
}); });
} }
@ -114,14 +116,6 @@ Future<void> upsertTransactionTemplate(TransactionTemplate template) async {
}); });
} }
Future<void> deleteRecurringTransactionTemplate(RecurringTransaction template) {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
await db.transactionTemplates.delete(template.template.value!.id);
await db.recurringTransactions.delete(template.id);
});
}
Future<void> upsertRecurringTransaction(RecurringTransaction template) async { Future<void> upsertRecurringTransaction(RecurringTransaction template) async {
final db = GetIt.I.get<Isar>(); final db = GetIt.I.get<Isar>();
return db.writeTxn(() async { return db.writeTxn(() async {
@ -151,16 +145,10 @@ Stream<void> watchTransactionTemplates(Account account) {
.transactionTemplates .transactionTemplates
.filter() .filter()
.account((q) => q.idEqualTo(account.id)) .account((q) => q.idEqualTo(account.id))
.recurringEqualTo(false)
.watchLazy(fireImmediately: true); .watchLazy(fireImmediately: true);
} }
Future<void> deleteTransactionTemplate(TransactionTemplate template) {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
await db.transactionTemplates.delete(template.id);
});
}
Future<List<TransactionTemplate>> getTransactionTemplates(Account? account) { Future<List<TransactionTemplate>> getTransactionTemplates(Account? account) {
if (account == null) { if (account == null) {
return Future.value([]); return Future.value([]);
@ -171,6 +159,7 @@ Future<List<TransactionTemplate>> getTransactionTemplates(Account? account) {
.transactionTemplates .transactionTemplates
.filter() .filter()
.account((q) => q.idEqualTo(account.id)) .account((q) => q.idEqualTo(account.id))
.recurringEqualTo(false)
.findAll(); .findAll();
} }

View File

@ -11,14 +11,10 @@ import 'package:okane/ui/navigation.dart';
import 'package:okane/ui/pages/budgets/budget_details.dart'; import 'package:okane/ui/pages/budgets/budget_details.dart';
import 'package:okane/ui/pages/transaction_details.dart'; import 'package:okane/ui/pages/transaction_details.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/state/settings.dart';
Future<void> main() async { Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
final settings = SettingsCubit();
await settings.loadSettings();
GetIt.I.registerSingleton<SettingsCubit>(settings);
GetIt.I.registerSingleton<CoreCubit>(CoreCubit()); GetIt.I.registerSingleton<CoreCubit>(CoreCubit());
GetIt.I.registerSingleton<Isar>(await openDatabase()); GetIt.I.registerSingleton<Isar>(await openDatabase());
@ -35,39 +31,19 @@ class MyApp extends StatelessWidget {
child: MultiBlocProvider( child: MultiBlocProvider(
providers: [ providers: [
BlocProvider<CoreCubit>(create: (_) => GetIt.I.get<CoreCubit>()), BlocProvider<CoreCubit>(create: (_) => GetIt.I.get<CoreCubit>()),
BlocProvider<SettingsCubit>(
create: (_) => GetIt.I.get<SettingsCubit>(),
),
], ],
child: BlocBuilder<SettingsCubit, SettingsWrapper>( child: MaterialApp(
builder: title: 'Flutter Demo',
(context, state) => MaterialApp( theme: ThemeData(
title: 'Okane', colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
theme: ThemeData( ),
colorSchemeSeed: Colors.deepPurple, home: const MyHomePage(),
brightness: switch (state.settings.colorScheme) { onGenerateRoute:
ColorSchemeSettings.dark => Brightness.dark, (settings) => switch (settings.name) {
ColorSchemeSettings.light => Brightness.light, "/transactions/details" => TransactionDetailsPage.mobileRoute,
ColorSchemeSettings.system => View.of(context).platformDispatcher.platformBrightness, "/budgets/details" => BudgetDetailsPage.mobileRoute,
}, _ => MaterialPageRoute<void>(builder: (_) => Text("Unknown!!")),
pageTransitionsTheme: PageTransitionsTheme( },
builders: Map.fromIterable(
TargetPlatform.values,
value: (_) => const FadeForwardsPageTransitionsBuilder(),
),
),
),
home: const MyHomePage(),
onGenerateRoute:
(settings) => switch (settings.name) {
"/transactions/details" =>
TransactionDetailsPage.mobileRoute,
"/budgets/details" => BudgetDetailsPage.mobileRoute,
_ => MaterialPageRoute<void>(
builder: (_) => Text("Unknown!!"),
),
},
),
), ),
), ),
); );

View File

@ -2,17 +2,15 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:okane/screen.dart'; import 'package:okane/screen.dart';
import 'package:okane/ui/pages/account/account.dart'; import 'package:okane/ui/pages/account/account.dart';
import 'package:okane/ui/pages/beneficiary_list.dart';
import 'package:okane/ui/pages/budgets/budget_details.dart'; import 'package:okane/ui/pages/budgets/budget_details.dart';
import 'package:okane/ui/pages/budgets/budgets.dart'; import 'package:okane/ui/pages/budgets/budgets.dart';
import 'package:okane/ui/pages/settings.dart';
import 'package:okane/ui/pages/template_list.dart'; import 'package:okane/ui/pages/template_list.dart';
import 'package:okane/ui/pages/transaction_details.dart'; import 'package:okane/ui/pages/transaction_details.dart';
import 'package:okane/ui/pages/transaction_list.dart'; import 'package:okane/ui/pages/transaction_list.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/widgets/account_indicator.dart'; import 'package:okane/ui/widgets/account_indicator.dart';
enum OkanePage { accounts, transactions, beneficiaries, templates, budgets, settings } enum OkanePage { accounts, transactions, beneficiaries, templates, budgets }
typedef OkanePageBuilder = Widget Function(bool); typedef OkanePageBuilder = Widget Function(bool);
@ -77,7 +75,7 @@ final _pages = <OkanePageItem>[
OkanePage.beneficiaries, OkanePage.beneficiaries,
Icons.person, Icons.person,
"Beneficiaries", "Beneficiaries",
BeneficiaryListPage(), Container(),
null, null,
true, true,
), ),
@ -97,14 +95,6 @@ final _pages = <OkanePageItem>[
(_) => BudgetDetailsPage(), (_) => BudgetDetailsPage(),
true, true,
), ),
OkanePageItem(
OkanePage.settings,
Icons.settings,
"Settings",
SettingsPage(),
null,
false,
),
]; ];
class OkaneNavigationRail extends StatelessWidget { class OkaneNavigationRail extends StatelessWidget {

View File

@ -1,24 +1,26 @@
import 'dart:math'; import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/database/collections/recurrent.dart'; import 'package:okane/database/collections/recurrent.dart';
import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart';
import 'package:okane/ui/widgets/add_transaction.dart';
class UpcomingTransactionsCard extends StatelessWidget { class UpcomingTransactionsCard extends StatelessWidget {
const UpcomingTransactionsCard({super.key}); const UpcomingTransactionsCard({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final bloc = GetIt.I.get<CoreCubit>();
return BlocBuilder<CoreCubit, CoreState>( return BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) { builder: (context, state) {
final today = DateTime.now(); final today = DateTime.now();
final upcomingRaw = final upcomingRaw =
state.recurringTransactions.where((t) => t.isDue(today)).toList(); state.recurringTransactions.where((t) {
if (t.lastExecution == null) {
return true;
}
return today.difference(t.lastExecution!).inDays <=
(t.days * 1.5).toInt();
}).toList();
final List<RecurringTransaction> upcoming = final List<RecurringTransaction> upcoming =
upcomingRaw.isEmpty upcomingRaw.isEmpty
? List.empty() ? List.empty()
@ -51,23 +53,7 @@ class UpcomingTransactionsCard extends StatelessWidget {
), ),
trailing: IconButton( trailing: IconButton(
icon: Icon(Icons.play_arrow), icon: Icon(Icons.play_arrow),
onPressed: () { onPressed: () {},
showDialogOrModal(
context: context,
builder:
(context) => AddTransactionWidget(
activeAccountItem: bloc.activeAccount!,
template: t.template.value!,
onAdd: (transaction) async {
// Update the recurring template
print(transaction.date);
t.lastExecution = transaction.date;
await upsertRecurringTransaction(t);
Navigator.of(context).pop();
},
),
);
},
), ),
), ),
) )

View File

@ -1,33 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/widgets/image_wrapper.dart';
class BeneficiaryListPage extends StatelessWidget {
const BeneficiaryListPage({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) {
return Stack(
children: [
ListView.builder(
itemCount: state.beneficiaries.length,
itemBuilder: (context, index) {
final item = state.beneficiaries[index];
return ListTile(
leading: ImageWrapper(
title: item.name,
path: item.imagePath,
),
title: Text(item.name),
);
},
),
],
);
},
);
}
}

View File

@ -1,59 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/ui/state/settings.dart';
import 'package:okane/ui/utils.dart';
class SettingsPage extends StatelessWidget {
const SettingsPage({super.key});
@override
Widget build(BuildContext context) {
return ListView(
children: [
BlocBuilder<SettingsCubit, SettingsWrapper>(
builder:
(context, state) => ListTile(
title: Text("Color Scheme"),
subtitle: switch (state.settings.colorScheme) {
ColorSchemeSettings.dark => Text("Dark"),
ColorSchemeSettings.light => Text("Light"),
ColorSchemeSettings.system => Text("System"),
},
onTap: () async {
final colorScheme = await showDialogOrModal(
context: context,
builder:
(context) => ListView(
shrinkWrap: true,
children:
ColorSchemeSettings.values
.map(
(s) => ListTile(
title: Text(switch (s) {
ColorSchemeSettings.dark => "Dark",
ColorSchemeSettings.light => "Light",
ColorSchemeSettings.system => "System",
}),
onTap: () {
Navigator.of(context).pop(s);
},
),
)
.toList(),
),
);
if (colorScheme == null) {
return;
}
await GetIt.I.get<SettingsCubit>().setSettings(
state.settings.copyWith(colorScheme: colorScheme),
);
},
),
),
],
);
}
}

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart'; import 'package:okane/ui/utils.dart';
import 'package:okane/ui/widgets/add_template.dart'; import 'package:okane/ui/widgets/add_template.dart';
@ -19,62 +18,28 @@ class TemplateListState extends State<TemplateListPage> {
return BlocBuilder<CoreCubit, CoreState>( return BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) { builder: (context, state) {
final account = GetIt.I.get<CoreCubit>().activeAccount; final account = GetIt.I.get<CoreCubit>().activeAccount;
final nonRecurringTemplates =
state.transactionTemplates.where((t) => !t.recurring).toList();
return Stack( return Stack(
children: [ children: [
CustomScrollView( Column(
slivers: [ children: [
SliverToBoxAdapter(child: Text("Non-recurring")), Padding(
SliverList.builder( padding: EdgeInsets.only(top: 16),
itemCount: nonRecurringTemplates.length, child: ListView.builder(
itemBuilder: (context, index) { itemCount: state.recurringTransactions.length,
final template = nonRecurringTemplates[index]; shrinkWrap: true,
return ListTile( itemBuilder:
title: Text(template.name), (ctx, idx) => Card(
trailing: IconButton( child: ListTile(
icon: Icon(Icons.delete), title: Text(
color: Colors.red, state
onPressed: () async { .recurringTransactions[idx]
final result = await confirm( .template
context, .value!
"Remove Template", .name,
"Are you sure you want to remove the template '${template.name}'", ),
); ),
if (!result) { ),
return; ),
}
await deleteTransactionTemplate(template);
},
),
);
},
),
SliverToBoxAdapter(child: Text("Recurring")),
SliverList.builder(
itemCount: state.recurringTransactions.length,
itemBuilder: (context, index) {
final template = state.recurringTransactions[index];
return ListTile(
title: Text(template.template.value!.name),
trailing: IconButton(
icon: Icon(Icons.delete, color: Colors.red),
onPressed: () async {
final result = await confirm(
context,
"Remove Template",
"Are you sure you want to remove the template '${template.template.value!.name}'",
);
if (!result) {
return;
}
await deleteRecurringTransactionTemplate(template);
},
),
);
},
), ),
], ],
), ),
@ -82,6 +47,7 @@ class TemplateListState extends State<TemplateListPage> {
right: 16, right: 16,
bottom: 16, bottom: 16,
child: FloatingActionButton( child: FloatingActionButton(
child: Icon(Icons.add),
onPressed: onPressed:
account == null account == null
? () {} ? () {}
@ -99,7 +65,6 @@ class TemplateListState extends State<TemplateListPage> {
showDragHandle: true, showDragHandle: true,
); );
}, },
child: Icon(Icons.add),
), ),
), ),
], ],

View File

@ -3,7 +3,6 @@ import 'dart:io';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/database/collections/beneficiary.dart'; import 'package:okane/database/collections/beneficiary.dart';
import 'package:okane/database/database.dart'; import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';
@ -77,7 +76,6 @@ class TransactionDetailsPage extends StatelessWidget {
child: ListView( child: ListView(
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
StreamBuilder( StreamBuilder(
stream: watchBeneficiaryObject( stream: watchBeneficiaryObject(
@ -91,50 +89,13 @@ class TransactionDetailsPage extends StatelessWidget {
title: obj.name, title: obj.name,
path: obj.imagePath, path: obj.imagePath,
onTap: () => _updateBeneficiaryIcon(obj), onTap: () => _updateBeneficiaryIcon(obj),
width: 90,
height: 90,
); );
}, },
), ),
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 16), padding: EdgeInsets.only(left: 8),
child: Column( child: Text(
mainAxisSize: MainAxisSize.min, state.activeTransaction!.beneficiary.value!.name,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.arrow_forward_rounded),
Padding(
padding: EdgeInsets.only(left: 8),
child: Text(
state
.activeTransaction!
.beneficiary
.value!
.name,
),
),
],
),
Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.arrow_back_rounded),
Padding(
padding: EdgeInsets.only(left: 8),
child: Text(
GetIt.I
.get<CoreCubit>()
.activeAccount!
.name!,
),
),
],
),
],
), ),
), ),
Spacer(), Spacer(),
@ -146,7 +107,6 @@ class TransactionDetailsPage extends StatelessWidget {
), ),
], ],
), ),
Wrap( Wrap(
spacing: 8, spacing: 8,
children: children:
@ -154,43 +114,13 @@ class TransactionDetailsPage extends StatelessWidget {
.map((tag) => Chip(label: Text(tag))) .map((tag) => Chip(label: Text(tag)))
.toList(), .toList(),
), ),
Row(
if (state.activeTransaction!.expenseCategory.value != children: [
null) state.activeTransaction!.amount > 0
Padding( ? Icon(Icons.add)
padding: EdgeInsets.symmetric(vertical: 8), : Icon(Icons.remove),
child: Row( Text(formatCurrency(state.activeTransaction!.amount)),
mainAxisAlignment: MainAxisAlignment.start, ],
children: [
Text("Expense category"),
Padding(
padding: EdgeInsets.only(left: 16),
child: Chip(
label: Text(
state
.activeTransaction!
.expenseCategory
.value!
.name,
),
),
),
],
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 8),
child: Row(
children: [
state.activeTransaction!.amount > 0
? Icon(Icons.add)
: Icon(Icons.remove),
Text(
formatCurrency(state.activeTransaction!.amount),
),
],
),
), ),
], ],
), ),

View File

@ -83,10 +83,58 @@ class TransactionListState extends State<TransactionListPage> {
), ),
], ],
), ),
/*Column(
children: [
Padding(
padding: EdgeInsets.only(top: 16),
child: GroupedListView(
elements: state.transactions,
reverse: true,
groupBy:
(Transaction item) => formatDateTime(item.date),
groupHeaderBuilder:
(item) => Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
DecoratedBox(
decoration: BoxDecoration(
color: Colors.black.withAlpha(170),
borderRadius: BorderRadius.circular(8),
),
child: Padding(
padding: EdgeInsets.all(4),
child: Text(
formatDateTime(item.date),
style: TextStyle(color: Colors.white),
),
),
),
],
),
shrinkWrap: true,
indexedItemBuilder:
(ctx, item, idx) => TransactionCard(
transaction: item,
onTap: () {
GetIt.I.get<CoreCubit>().setActiveTransaction(
item,
);
if (getScreenSize(ctx) == ScreenSize.small) {
Navigator.of(
context,
).pushNamed("/transactions/details");
}
},
),
),
),
],
),*/
Positioned( Positioned(
right: 16, right: 16,
bottom: 16, bottom: 16,
child: FloatingActionButton( child: FloatingActionButton(
child: Icon(Icons.add),
onPressed: onPressed:
account == null account == null
? () {} ? () {}
@ -96,7 +144,7 @@ class TransactionListState extends State<TransactionListPage> {
builder: builder:
(ctx) => AddTransactionWidget( (ctx) => AddTransactionWidget(
activeAccountItem: account, activeAccountItem: account,
onAdd: (_) { onAdd: () {
setState(() {}); setState(() {});
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
@ -104,7 +152,6 @@ class TransactionListState extends State<TransactionListPage> {
showDragHandle: true, showDragHandle: true,
); );
}, },
child: Icon(Icons.add),
), ),
), ),
], ],

View File

@ -66,7 +66,6 @@ class CoreCubit extends Cubit<CoreState> {
_recurringTransactionStreamSubscription = watchRecurringTransactions( _recurringTransactionStreamSubscription = watchRecurringTransactions(
activeAccount!, activeAccount!,
).listen((_) async { ).listen((_) async {
print("RECURRING UPDATE");
emit( emit(
state.copyWith( state.copyWith(
recurringTransactions: await getRecurringTransactions(activeAccount!), recurringTransactions: await getRecurringTransactions(activeAccount!),

View File

@ -12,7 +12,8 @@ part of 'core.dart';
T _$identity<T>(T value) => value; T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError( final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models',
);
/// @nodoc /// @nodoc
mixin _$CoreState { mixin _$CoreState {
@ -41,18 +42,19 @@ abstract class $CoreStateCopyWith<$Res> {
factory $CoreStateCopyWith(CoreState value, $Res Function(CoreState) then) = factory $CoreStateCopyWith(CoreState value, $Res Function(CoreState) then) =
_$CoreStateCopyWithImpl<$Res, CoreState>; _$CoreStateCopyWithImpl<$Res, CoreState>;
@useResult @useResult
$Res call( $Res call({
{OkanePage activePage, OkanePage activePage,
int? activeAccountIndex, int? activeAccountIndex,
Transaction? activeTransaction, Transaction? activeTransaction,
List<Account> accounts, List<Account> accounts,
List<RecurringTransaction> recurringTransactions, List<RecurringTransaction> recurringTransactions,
List<Transaction> transactions, List<Transaction> transactions,
List<TransactionTemplate> transactionTemplates, List<TransactionTemplate> transactionTemplates,
List<Beneficiary> beneficiaries, List<Beneficiary> beneficiaries,
List<ExpenseCategory> expenseCategories, List<ExpenseCategory> expenseCategories,
List<Budget> budgets, List<Budget> budgets,
Budget? activeBudget}); Budget? activeBudget,
});
} }
/// @nodoc /// @nodoc
@ -80,52 +82,66 @@ class _$CoreStateCopyWithImpl<$Res, $Val extends CoreState>
Object? budgets = null, Object? budgets = null,
Object? activeBudget = freezed, Object? activeBudget = freezed,
}) { }) {
return _then(_value.copyWith( return _then(
activePage: null == activePage _value.copyWith(
? _value.activePage activePage:
: activePage // ignore: cast_nullable_to_non_nullable null == activePage
as OkanePage, ? _value.activePage
activeAccountIndex: freezed == activeAccountIndex : activePage // ignore: cast_nullable_to_non_nullable
? _value.activeAccountIndex as OkanePage,
: activeAccountIndex // ignore: cast_nullable_to_non_nullable activeAccountIndex:
as int?, freezed == activeAccountIndex
activeTransaction: freezed == activeTransaction ? _value.activeAccountIndex
? _value.activeTransaction : activeAccountIndex // ignore: cast_nullable_to_non_nullable
: activeTransaction // ignore: cast_nullable_to_non_nullable as int?,
as Transaction?, activeTransaction:
accounts: null == accounts freezed == activeTransaction
? _value.accounts ? _value.activeTransaction
: accounts // ignore: cast_nullable_to_non_nullable : activeTransaction // ignore: cast_nullable_to_non_nullable
as List<Account>, as Transaction?,
recurringTransactions: null == recurringTransactions accounts:
? _value.recurringTransactions null == accounts
: recurringTransactions // ignore: cast_nullable_to_non_nullable ? _value.accounts
as List<RecurringTransaction>, : accounts // ignore: cast_nullable_to_non_nullable
transactions: null == transactions as List<Account>,
? _value.transactions recurringTransactions:
: transactions // ignore: cast_nullable_to_non_nullable null == recurringTransactions
as List<Transaction>, ? _value.recurringTransactions
transactionTemplates: null == transactionTemplates : recurringTransactions // ignore: cast_nullable_to_non_nullable
? _value.transactionTemplates as List<RecurringTransaction>,
: transactionTemplates // ignore: cast_nullable_to_non_nullable transactions:
as List<TransactionTemplate>, null == transactions
beneficiaries: null == beneficiaries ? _value.transactions
? _value.beneficiaries : transactions // ignore: cast_nullable_to_non_nullable
: beneficiaries // ignore: cast_nullable_to_non_nullable as List<Transaction>,
as List<Beneficiary>, transactionTemplates:
expenseCategories: null == expenseCategories null == transactionTemplates
? _value.expenseCategories ? _value.transactionTemplates
: expenseCategories // ignore: cast_nullable_to_non_nullable : transactionTemplates // ignore: cast_nullable_to_non_nullable
as List<ExpenseCategory>, as List<TransactionTemplate>,
budgets: null == budgets beneficiaries:
? _value.budgets null == beneficiaries
: budgets // ignore: cast_nullable_to_non_nullable ? _value.beneficiaries
as List<Budget>, : beneficiaries // ignore: cast_nullable_to_non_nullable
activeBudget: freezed == activeBudget as List<Beneficiary>,
? _value.activeBudget expenseCategories:
: activeBudget // ignore: cast_nullable_to_non_nullable null == expenseCategories
as Budget?, ? _value.expenseCategories
) as $Val); : expenseCategories // ignore: cast_nullable_to_non_nullable
as List<ExpenseCategory>,
budgets:
null == budgets
? _value.budgets
: budgets // ignore: cast_nullable_to_non_nullable
as List<Budget>,
activeBudget:
freezed == activeBudget
? _value.activeBudget
: activeBudget // ignore: cast_nullable_to_non_nullable
as Budget?,
)
as $Val,
);
} }
} }
@ -133,22 +149,24 @@ class _$CoreStateCopyWithImpl<$Res, $Val extends CoreState>
abstract class _$$CoreStateImplCopyWith<$Res> abstract class _$$CoreStateImplCopyWith<$Res>
implements $CoreStateCopyWith<$Res> { implements $CoreStateCopyWith<$Res> {
factory _$$CoreStateImplCopyWith( factory _$$CoreStateImplCopyWith(
_$CoreStateImpl value, $Res Function(_$CoreStateImpl) then) = _$CoreStateImpl value,
__$$CoreStateImplCopyWithImpl<$Res>; $Res Function(_$CoreStateImpl) then,
) = __$$CoreStateImplCopyWithImpl<$Res>;
@override @override
@useResult @useResult
$Res call( $Res call({
{OkanePage activePage, OkanePage activePage,
int? activeAccountIndex, int? activeAccountIndex,
Transaction? activeTransaction, Transaction? activeTransaction,
List<Account> accounts, List<Account> accounts,
List<RecurringTransaction> recurringTransactions, List<RecurringTransaction> recurringTransactions,
List<Transaction> transactions, List<Transaction> transactions,
List<TransactionTemplate> transactionTemplates, List<TransactionTemplate> transactionTemplates,
List<Beneficiary> beneficiaries, List<Beneficiary> beneficiaries,
List<ExpenseCategory> expenseCategories, List<ExpenseCategory> expenseCategories,
List<Budget> budgets, List<Budget> budgets,
Budget? activeBudget}); Budget? activeBudget,
});
} }
/// @nodoc /// @nodoc
@ -156,8 +174,9 @@ class __$$CoreStateImplCopyWithImpl<$Res>
extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl> extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl>
implements _$$CoreStateImplCopyWith<$Res> { implements _$$CoreStateImplCopyWith<$Res> {
__$$CoreStateImplCopyWithImpl( __$$CoreStateImplCopyWithImpl(
_$CoreStateImpl _value, $Res Function(_$CoreStateImpl) _then) _$CoreStateImpl _value,
: super(_value, _then); $Res Function(_$CoreStateImpl) _then,
) : super(_value, _then);
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@override @override
@ -174,77 +193,90 @@ class __$$CoreStateImplCopyWithImpl<$Res>
Object? budgets = null, Object? budgets = null,
Object? activeBudget = freezed, Object? activeBudget = freezed,
}) { }) {
return _then(_$CoreStateImpl( return _then(
activePage: null == activePage _$CoreStateImpl(
? _value.activePage activePage:
: activePage // ignore: cast_nullable_to_non_nullable null == activePage
as OkanePage, ? _value.activePage
activeAccountIndex: freezed == activeAccountIndex : activePage // ignore: cast_nullable_to_non_nullable
? _value.activeAccountIndex as OkanePage,
: activeAccountIndex // ignore: cast_nullable_to_non_nullable activeAccountIndex:
as int?, freezed == activeAccountIndex
activeTransaction: freezed == activeTransaction ? _value.activeAccountIndex
? _value.activeTransaction : activeAccountIndex // ignore: cast_nullable_to_non_nullable
: activeTransaction // ignore: cast_nullable_to_non_nullable as int?,
as Transaction?, activeTransaction:
accounts: null == accounts freezed == activeTransaction
? _value._accounts ? _value.activeTransaction
: accounts // ignore: cast_nullable_to_non_nullable : activeTransaction // ignore: cast_nullable_to_non_nullable
as List<Account>, as Transaction?,
recurringTransactions: null == recurringTransactions accounts:
? _value._recurringTransactions null == accounts
: recurringTransactions // ignore: cast_nullable_to_non_nullable ? _value._accounts
as List<RecurringTransaction>, : accounts // ignore: cast_nullable_to_non_nullable
transactions: null == transactions as List<Account>,
? _value._transactions recurringTransactions:
: transactions // ignore: cast_nullable_to_non_nullable null == recurringTransactions
as List<Transaction>, ? _value._recurringTransactions
transactionTemplates: null == transactionTemplates : recurringTransactions // ignore: cast_nullable_to_non_nullable
? _value._transactionTemplates as List<RecurringTransaction>,
: transactionTemplates // ignore: cast_nullable_to_non_nullable transactions:
as List<TransactionTemplate>, null == transactions
beneficiaries: null == beneficiaries ? _value._transactions
? _value._beneficiaries : transactions // ignore: cast_nullable_to_non_nullable
: beneficiaries // ignore: cast_nullable_to_non_nullable as List<Transaction>,
as List<Beneficiary>, transactionTemplates:
expenseCategories: null == expenseCategories null == transactionTemplates
? _value._expenseCategories ? _value._transactionTemplates
: expenseCategories // ignore: cast_nullable_to_non_nullable : transactionTemplates // ignore: cast_nullable_to_non_nullable
as List<ExpenseCategory>, as List<TransactionTemplate>,
budgets: null == budgets beneficiaries:
? _value._budgets null == beneficiaries
: budgets // ignore: cast_nullable_to_non_nullable ? _value._beneficiaries
as List<Budget>, : beneficiaries // ignore: cast_nullable_to_non_nullable
activeBudget: freezed == activeBudget as List<Beneficiary>,
? _value.activeBudget expenseCategories:
: activeBudget // ignore: cast_nullable_to_non_nullable null == expenseCategories
as Budget?, ? _value._expenseCategories
)); : expenseCategories // ignore: cast_nullable_to_non_nullable
as List<ExpenseCategory>,
budgets:
null == budgets
? _value._budgets
: budgets // ignore: cast_nullable_to_non_nullable
as List<Budget>,
activeBudget:
freezed == activeBudget
? _value.activeBudget
: activeBudget // ignore: cast_nullable_to_non_nullable
as Budget?,
),
);
} }
} }
/// @nodoc /// @nodoc
class _$CoreStateImpl implements _CoreState { class _$CoreStateImpl implements _CoreState {
const _$CoreStateImpl( const _$CoreStateImpl({
{this.activePage = OkanePage.accounts, this.activePage = OkanePage.accounts,
this.activeAccountIndex, this.activeAccountIndex,
this.activeTransaction = null, this.activeTransaction = null,
final List<Account> accounts = const [], final List<Account> accounts = const [],
final List<RecurringTransaction> recurringTransactions = const [], final List<RecurringTransaction> recurringTransactions = const [],
final List<Transaction> transactions = const [], final List<Transaction> transactions = const [],
final List<TransactionTemplate> transactionTemplates = const [], final List<TransactionTemplate> transactionTemplates = const [],
final List<Beneficiary> beneficiaries = const [], final List<Beneficiary> beneficiaries = const [],
final List<ExpenseCategory> expenseCategories = const [], final List<ExpenseCategory> expenseCategories = const [],
final List<Budget> budgets = const [], final List<Budget> budgets = const [],
this.activeBudget = null}) this.activeBudget = null,
: _accounts = accounts, }) : _accounts = accounts,
_recurringTransactions = recurringTransactions, _recurringTransactions = recurringTransactions,
_transactions = transactions, _transactions = transactions,
_transactionTemplates = transactionTemplates, _transactionTemplates = transactionTemplates,
_beneficiaries = beneficiaries, _beneficiaries = beneficiaries,
_expenseCategories = expenseCategories, _expenseCategories = expenseCategories,
_budgets = budgets; _budgets = budgets;
@override @override
@JsonKey() @JsonKey()
@ -341,16 +373,26 @@ class _$CoreStateImpl implements _CoreState {
(identical(other.activeTransaction, activeTransaction) || (identical(other.activeTransaction, activeTransaction) ||
other.activeTransaction == activeTransaction) && other.activeTransaction == activeTransaction) &&
const DeepCollectionEquality().equals(other._accounts, _accounts) && const DeepCollectionEquality().equals(other._accounts, _accounts) &&
const DeepCollectionEquality() const DeepCollectionEquality().equals(
.equals(other._recurringTransactions, _recurringTransactions) && other._recurringTransactions,
const DeepCollectionEquality() _recurringTransactions,
.equals(other._transactions, _transactions) && ) &&
const DeepCollectionEquality() const DeepCollectionEquality().equals(
.equals(other._transactionTemplates, _transactionTemplates) && other._transactions,
const DeepCollectionEquality() _transactions,
.equals(other._beneficiaries, _beneficiaries) && ) &&
const DeepCollectionEquality() const DeepCollectionEquality().equals(
.equals(other._expenseCategories, _expenseCategories) && other._transactionTemplates,
_transactionTemplates,
) &&
const DeepCollectionEquality().equals(
other._beneficiaries,
_beneficiaries,
) &&
const DeepCollectionEquality().equals(
other._expenseCategories,
_expenseCategories,
) &&
const DeepCollectionEquality().equals(other._budgets, _budgets) && const DeepCollectionEquality().equals(other._budgets, _budgets) &&
(identical(other.activeBudget, activeBudget) || (identical(other.activeBudget, activeBudget) ||
other.activeBudget == activeBudget)); other.activeBudget == activeBudget));
@ -358,18 +400,19 @@ class _$CoreStateImpl implements _CoreState {
@override @override
int get hashCode => Object.hash( int get hashCode => Object.hash(
runtimeType, runtimeType,
activePage, activePage,
activeAccountIndex, activeAccountIndex,
activeTransaction, activeTransaction,
const DeepCollectionEquality().hash(_accounts), const DeepCollectionEquality().hash(_accounts),
const DeepCollectionEquality().hash(_recurringTransactions), const DeepCollectionEquality().hash(_recurringTransactions),
const DeepCollectionEquality().hash(_transactions), const DeepCollectionEquality().hash(_transactions),
const DeepCollectionEquality().hash(_transactionTemplates), const DeepCollectionEquality().hash(_transactionTemplates),
const DeepCollectionEquality().hash(_beneficiaries), const DeepCollectionEquality().hash(_beneficiaries),
const DeepCollectionEquality().hash(_expenseCategories), const DeepCollectionEquality().hash(_expenseCategories),
const DeepCollectionEquality().hash(_budgets), const DeepCollectionEquality().hash(_budgets),
activeBudget); activeBudget,
);
@JsonKey(ignore: true) @JsonKey(ignore: true)
@override @override
@ -379,18 +422,19 @@ class _$CoreStateImpl implements _CoreState {
} }
abstract class _CoreState implements CoreState { abstract class _CoreState implements CoreState {
const factory _CoreState( const factory _CoreState({
{final OkanePage activePage, final OkanePage activePage,
final int? activeAccountIndex, final int? activeAccountIndex,
final Transaction? activeTransaction, final Transaction? activeTransaction,
final List<Account> accounts, final List<Account> accounts,
final List<RecurringTransaction> recurringTransactions, final List<RecurringTransaction> recurringTransactions,
final List<Transaction> transactions, final List<Transaction> transactions,
final List<TransactionTemplate> transactionTemplates, final List<TransactionTemplate> transactionTemplates,
final List<Beneficiary> beneficiaries, final List<Beneficiary> beneficiaries,
final List<ExpenseCategory> expenseCategories, final List<ExpenseCategory> expenseCategories,
final List<Budget> budgets, final List<Budget> budgets,
final Budget? activeBudget}) = _$CoreStateImpl; final Budget? activeBudget,
}) = _$CoreStateImpl;
@override @override
OkanePage get activePage; OkanePage get activePage;

View File

@ -1,48 +0,0 @@
import 'dart:convert';
import 'package:bloc/bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:shared_preferences/shared_preferences.dart';
part 'settings.freezed.dart';
part 'settings.g.dart';
enum ColorSchemeSettings { light, dark, system }
@freezed
abstract class Settings with _$Settings {
const factory Settings({
@Default(ColorSchemeSettings.system) ColorSchemeSettings colorScheme,
}) = _Settings;
factory Settings.fromJson(Map<String, Object?> json) =>
_$SettingsFromJson(json);
}
@freezed
abstract class SettingsWrapper with _$SettingsWrapper {
const factory SettingsWrapper({@Default(Settings()) Settings settings}) =
_SettingsWrapper;
}
class SettingsCubit extends Cubit<SettingsWrapper> {
final SharedPreferencesAsync _prefs = SharedPreferencesAsync();
SettingsCubit() : super(SettingsWrapper());
Future<void> loadSettings() async {
final value = await _prefs.getString("settings");
if (value == null) {
await _prefs.setString("settings", jsonEncode(Settings().toJson()));
return;
}
emit(state.copyWith(settings: Settings.fromJson(jsonDecode(value))));
}
Future<void> setSettings(Settings settings) async {
emit(state.copyWith(settings: settings));
await _prefs.setString("settings", jsonEncode(settings.toJson()));
}
}

View File

@ -1,287 +0,0 @@
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
part of 'settings.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
Settings _$SettingsFromJson(Map<String, dynamic> json) {
return _Settings.fromJson(json);
}
/// @nodoc
mixin _$Settings {
ColorSchemeSettings get colorScheme => throw _privateConstructorUsedError;
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$SettingsCopyWith<Settings> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $SettingsCopyWith<$Res> {
factory $SettingsCopyWith(Settings value, $Res Function(Settings) then) =
_$SettingsCopyWithImpl<$Res, Settings>;
@useResult
$Res call({ColorSchemeSettings colorScheme});
}
/// @nodoc
class _$SettingsCopyWithImpl<$Res, $Val extends Settings>
implements $SettingsCopyWith<$Res> {
_$SettingsCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
@pragma('vm:prefer-inline')
@override
$Res call({
Object? colorScheme = null,
}) {
return _then(_value.copyWith(
colorScheme: null == colorScheme
? _value.colorScheme
: colorScheme // ignore: cast_nullable_to_non_nullable
as ColorSchemeSettings,
) as $Val);
}
}
/// @nodoc
abstract class _$$SettingsImplCopyWith<$Res>
implements $SettingsCopyWith<$Res> {
factory _$$SettingsImplCopyWith(
_$SettingsImpl value, $Res Function(_$SettingsImpl) then) =
__$$SettingsImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({ColorSchemeSettings colorScheme});
}
/// @nodoc
class __$$SettingsImplCopyWithImpl<$Res>
extends _$SettingsCopyWithImpl<$Res, _$SettingsImpl>
implements _$$SettingsImplCopyWith<$Res> {
__$$SettingsImplCopyWithImpl(
_$SettingsImpl _value, $Res Function(_$SettingsImpl) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? colorScheme = null,
}) {
return _then(_$SettingsImpl(
colorScheme: null == colorScheme
? _value.colorScheme
: colorScheme // ignore: cast_nullable_to_non_nullable
as ColorSchemeSettings,
));
}
}
/// @nodoc
@JsonSerializable()
class _$SettingsImpl implements _Settings {
const _$SettingsImpl({this.colorScheme = ColorSchemeSettings.system});
factory _$SettingsImpl.fromJson(Map<String, dynamic> json) =>
_$$SettingsImplFromJson(json);
@override
@JsonKey()
final ColorSchemeSettings colorScheme;
@override
String toString() {
return 'Settings(colorScheme: $colorScheme)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$SettingsImpl &&
(identical(other.colorScheme, colorScheme) ||
other.colorScheme == colorScheme));
}
@JsonKey(ignore: true)
@override
int get hashCode => Object.hash(runtimeType, colorScheme);
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$SettingsImplCopyWith<_$SettingsImpl> get copyWith =>
__$$SettingsImplCopyWithImpl<_$SettingsImpl>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$SettingsImplToJson(
this,
);
}
}
abstract class _Settings implements Settings {
const factory _Settings({final ColorSchemeSettings colorScheme}) =
_$SettingsImpl;
factory _Settings.fromJson(Map<String, dynamic> json) =
_$SettingsImpl.fromJson;
@override
ColorSchemeSettings get colorScheme;
@override
@JsonKey(ignore: true)
_$$SettingsImplCopyWith<_$SettingsImpl> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
mixin _$SettingsWrapper {
Settings get settings => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
$SettingsWrapperCopyWith<SettingsWrapper> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $SettingsWrapperCopyWith<$Res> {
factory $SettingsWrapperCopyWith(
SettingsWrapper value, $Res Function(SettingsWrapper) then) =
_$SettingsWrapperCopyWithImpl<$Res, SettingsWrapper>;
@useResult
$Res call({Settings settings});
$SettingsCopyWith<$Res> get settings;
}
/// @nodoc
class _$SettingsWrapperCopyWithImpl<$Res, $Val extends SettingsWrapper>
implements $SettingsWrapperCopyWith<$Res> {
_$SettingsWrapperCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
@pragma('vm:prefer-inline')
@override
$Res call({
Object? settings = null,
}) {
return _then(_value.copyWith(
settings: null == settings
? _value.settings
: settings // ignore: cast_nullable_to_non_nullable
as Settings,
) as $Val);
}
@override
@pragma('vm:prefer-inline')
$SettingsCopyWith<$Res> get settings {
return $SettingsCopyWith<$Res>(_value.settings, (value) {
return _then(_value.copyWith(settings: value) as $Val);
});
}
}
/// @nodoc
abstract class _$$SettingsWrapperImplCopyWith<$Res>
implements $SettingsWrapperCopyWith<$Res> {
factory _$$SettingsWrapperImplCopyWith(_$SettingsWrapperImpl value,
$Res Function(_$SettingsWrapperImpl) then) =
__$$SettingsWrapperImplCopyWithImpl<$Res>;
@override
@useResult
$Res call({Settings settings});
@override
$SettingsCopyWith<$Res> get settings;
}
/// @nodoc
class __$$SettingsWrapperImplCopyWithImpl<$Res>
extends _$SettingsWrapperCopyWithImpl<$Res, _$SettingsWrapperImpl>
implements _$$SettingsWrapperImplCopyWith<$Res> {
__$$SettingsWrapperImplCopyWithImpl(
_$SettingsWrapperImpl _value, $Res Function(_$SettingsWrapperImpl) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? settings = null,
}) {
return _then(_$SettingsWrapperImpl(
settings: null == settings
? _value.settings
: settings // ignore: cast_nullable_to_non_nullable
as Settings,
));
}
}
/// @nodoc
class _$SettingsWrapperImpl implements _SettingsWrapper {
const _$SettingsWrapperImpl({this.settings = const Settings()});
@override
@JsonKey()
final Settings settings;
@override
String toString() {
return 'SettingsWrapper(settings: $settings)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$SettingsWrapperImpl &&
(identical(other.settings, settings) ||
other.settings == settings));
}
@override
int get hashCode => Object.hash(runtimeType, settings);
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$SettingsWrapperImplCopyWith<_$SettingsWrapperImpl> get copyWith =>
__$$SettingsWrapperImplCopyWithImpl<_$SettingsWrapperImpl>(
this, _$identity);
}
abstract class _SettingsWrapper implements SettingsWrapper {
const factory _SettingsWrapper({final Settings settings}) =
_$SettingsWrapperImpl;
@override
Settings get settings;
@override
@JsonKey(ignore: true)
_$$SettingsWrapperImplCopyWith<_$SettingsWrapperImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@ -1,25 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'settings.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
_$SettingsImpl _$$SettingsImplFromJson(Map<String, dynamic> json) =>
_$SettingsImpl(
colorScheme: $enumDecodeNullable(
_$ColorSchemeSettingsEnumMap, json['colorScheme']) ??
ColorSchemeSettings.system,
);
Map<String, dynamic> _$$SettingsImplToJson(_$SettingsImpl instance) =>
<String, dynamic>{
'colorScheme': _$ColorSchemeSettingsEnumMap[instance.colorScheme]!,
};
const _$ColorSchemeSettingsEnumMap = {
ColorSchemeSettings.light: 'light',
ColorSchemeSettings.dark: 'dark',
ColorSchemeSettings.system: 'system',
};

View File

@ -1,14 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:okane/database/collections/template.dart';
import 'package:okane/screen.dart'; import 'package:okane/screen.dart';
import 'package:okane/ui/state/core.dart';
Future<T?> showDialogOrModal<T>({ Future<T?> showDialogOrModal<T>({
required BuildContext context, required BuildContext context,
required WidgetBuilder builder, required WidgetBuilder builder,
bool showDragHandle = true, bool showDragHandle = true,
bool horizontalPaddingOnMobile = true,
}) { }) {
final screenSize = getScreenSize(context); final screenSize = getScreenSize(context);
final width = MediaQuery.sizeOf(context).shortestSide; final width = MediaQuery.sizeOf(context).shortestSide;
@ -22,8 +18,6 @@ Future<T?> showDialogOrModal<T>({
(context) => Padding( (context) => Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
bottom: 32 + MediaQuery.of(context).viewInsets.bottom, bottom: 32 + MediaQuery.of(context).viewInsets.bottom,
left: horizontalPaddingOnMobile ? 16 : 0,
right: horizontalPaddingOnMobile ? 16 : 0,
), ),
child: builder(context), child: builder(context),
), ),
@ -32,14 +26,11 @@ Future<T?> showDialogOrModal<T>({
context: context, context: context,
builder: builder:
(context) => Dialog( (context) => Dialog(
child: Padding( child: Container(
padding: EdgeInsets.only(top: 16), constraints: BoxConstraints(maxWidth: width * 0.7),
child: Container( child: Padding(
constraints: BoxConstraints(maxWidth: width * 0.7), padding: EdgeInsets.only(bottom: 32),
child: Padding( child: builder(context),
padding: EdgeInsets.only(bottom: 32),
child: builder(context),
),
), ),
), ),
), ),
@ -47,37 +38,6 @@ Future<T?> showDialogOrModal<T>({
}; };
} }
Future<TransactionTemplate?> selectTransactionTemplate(BuildContext context) {
return showDialogOrModal<TransactionTemplate>(
context: context,
builder: (context) {
return BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) {
if (state.transactionTemplates.isEmpty) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Text("No templates defined"),
);
}
return ListView.builder(
itemCount: state.transactionTemplates.length,
itemBuilder:
(context, index) => ListTile(
title: Text(state.transactionTemplates[index].name),
onTap: () {
Navigator.of(
context,
).pop(state.transactionTemplates[index]);
},
),
);
},
);
},
);
}
DateTime toMidnight(DateTime t) { DateTime toMidnight(DateTime t) {
return DateTime(t.year, t.month, t.day); return DateTime(t.year, t.month, t.day);
} }
@ -116,29 +76,3 @@ String formatCurrency(double amount, {bool precise = true}) {
DateTime monthEnding(DateTime now) { DateTime monthEnding(DateTime now) {
return DateTime(now.year, now.month, 32, 23, 59, 59); return DateTime(now.year, now.month, 32, 23, 59, 59);
} }
Future<bool> confirm(BuildContext context, String title, String body) async {
final result = await showDialog<bool>(
context: context,
builder:
(context) => AlertDialog(
title: Text(title),
content: Text(body),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop(true);
},
child: Text("Delete", style: TextStyle(color: Colors.red)),
),
TextButton(
onPressed: () {
Navigator.of(context).pop(false);
},
child: Text("Cancel"),
),
],
),
);
return result ?? false;
}

View File

@ -151,6 +151,44 @@ class _AddRecurringTransactionTemplateWidgetState
decoration: InputDecoration(label: Text("Template name")), decoration: InputDecoration(label: Text("Template name")),
), ),
), ),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: SearchField<Beneficiary>(
suggestions:
beneficiaries
.where((el) {
final bloc = GetIt.I.get<CoreCubit>();
if (el.type == BeneficiaryType.account) {
return el.account.value?.id != bloc.activeAccount?.id;
}
return true;
})
.map((el) {
return SearchFieldListItem(
getBeneficiaryName(el),
item: el,
);
})
.toList(),
hint: "Beneficiary",
controller: _beneficiaryTextController,
selectedValue: _selectedBeneficiary,
onSuggestionTap: (beneficiary) {
setState(() => _selectedBeneficiary = beneficiary);
},
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: TextField(
controller: _amountTextController,
keyboardType: TextInputType.numberWithOptions(
signed: false,
decimal: false,
),
decoration: InputDecoration(hintText: "Amount"),
),
),
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
@ -175,51 +213,6 @@ class _AddRecurringTransactionTemplateWidgetState
), ),
), ),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: SearchField<Beneficiary>(
suggestions:
beneficiaries
.where((el) {
final bloc = GetIt.I.get<CoreCubit>();
if (el.type == BeneficiaryType.account) {
return el.account.value?.id != bloc.activeAccount?.id;
}
return true;
})
.map((el) {
return SearchFieldListItem(
getBeneficiaryName(el),
item: el,
);
})
.toList(),
hint: switch (_selectedDirection) {
TransactionDirection.send => "Payee",
TransactionDirection.receive => "Payer",
},
controller: _beneficiaryTextController,
selectedValue: _selectedBeneficiary,
onSuggestionTap: (beneficiary) {
setState(() => _selectedBeneficiary = beneficiary);
},
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: TextField(
controller: _amountTextController,
keyboardType: TextInputType.numberWithOptions(
signed: false,
decimal: false,
),
decoration: InputDecoration(
hintText: "Amount",
icon: Icon(Icons.euro),
),
),
),
Padding( Padding(
padding: EdgeInsets.only(left: 16, right: 16, top: 16), padding: EdgeInsets.only(left: 16, right: 16, top: 16),
child: SegmentedButton<Period>( child: SegmentedButton<Period>(

View File

@ -4,7 +4,6 @@ import 'package:get_it/get_it.dart';
import 'package:okane/database/collections/account.dart'; import 'package:okane/database/collections/account.dart';
import 'package:okane/database/collections/beneficiary.dart'; import 'package:okane/database/collections/beneficiary.dart';
import 'package:okane/database/collections/expense_category.dart'; import 'package:okane/database/collections/expense_category.dart';
import 'package:okane/database/collections/recurrent.dart';
import 'package:okane/database/collections/template.dart'; import 'package:okane/database/collections/template.dart';
import 'package:okane/database/database.dart'; import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';
@ -13,8 +12,6 @@ import 'package:okane/ui/utils.dart';
import 'package:okane/ui/widgets/add_expense_category.dart'; import 'package:okane/ui/widgets/add_expense_category.dart';
import 'package:searchfield/searchfield.dart'; import 'package:searchfield/searchfield.dart';
enum Period { days, weeks, months, years }
class AddTransactionTemplateWidget extends StatefulWidget { class AddTransactionTemplateWidget extends StatefulWidget {
final VoidCallback onAdd; final VoidCallback onAdd;
@ -42,12 +39,7 @@ class _AddTransactionTemplateWidgetState
TransactionDirection _selectedDirection = TransactionDirection.send; TransactionDirection _selectedDirection = TransactionDirection.send;
ExpenseCategory? _expenseCategory; ExpenseCategory? _expenseCategory = null;
bool _isRecurring = false;
Period _selectedPeriod = Period.weeks;
int _periodSize = 1;
String getBeneficiaryName(Beneficiary item) { String getBeneficiaryName(Beneficiary item) {
return switch (item.type) { return switch (item.type) {
@ -59,7 +51,6 @@ class _AddTransactionTemplateWidgetState
Future<void> _submit(BuildContext context) async { Future<void> _submit(BuildContext context) async {
final beneficiaryName = _beneficiaryTextController.text; final beneficiaryName = _beneficiaryTextController.text;
if (_selectedBeneficiary == null && beneficiaryName.isEmpty) { if (_selectedBeneficiary == null && beneficiaryName.isEmpty) {
print("No beneficiary");
return; return;
} }
if (_templateNameController.text.isEmpty) { if (_templateNameController.text.isEmpty) {
@ -112,31 +103,15 @@ class _AddTransactionTemplateWidgetState
TransactionDirection.receive => 1, TransactionDirection.receive => 1,
}; };
final amount = factor * double.parse(_amountTextController.text).abs(); final amount = factor * double.parse(_amountTextController.text).abs();
final template = final transaction =
TransactionTemplate() TransactionTemplate()
..name = _templateNameController.text ..name = _templateNameController.text
..account.value = widget.activeAccountItem ..account.value = widget.activeAccountItem
..beneficiary.value = beneficiary ..beneficiary.value = beneficiary
..expenseCategory.value = _expenseCategory ..expenseCategory.value = _expenseCategory
..recurring = _isRecurring ..recurring = false
..amount = amount; ..amount = amount;
await upsertTransactionTemplate(template); await upsertTransactionTemplate(transaction);
if (_isRecurring) {
final days = switch (_selectedPeriod) {
Period.days => _periodSize,
Period.weeks => _periodSize * 7,
Period.months => _periodSize * 31,
Period.years => _periodSize * 365,
};
final recurringTransaction =
RecurringTransaction()
..account.value = widget.activeAccountItem
..template.value = template
..lastExecution = null
..days = days;
await upsertRecurringTransaction(recurringTransaction);
}
widget.onAdd(); widget.onAdd();
} }
@ -154,6 +129,68 @@ class _AddTransactionTemplateWidgetState
decoration: InputDecoration(label: Text("Template name")), decoration: InputDecoration(label: Text("Template name")),
), ),
), ),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: BlocBuilder<CoreCubit, CoreState>(
builder:
(context, state) => SearchField<Beneficiary>(
suggestions:
state.beneficiaries
.where((el) {
final bloc = GetIt.I.get<CoreCubit>();
if (el.type == BeneficiaryType.account) {
return el.account.value?.id !=
bloc.activeAccount?.id;
}
return true;
})
.map((el) {
return SearchFieldListItem(
getBeneficiaryName(el),
item: el,
);
})
.toList(),
hint: "Beneficiary",
controller: _beneficiaryTextController,
selectedValue: _selectedBeneficiary,
onSuggestionTap: (beneficiary) {
setState(() => _selectedBeneficiary = beneficiary);
},
),
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: TextField(
controller: _amountTextController,
keyboardType: TextInputType.numberWithOptions(
signed: false,
decimal: false,
),
decoration: InputDecoration(hintText: "Amount"),
),
),
Row(
children: [
Text("Expense category"),
OutlinedButton(
onPressed: () async {
final category = await showDialogOrModal(
context: context,
builder: (_) => AddExpenseCategory(),
);
if (category == null) {
return;
}
setState(() => _expenseCategory = category);
},
child: Text(_expenseCategory?.name ?? "None"),
),
],
),
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
@ -178,165 +215,6 @@ class _AddTransactionTemplateWidgetState
), ),
), ),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: BlocBuilder<CoreCubit, CoreState>(
builder:
(context, state) => SearchField<Beneficiary>(
suggestions:
state.beneficiaries
.where((el) {
final bloc = GetIt.I.get<CoreCubit>();
if (el.type == BeneficiaryType.account) {
return el.account.value?.id !=
bloc.activeAccount?.id;
}
return true;
})
.map((el) {
return SearchFieldListItem(
getBeneficiaryName(el),
item: el,
);
})
.toList(),
hint: switch (_selectedDirection) {
TransactionDirection.send => "Payee",
TransactionDirection.receive => "Payer",
},
controller: _beneficiaryTextController,
selectedValue: _selectedBeneficiary,
onSuggestionTap: (beneficiary) {
setState(() => _selectedBeneficiary = beneficiary);
},
),
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: TextField(
controller: _amountTextController,
keyboardType: TextInputType.numberWithOptions(
signed: false,
decimal: false,
),
decoration: InputDecoration(
hintText: "Amount",
icon: Icon(Icons.euro),
),
),
),
Row(
children: [
Text("Expense category"),
Padding(
padding: EdgeInsets.only(left: 16),
child: OutlinedButton(
onPressed: () async {
final category = await showDialogOrModal(
context: context,
builder: (_) => AddExpenseCategory(),
);
if (category == null) {
return;
}
setState(() => _expenseCategory = category);
},
child: Text(_expenseCategory?.name ?? "None"),
),
),
],
),
Row(
children: [
Text("Is recurring"),
Padding(
padding: EdgeInsets.only(left: 16),
child: Switch(
value: _isRecurring,
onChanged: (value) {
setState(() {
_isRecurring = value;
});
},
),
),
],
),
Padding(
padding: EdgeInsets.only(left: 16, right: 16, top: 16),
child: SegmentedButton<Period>(
segments: [
ButtonSegment(value: Period.days, label: Text("Days")),
ButtonSegment(value: Period.weeks, label: Text("Weeks")),
ButtonSegment(value: Period.months, label: Text("Months")),
ButtonSegment(value: Period.years, label: Text("Years")),
],
selected: <Period>{_selectedPeriod},
multiSelectionEnabled: false,
onSelectionChanged:
_isRecurring
? (selection) {
setState(() => _selectedPeriod = selection.first);
}
: null,
),
),
Row(
children: [
IconButton(
icon: Icon(Icons.remove),
onPressed:
_isRecurring
? () {
if (_periodSize <= 1) {
return;
}
setState(() {
_periodSize--;
});
}
: null,
),
SizedBox(
width: 100,
child: Center(
child: Text(
switch (_selectedPeriod) {
Period.days => "$_periodSize days",
Period.weeks => "$_periodSize weeks",
Period.months => "$_periodSize months",
Period.years => "$_periodSize years",
},
style: TextStyle(
color: _isRecurring ? Colors.black : Colors.grey,
),
),
),
),
IconButton(
icon: Icon(Icons.add),
onPressed:
_isRecurring
? () {
setState(() {
_periodSize++;
});
}
: null,
),
],
),
Align( Align(
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
child: OutlinedButton( child: OutlinedButton(

View File

@ -4,7 +4,6 @@ import 'package:get_it/get_it.dart';
import 'package:okane/database/collections/account.dart'; import 'package:okane/database/collections/account.dart';
import 'package:okane/database/collections/beneficiary.dart'; import 'package:okane/database/collections/beneficiary.dart';
import 'package:okane/database/collections/expense_category.dart'; import 'package:okane/database/collections/expense_category.dart';
import 'package:okane/database/collections/template.dart';
import 'package:okane/database/collections/transaction.dart'; import 'package:okane/database/collections/transaction.dart';
import 'package:okane/database/database.dart'; import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';
@ -13,18 +12,13 @@ import 'package:okane/ui/utils.dart';
import 'package:okane/ui/widgets/add_expense_category.dart'; import 'package:okane/ui/widgets/add_expense_category.dart';
import 'package:searchfield/searchfield.dart'; import 'package:searchfield/searchfield.dart';
typedef AddTransactionCallback = void Function(Transaction);
class AddTransactionWidget extends StatefulWidget { class AddTransactionWidget extends StatefulWidget {
final AddTransactionCallback onAdd; final VoidCallback onAdd;
final Account activeAccountItem; final Account activeAccountItem;
final TransactionTemplate? template;
const AddTransactionWidget({ const AddTransactionWidget({
super.key, super.key,
this.template,
required this.activeAccountItem, required this.activeAccountItem,
required this.onAdd, required this.onAdd,
}); });
@ -44,26 +38,7 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
TransactionDirection _selectedDirection = TransactionDirection.send; TransactionDirection _selectedDirection = TransactionDirection.send;
ExpenseCategory? _expenseCategory; ExpenseCategory? _expenseCategory = null;
@override
void initState() {
super.initState();
if (widget.template != null) {
_selectedDirection =
widget.template!.amount > 0
? TransactionDirection.receive
: TransactionDirection.send;
_amountTextController.text = widget.template!.amount.toString();
_beneficiaryTextController.text =
widget.template!.beneficiary.value!.name;
_selectedBeneficiary = SearchFieldListItem(
getBeneficiaryName(widget.template!.beneficiary.value!),
item: widget.template!.beneficiary.value!,
);
}
}
String getBeneficiaryName(Beneficiary item) { String getBeneficiaryName(Beneficiary item) {
return switch (item.type) { return switch (item.type) {
@ -147,7 +122,7 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
await upsertTransaction(otherTransaction); await upsertTransaction(otherTransaction);
} }
widget.onAdd(transaction); widget.onAdd();
} }
@override @override
@ -159,7 +134,33 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
children: [ children: [
OutlinedButton( OutlinedButton(
onPressed: () async { onPressed: () async {
final template = await selectTransactionTemplate(context); final template = await showDialogOrModal<Transaction>(
context: context,
builder: (context) {
return BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) {
if (state.transactionTemplates.isEmpty) {
return Text("No templates defined");
}
return ListView.builder(
itemCount: state.transactionTemplates.length,
itemBuilder:
(context, index) => ListTile(
title: Text(
state.transactionTemplates[index].name,
),
onTap: () {
Navigator.of(
context,
).pop(state.transactionTemplates[index]);
},
),
);
},
);
},
);
if (template == null) { if (template == null) {
return; return;
} }
@ -179,30 +180,6 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
}, },
child: Text("Use template"), child: Text("Use template"),
), ),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: SegmentedButton<TransactionDirection>(
segments: [
ButtonSegment(
value: TransactionDirection.send,
label: Text("Send"),
icon: Icon(Icons.remove),
),
ButtonSegment(
value: TransactionDirection.receive,
label: Text("Receive"),
icon: Icon(Icons.add),
),
],
selected: <TransactionDirection>{_selectedDirection},
multiSelectionEnabled: false,
onSelectionChanged: (selection) {
setState(() => _selectedDirection = selection.first);
},
),
),
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
child: BlocBuilder<CoreCubit, CoreState>( child: BlocBuilder<CoreCubit, CoreState>(
@ -238,6 +215,29 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
), ),
), ),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: SegmentedButton<TransactionDirection>(
segments: [
ButtonSegment(
value: TransactionDirection.send,
label: Text("Send"),
icon: Icon(Icons.remove),
),
ButtonSegment(
value: TransactionDirection.receive,
label: Text("Receive"),
icon: Icon(Icons.add),
),
],
selected: <TransactionDirection>{_selectedDirection},
multiSelectionEnabled: false,
onSelectionChanged: (selection) {
setState(() => _selectedDirection = selection.first);
},
),
),
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
child: TextField( child: TextField(
@ -246,10 +246,7 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
signed: false, signed: false,
decimal: false, decimal: false,
), ),
decoration: InputDecoration( decoration: InputDecoration(hintText: "Amount"),
hintText: "Amount",
icon: Icon(Icons.euro),
),
), ),
), ),
@ -259,28 +256,25 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Text("Date"), Text("Date"),
Padding( OutlinedButton(
padding: EdgeInsets.only(left: 16), onPressed: () async {
child: OutlinedButton( final dt = await showDatePicker(
onPressed: () async { context: context,
final dt = await showDatePicker( initialDate: _selectedDate,
context: context, firstDate: DateTime(1),
initialDate: _selectedDate, lastDate: DateTime(9999),
firstDate: DateTime(1), );
lastDate: DateTime(9999), if (dt == null) return;
);
if (dt == null) return;
setState(() => _selectedDate = dt); setState(() => _selectedDate = dt);
}, },
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Icon(Icons.date_range), Icon(Icons.date_range),
Text(formatDateTime(_selectedDate)), Text(formatDateTime(_selectedDate)),
], ],
),
), ),
), ),
], ],
@ -290,22 +284,19 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
Row( Row(
children: [ children: [
Text("Expense category"), Text("Expense category"),
Padding( OutlinedButton(
padding: EdgeInsets.only(left: 16), onPressed: () async {
child: OutlinedButton( final category = await showDialogOrModal(
onPressed: () async { context: context,
final category = await showDialogOrModal( builder: (_) => AddExpenseCategory(),
context: context, );
builder: (_) => AddExpenseCategory(), if (category == null) {
); return;
if (category == null) { }
return;
}
setState(() => _expenseCategory = category); setState(() => _expenseCategory = category);
}, },
child: Text(_expenseCategory?.name ?? "None"), child: Text(_expenseCategory?.name ?? "None"),
),
), ),
], ],
), ),

View File

@ -1,57 +1,40 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
const _BORDER_RADIUS = 8.0;
class ImageWrapper extends StatelessWidget { class ImageWrapper extends StatelessWidget {
final String title; final String title;
final String? path; final String? path;
final VoidCallback? onTap; final VoidCallback onTap;
final double width;
final double height;
const ImageWrapper({ const ImageWrapper({
super.key, super.key,
required this.title, required this.title,
this.onTap, required this.onTap,
this.path, this.path,
this.width = 45,
this.height = 45,
}); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Widget widget;
if (path == null) { if (path == null) {
return InkWell( widget = SizedBox(
onTap: onTap, width: 45,
borderRadius: BorderRadius.circular(_BORDER_RADIUS), height: 45,
child: SizedBox( child: Container(
width: width, decoration: BoxDecoration(
height: height, color: Colors.grey,
child: Container( borderRadius: BorderRadius.circular(8),
decoration: BoxDecoration(
color: Colors.grey,
borderRadius: BorderRadius.circular(_BORDER_RADIUS),
),
child: Center(child: Text(title[0])),
), ),
child: Center(child: Text(title[0])),
), ),
); );
} else { } else {
return ClipRRect( widget = ClipRRect(
borderRadius: BorderRadius.circular(_BORDER_RADIUS), borderRadius: BorderRadius.circular(8),
child: Material( child: Image.file(File(path!), width: 45, height: 45),
child: InkWell(
onTap: onTap,
radius: _BORDER_RADIUS,
child: Ink.image(
width: width,
height: height,
image: FileImage(File(path!)),
),
),
),
); );
} }
return InkWell(onTap: onTap, child: widget);
} }
} }

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:okane/database/collections/transaction.dart'; import 'package:okane/database/collections/transaction.dart';
import 'package:okane/database/database.dart';
import 'package:okane/ui/utils.dart'; import 'package:okane/ui/utils.dart';
import 'package:okane/ui/widgets/image_wrapper.dart'; import 'package:okane/ui/widgets/image_wrapper.dart';
@ -20,12 +21,12 @@ class TransactionCard extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Card( return Card(
clipBehavior: Clip.hardEdge,
child: ListTile( child: ListTile(
onTap: onTap, onTap: onTap,
leading: ImageWrapper( leading: ImageWrapper(
title: transaction.beneficiary.value!.name, title: transaction.beneficiary.value!.name,
path: transaction.beneficiary.value!.imagePath, path: transaction.beneficiary.value!.imagePath,
onTap: () {},
), ),
trailing: Text(formatDateTime(transaction.date)), trailing: Text(formatDateTime(transaction.date)),
title: Text(transaction.beneficiary.value!.name), title: Text(transaction.beneficiary.value!.name),

View File

@ -417,21 +417,13 @@ packages:
source: hosted source: hosted
version: "0.6.7" version: "0.6.7"
json_annotation: json_annotation:
dependency: "direct main" dependency: transitive
description: description:
name: json_annotation name: json_annotation
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.9.0" version: "4.9.0"
json_serializable:
dependency: "direct dev"
description:
name: json_serializable
sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b
url: "https://pub.dev"
source: hosted
version: "6.8.0"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@ -632,62 +624,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.7" version: "1.2.7"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
url: "https://pub.dev"
source: hosted
version: "2.5.3"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
url: "https://pub.dev"
source: hosted
version: "2.4.10"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
url: "https://pub.dev"
source: hosted
version: "2.5.4"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
url: "https://pub.dev"
source: hosted
version: "2.4.3"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
shelf: shelf:
dependency: transitive dependency: transitive
description: description:
@ -717,14 +653,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.5.0"
source_helper:
dependency: transitive
description:
name: source_helper
sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c"
url: "https://pub.dev"
source: hosted
version: "1.3.5"
source_span: source_span:
dependency: transitive dependency: transitive
description: description:

View File

@ -23,8 +23,6 @@ dependencies:
flutter_picker_plus: ^1.5.1 flutter_picker_plus: ^1.5.1
isar: ^3.1.0+1 isar: ^3.1.0+1
isar_flutter_libs: ^3.1.0+1 isar_flutter_libs: ^3.1.0+1
shared_preferences: ^2.5.3
json_annotation: ^4.9.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
@ -33,7 +31,6 @@ dev_dependencies:
build_runner: ^2.4.13 build_runner: ^2.4.13
freezed: 2.5.0 freezed: 2.5.0
isar_generator: ^3.1.0+1 isar_generator: ^3.1.0+1
json_serializable: ^6.4.0
flutter: flutter:
uses-material-design: true uses-material-design: true

View File

@ -1,38 +0,0 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:okane/database/collections/recurrent.dart';
void main() {
group("isDue", () {
test("null value", () {
final t = RecurringTransaction()..lastExecution = null;
expect(t.isDue(DateTime.now()), true);
});
test("Date before", () {
final now = DateTime.now();
final t =
RecurringTransaction()
..lastExecution = now
..days = 30;
expect(t.isDue(now.add(Duration(days: 10))), false);
});
test("Date before warning", () {
final now = DateTime.now();
final t =
RecurringTransaction()
..lastExecution = now
..days = 30;
expect(t.isDue(now.add(Duration(days: 20))), true);
});
test("Expired", () {
final now = DateTime.now();
final t =
RecurringTransaction()
..lastExecution = now
..days = 30;
expect(t.isDue(now.add(Duration(days: 31))), true);
});
});
}

30
test/widget_test.dart Normal file
View File

@ -0,0 +1,30 @@
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility in the flutter_test package. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:okane/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(const MyApp());
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}