Add budgets

This commit is contained in:
PapaTutuWawa 2025-05-04 19:26:11 +02:00
parent 5cc0bba09a
commit eced6e6a6d
23 changed files with 3211 additions and 1507 deletions

View File

@ -17,7 +17,11 @@ const AccountSchema = CollectionSchema(
name: r'Account', name: r'Account',
id: -6646797162501847804, id: -6646797162501847804,
properties: { properties: {
r'name': PropertySchema(id: 0, name: r'name', type: IsarType.string), r'name': PropertySchema(
id: 0,
name: r'name',
type: IsarType.string,
)
}, },
estimateSize: _accountEstimateSize, estimateSize: _accountEstimateSize,
serialize: _accountSerialize, serialize: _accountSerialize,
@ -106,7 +110,10 @@ 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(lower: id, upper: id)); return query.addWhereClause(IdWhereClause.between(
lower: id,
upper: id,
));
}); });
} }
@ -132,10 +139,8 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
}); });
} }
QueryBuilder<Account, Account, QAfterWhereClause> idGreaterThan( QueryBuilder<Account, Account, QAfterWhereClause> idGreaterThan(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.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -143,10 +148,8 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
}); });
} }
QueryBuilder<Account, Account, QAfterWhereClause> idLessThan( QueryBuilder<Account, Account, 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),
@ -161,14 +164,12 @@ 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( return query.addWhereClause(IdWhereClause.between(
IdWhereClause.between( lower: lowerId,
lower: lowerId, includeLower: includeLower,
includeLower: includeLower, upper: upperId,
upper: upperId, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
@ -177,9 +178,10 @@ 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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'id', value: value), property: r'id',
); value: value,
));
}); });
} }
@ -188,13 +190,11 @@ extension AccountQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
@ -203,13 +203,11 @@ extension AccountQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
@ -220,31 +218,29 @@ extension AccountQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'id',
property: r'id', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
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( return query.addFilterCondition(const FilterCondition.isNull(
const FilterCondition.isNull(property: r'name'), 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( return query.addFilterCondition(const FilterCondition.isNotNull(
const FilterCondition.isNotNull(property: r'name'), property: r'name',
); ));
}); });
} }
@ -253,13 +249,11 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -269,14 +263,12 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -286,14 +278,12 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -305,16 +295,14 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'name',
property: r'name', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -323,13 +311,11 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.startsWith(
FilterCondition.startsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -338,59 +324,53 @@ extension AccountQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.endsWith(
FilterCondition.endsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.contains(
FilterCondition.contains( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.matches(
FilterCondition.matches( property: r'name',
property: r'name', wildcard: pattern,
wildcard: pattern, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'name', value: ''), property: r'name',
); value: '',
));
}); });
} }
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotEmpty() { QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan(property: r'name', value: ''), property: r'name',
); value: '',
));
}); });
} }
} }
@ -444,9 +424,8 @@ 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,13 +22,17 @@ const BeneficiarySchema = CollectionSchema(
name: r'imagePath', name: r'imagePath',
type: IsarType.string, type: IsarType.string,
), ),
r'name': PropertySchema(id: 1, name: r'name', type: IsarType.string), r'name': PropertySchema(
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,
@ -42,7 +46,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,
@ -90,7 +94,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;
} }
@ -107,14 +111,16 @@ 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) BeneficiaryType.account) as P;
as P;
default: default:
throw IsarError('Unknown property with id $propertyId'); throw IsarError('Unknown property with id $propertyId');
} }
} }
const _BeneficiarytypeEnumValueMap = {'account': 0, 'other': 1}; const _BeneficiarytypeEnumValueMap = {
'account': 0,
'other': 1,
};
const _BeneficiarytypeValueEnumMap = { const _BeneficiarytypeValueEnumMap = {
0: BeneficiaryType.account, 0: BeneficiaryType.account,
1: BeneficiaryType.other, 1: BeneficiaryType.other,
@ -129,10 +135,7 @@ List<IsarLinkBase<dynamic>> _beneficiaryGetLinks(Beneficiary object) {
} }
void _beneficiaryAttach( void _beneficiaryAttach(
IsarCollection<dynamic> col, IsarCollection<dynamic> col, Id id, Beneficiary object) {
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);
} }
@ -150,13 +153,15 @@ 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(lower: id, upper: id)); return query.addWhereClause(IdWhereClause.between(
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
@ -178,10 +183,8 @@ extension BeneficiaryQueryWhere
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idGreaterThan( QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idGreaterThan(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.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -189,10 +192,8 @@ extension BeneficiaryQueryWhere
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idLessThan( QueryBuilder<Beneficiary, Beneficiary, 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),
@ -207,14 +208,12 @@ extension BeneficiaryQueryWhere
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(IdWhereClause.between(
IdWhereClause.between( lower: lowerId,
lower: lowerId, includeLower: includeLower,
includeLower: includeLower, upper: upperId,
upper: upperId, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
@ -222,12 +221,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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'id', value: value), property: r'id',
); value: value,
));
}); });
} }
@ -236,13 +235,11 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
@ -251,13 +248,11 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
@ -268,87 +263,82 @@ extension BeneficiaryQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'id',
property: r'id', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
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( return query.addFilterCondition(const FilterCondition.isNull(
const FilterCondition.isNull(property: r'imagePath'), 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( return query.addFilterCondition(const FilterCondition.isNotNull(
const FilterCondition.isNotNull(property: r'imagePath'), property: r'imagePath',
); ));
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathEqualTo(String? value, {bool caseSensitive = true}) { imagePathEqualTo(
String? value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'imagePath',
property: r'imagePath', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'imagePath',
property: r'imagePath', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'imagePath',
property: r'imagePath', value: value,
value: value, caseSensitive: caseSensitive,
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,
@ -356,86 +346,84 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'imagePath',
property: r'imagePath', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathStartsWith(String value, {bool caseSensitive = true}) { imagePathStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.startsWith(
FilterCondition.startsWith( property: r'imagePath',
property: r'imagePath', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathEndsWith(String value, {bool caseSensitive = true}) { imagePathEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.endsWith(
FilterCondition.endsWith( property: r'imagePath',
property: r'imagePath', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.contains(
FilterCondition.contains( property: r'imagePath',
property: r'imagePath', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.matches(
FilterCondition.matches( property: r'imagePath',
property: r'imagePath', wildcard: pattern,
wildcard: pattern, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'imagePath', value: ''), property: r'imagePath',
); value: '',
));
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
imagePathIsNotEmpty() { imagePathIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan(property: r'imagePath', value: ''), property: r'imagePath',
); value: '',
));
}); });
} }
@ -444,13 +432,11 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -460,14 +446,12 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -477,14 +461,12 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -496,16 +478,14 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'name',
property: r'name', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -514,13 +494,11 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.startsWith(
FilterCondition.startsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
@ -529,70 +507,64 @@ extension BeneficiaryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.endsWith(
FilterCondition.endsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.contains(
FilterCondition.contains( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.matches(
FilterCondition.matches( property: r'name',
property: r'name', wildcard: pattern,
wildcard: pattern, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'name', value: ''), property: r'name',
); value: '',
));
}); });
} }
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
nameIsNotEmpty() { nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan(property: r'name', value: ''), property: r'name',
); 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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'type', value: value), property: r'type',
); value: value,
));
}); });
} }
@ -601,13 +573,11 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'type',
property: r'type', value: value,
value: value, ));
),
);
}); });
} }
@ -616,13 +586,11 @@ extension BeneficiaryQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'type',
property: r'type', value: value,
value: value, ));
),
);
}); });
} }
@ -633,15 +601,13 @@ extension BeneficiaryQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'type',
property: r'type', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
@ -652,15 +618,14 @@ 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);
}); });
@ -759,17 +724,15 @@ 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

@ -0,0 +1,35 @@
import 'package:isar/isar.dart';
import 'package:okane/database/collections/expense_category.dart';
import 'account.dart';
part 'budget.g.dart';
enum BudgetPeriod {
month
}
@collection
class BudgetItem {
Id id = Isar.autoIncrement;
late double amount;
final expenseCategory = IsarLink<ExpenseCategory>();
}
@collection
class Budget {
Id id = Isar.autoIncrement;
@Enumerated(EnumType.ordinal)
late BudgetPeriod period;
late String name;
late double income;
final account = IsarLink<Account>();
final items = IsarLinks<BudgetItem>();
}

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,11 @@ const ExpenseCategorySchema = CollectionSchema(
name: r'ExpenseCategory', name: r'ExpenseCategory',
id: -6352499903118634, id: -6352499903118634,
properties: { properties: {
r'name': PropertySchema(id: 0, name: r'name', type: IsarType.string), r'name': PropertySchema(
id: 0,
name: r'name',
type: IsarType.string,
)
}, },
estimateSize: _expenseCategoryEstimateSize, estimateSize: _expenseCategoryEstimateSize,
serialize: _expenseCategorySerialize, serialize: _expenseCategorySerialize,
@ -87,10 +91,7 @@ List<IsarLinkBase<dynamic>> _expenseCategoryGetLinks(ExpenseCategory object) {
} }
void _expenseCategoryAttach( void _expenseCategoryAttach(
IsarCollection<dynamic> col, IsarCollection<dynamic> col, Id id, ExpenseCategory object) {
Id id,
ExpenseCategory object,
) {
object.id = id; object.id = id;
} }
@ -106,15 +107,17 @@ 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(lower: id, upper: id)); return query.addWhereClause(IdWhereClause.between(
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
@ -137,7 +140,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),
@ -146,9 +149,8 @@ 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),
@ -163,14 +165,12 @@ extension ExpenseCategoryQueryWhere
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(IdWhereClause.between(
IdWhereClause.between( lower: lowerId,
lower: lowerId, includeLower: includeLower,
includeLower: includeLower, upper: upperId,
upper: upperId, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
@ -178,111 +178,109 @@ 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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'id', value: value), property: r'id',
); value: value,
));
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
idGreaterThan(Id value, {bool include = false}) { idGreaterThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
idLessThan(Id value, {bool include = false}) { idLessThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
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( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'id',
property: r'id', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameEqualTo(String value, {bool caseSensitive = true}) { nameEqualTo(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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,
@ -290,86 +288,84 @@ extension ExpenseCategoryQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'name',
property: r'name', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameStartsWith(String value, {bool caseSensitive = true}) { nameStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.startsWith(
FilterCondition.startsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameEndsWith(String value, {bool caseSensitive = true}) { nameEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.endsWith(
FilterCondition.endsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.contains(
FilterCondition.contains( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.matches(
FilterCondition.matches( property: r'name',
property: r'name', wildcard: pattern,
wildcard: pattern, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'name', value: ''), property: r'name',
); value: '',
));
}); });
} }
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition> QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
nameIsNotEmpty() { nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan(property: r'name', value: ''), property: r'name',
); value: '',
));
}); });
} }
} }
@ -389,7 +385,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);
}); });
@ -417,7 +413,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);
}); });
@ -426,9 +422,8 @@ 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

@ -18,12 +18,16 @@ const RecurringTransactionSchema = CollectionSchema(
name: r'RecurringTransaction', name: r'RecurringTransaction',
id: 969840479390105118, id: 969840479390105118,
properties: { properties: {
r'days': PropertySchema(id: 0, name: r'days', type: IsarType.long), r'days': PropertySchema(
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,
@ -43,7 +47,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,
@ -105,30 +109,22 @@ 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, IsarCollection<dynamic> col, Id id, RecurringTransaction object) {
Id id,
RecurringTransaction object,
) {
object.id = id; object.id = id;
object.template.attach( object.template
col, .attach(col, col.isar.collection<TransactionTemplate>(), r'template', id);
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());
}); });
@ -138,14 +134,17 @@ 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(lower: id, upper: id)); return query.addWhereClause(IdWhereClause.between(
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
@ -168,7 +167,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),
@ -177,7 +176,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),
@ -186,326 +185,240 @@ 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( return query.addWhereClause(IdWhereClause.between(
IdWhereClause.between( lower: lowerId,
lower: lowerId, includeLower: includeLower,
includeLower: includeLower, upper: upperId,
upper: upperId, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
extension RecurringTransactionQueryFilter extension RecurringTransactionQueryFilter on QueryBuilder<RecurringTransaction,
on RecurringTransaction, QFilterCondition> {
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> daysEqualTo(int value) {
RecurringTransaction,
QFilterCondition
> {
QueryBuilder<
RecurringTransaction,
RecurringTransaction,
QAfterFilterCondition
>
daysEqualTo(int value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'days', value: value), property: r'days',
); value: value,
));
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> daysGreaterThan(
RecurringTransaction, int value, {
QAfterFilterCondition bool include = false,
> }) {
daysGreaterThan(int value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'days',
property: r'days', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> daysLessThan(
RecurringTransaction, int value, {
QAfterFilterCondition bool include = false,
> }) {
daysLessThan(int value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'days',
property: r'days', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> daysBetween(
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( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'days',
property: r'days', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> idEqualTo(Id value) {
RecurringTransaction,
QAfterFilterCondition
>
idEqualTo(Id value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'id', value: value), property: r'id',
); value: value,
));
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> idGreaterThan(
RecurringTransaction, Id value, {
QAfterFilterCondition bool include = false,
> }) {
idGreaterThan(Id value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> idLessThan(
RecurringTransaction, Id value, {
QAfterFilterCondition bool include = false,
> }) {
idLessThan(Id value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> idBetween(
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( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'id',
property: r'id', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> lastExecutionIsNull() {
RecurringTransaction,
QAfterFilterCondition
>
lastExecutionIsNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(const FilterCondition.isNull(
const FilterCondition.isNull(property: r'lastExecution'), property: r'lastExecution',
); ));
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> lastExecutionIsNotNull() {
RecurringTransaction,
QAfterFilterCondition
>
lastExecutionIsNotNull() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(const FilterCondition.isNotNull(
const FilterCondition.isNotNull(property: r'lastExecution'), property: r'lastExecution',
); ));
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> lastExecutionEqualTo(DateTime? value) {
RecurringTransaction,
QAfterFilterCondition
>
lastExecutionEqualTo(DateTime? value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'lastExecution', value: value), property: r'lastExecution',
); value: value,
));
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> lastExecutionGreaterThan(
RecurringTransaction, DateTime? value, {
QAfterFilterCondition bool include = false,
> }) {
lastExecutionGreaterThan(DateTime? value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'lastExecution',
property: r'lastExecution', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> lastExecutionLessThan(
RecurringTransaction, DateTime? value, {
QAfterFilterCondition bool include = false,
> }) {
lastExecutionLessThan(DateTime? value, {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'lastExecution',
property: r'lastExecution', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> lastExecutionBetween(
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( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'lastExecution',
property: r'lastExecution', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
extension RecurringTransactionQueryObject extension RecurringTransactionQueryObject on QueryBuilder<RecurringTransaction,
on RecurringTransaction, QFilterCondition> {}
QueryBuilder<
RecurringTransaction,
RecurringTransaction,
QFilterCondition
> {}
extension RecurringTransactionQueryLinks extension RecurringTransactionQueryLinks on QueryBuilder<RecurringTransaction,
on RecurringTransaction, QFilterCondition> {
QueryBuilder< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> template(FilterQuery<TransactionTemplate> q) {
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< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> templateIsNull() {
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< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> account(FilterQuery<Account> q) {
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< QueryBuilder<RecurringTransaction, RecurringTransaction,
RecurringTransaction, QAfterFilterCondition> accountIsNull() {
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);
}); });
@ -515,28 +428,28 @@ extension RecurringTransactionQueryLinks
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);
}); });
@ -546,42 +459,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);
}); });
@ -591,27 +504,22 @@ 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 extension RecurringTransactionQueryProperty on QueryBuilder<
on RecurringTransaction, RecurringTransaction, QQueryProperty> {
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');
@ -625,7 +533,7 @@ extension RecurringTransactionQueryProperty
} }
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,13 +18,21 @@ const TransactionTemplateSchema = CollectionSchema(
name: r'TransactionTemplate', name: r'TransactionTemplate',
id: -2324989530163310644, id: -2324989530163310644,
properties: { properties: {
r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double), r'amount': PropertySchema(
r'name': PropertySchema(id: 1, name: r'name', type: IsarType.string), id: 0,
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,
@ -50,7 +58,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,
@ -117,29 +125,17 @@ 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, IsarCollection<dynamic> col, Id id, TransactionTemplate object) {
Id id,
TransactionTemplate object,
) {
object.id = id; object.id = id;
object.expenseCategory.attach( object.expenseCategory.attach(
col, col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id);
col.isar.collection<ExpenseCategory>(), object.beneficiary
r'expenseCategory', .attach(col, col.isar.collection<Beneficiary>(), r'beneficiary', id);
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);
} }
@ -155,14 +151,17 @@ 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(lower: id, upper: id)); return query.addWhereClause(IdWhereClause.between(
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
@ -185,7 +184,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),
@ -194,7 +193,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),
@ -203,83 +202,73 @@ 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( return query.addWhereClause(IdWhereClause.between(
IdWhereClause.between( lower: lowerId,
lower: lowerId, includeLower: includeLower,
includeLower: includeLower, upper: upperId,
upper: upperId, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
extension TransactionTemplateQueryFilter extension TransactionTemplateQueryFilter on QueryBuilder<TransactionTemplate,
on TransactionTemplate, QFilterCondition> {
QueryBuilder<
TransactionTemplate,
TransactionTemplate,
QFilterCondition
> {
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
amountEqualTo(double value, {double epsilon = Query.epsilon}) { amountEqualTo(
double value, {
double epsilon = Query.epsilon,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'amount',
property: r'amount', value: value,
value: value, epsilon: epsilon,
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( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'amount',
property: r'amount', value: value,
value: value, epsilon: epsilon,
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( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'amount',
property: r'amount', value: value,
value: value, epsilon: epsilon,
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,
@ -287,125 +276,121 @@ extension TransactionTemplateQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'amount',
property: r'amount', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, epsilon: epsilon,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'id', value: value), property: r'id',
); value: value,
));
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
idGreaterThan(Id value, {bool include = false}) { idGreaterThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
idLessThan(Id value, {bool include = false}) { idLessThan(
Id value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
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( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'id',
property: r'id', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameEqualTo(String value, {bool caseSensitive = true}) { nameEqualTo(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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,
@ -413,151 +398,140 @@ extension TransactionTemplateQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'name',
property: r'name', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameStartsWith(String value, {bool caseSensitive = true}) { nameStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.startsWith(
FilterCondition.startsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameEndsWith(String value, {bool caseSensitive = true}) { nameEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.endsWith(
FilterCondition.endsWith( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.contains(
FilterCondition.contains( property: r'name',
property: r'name', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.matches(
FilterCondition.matches( property: r'name',
property: r'name', wildcard: pattern,
wildcard: pattern, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'name', value: ''), property: r'name',
); value: '',
));
}); });
} }
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition> QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
nameIsNotEmpty() { nameIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan(property: r'name', value: ''), property: r'name',
); 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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'recurring', value: value), property: r'recurring',
); value: value,
));
}); });
} }
} }
extension TransactionTemplateQueryObject extension TransactionTemplateQueryObject on QueryBuilder<TransactionTemplate,
on TransactionTemplate, QFilterCondition> {}
QueryBuilder<
TransactionTemplate,
TransactionTemplate,
QFilterCondition
> {}
extension TransactionTemplateQueryLinks extension TransactionTemplateQueryLinks on QueryBuilder<TransactionTemplate,
on TransactionTemplate, QFilterCondition> {
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);
}); });
@ -567,42 +541,42 @@ extension TransactionTemplateQueryLinks
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);
}); });
@ -612,56 +586,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);
}); });
@ -671,21 +645,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');
}); });
@ -713,7 +687,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,9 +17,21 @@ const TransactionSchema = CollectionSchema(
name: r'Transaction', name: r'Transaction',
id: 5320225499417954855, id: 5320225499417954855,
properties: { properties: {
r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double), r'amount': PropertySchema(
r'date': PropertySchema(id: 1, name: r'date', type: IsarType.dateTime), id: 0,
r'tags': PropertySchema(id: 2, name: r'tags', type: IsarType.stringList), name: r'amount',
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,
@ -45,7 +57,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,
@ -122,24 +134,13 @@ List<IsarLinkBase<dynamic>> _transactionGetLinks(Transaction object) {
} }
void _transactionAttach( void _transactionAttach(
IsarCollection<dynamic> col, IsarCollection<dynamic> col, Id id, Transaction object) {
Id id,
Transaction object,
) {
object.id = id; object.id = id;
object.expenseCategory.attach( object.expenseCategory.attach(
col, col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id);
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.attach( object.beneficiary
col, .attach(col, col.isar.collection<Beneficiary>(), r'beneficiary', id);
col.isar.collection<Beneficiary>(),
r'beneficiary',
id,
);
} }
extension TransactionQueryWhereSort extension TransactionQueryWhereSort
@ -155,13 +156,15 @@ 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(lower: id, upper: id)); return query.addWhereClause(IdWhereClause.between(
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
@ -183,10 +186,8 @@ extension TransactionQueryWhere
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idGreaterThan( QueryBuilder<Transaction, Transaction, QAfterWhereClause> idGreaterThan(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.greaterThan(lower: id, includeLower: include), IdWhereClause.greaterThan(lower: id, includeLower: include),
@ -194,10 +195,8 @@ extension TransactionQueryWhere
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idLessThan( QueryBuilder<Transaction, Transaction, 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),
@ -212,14 +211,12 @@ extension TransactionQueryWhere
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(IdWhereClause.between(
IdWhereClause.between( lower: lowerId,
lower: lowerId, includeLower: includeLower,
includeLower: includeLower, upper: upperId,
upper: upperId, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
} }
@ -231,31 +228,27 @@ extension TransactionQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'amount',
property: r'amount', value: value,
value: value, epsilon: epsilon,
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( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'amount',
property: r'amount', value: value,
value: value, epsilon: epsilon,
epsilon: epsilon, ));
),
);
}); });
} }
@ -265,14 +258,12 @@ extension TransactionQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'amount',
property: r'amount', value: value,
value: value, epsilon: epsilon,
epsilon: epsilon, ));
),
);
}); });
} }
@ -284,26 +275,24 @@ extension TransactionQueryFilter
double epsilon = Query.epsilon, double epsilon = Query.epsilon,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'amount',
property: r'amount', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, epsilon: epsilon,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'date', value: value), property: r'date',
); value: value,
));
}); });
} }
@ -312,13 +301,11 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'date',
property: r'date', value: value,
value: value, ));
),
);
}); });
} }
@ -327,13 +314,11 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'date',
property: r'date', value: value,
value: value, ));
),
);
}); });
} }
@ -344,25 +329,23 @@ extension TransactionQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'date',
property: r'date', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
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( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'id', value: value), property: r'id',
); value: value,
));
}); });
} }
@ -371,13 +354,11 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
@ -386,13 +367,11 @@ extension TransactionQueryFilter
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'id',
property: r'id', value: value,
value: value, ));
),
);
}); });
} }
@ -403,69 +382,64 @@ extension TransactionQueryFilter
bool includeUpper = true, bool includeUpper = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'id',
property: r'id', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, ));
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementEqualTo(String value, {bool caseSensitive = true}) { tagsElementEqualTo(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo( property: r'tags',
property: r'tags', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan( include: include,
include: include, property: r'tags',
property: r'tags', value: value,
value: value, caseSensitive: caseSensitive,
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( return query.addFilterCondition(FilterCondition.lessThan(
FilterCondition.lessThan( include: include,
include: include, property: r'tags',
property: r'tags', value: value,
value: value, caseSensitive: caseSensitive,
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,
@ -473,125 +447,159 @@ extension TransactionQueryFilter
bool caseSensitive = true, bool caseSensitive = true,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.between(
FilterCondition.between( property: r'tags',
property: r'tags', lower: lower,
lower: lower, includeLower: includeLower,
includeLower: includeLower, upper: upper,
upper: upper, includeUpper: includeUpper,
includeUpper: includeUpper, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementStartsWith(String value, {bool caseSensitive = true}) { tagsElementStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.startsWith(
FilterCondition.startsWith( property: r'tags',
property: r'tags', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementEndsWith(String value, {bool caseSensitive = true}) { tagsElementEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.endsWith(
FilterCondition.endsWith( property: r'tags',
property: r'tags', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementContains(String value, {bool caseSensitive = true}) { tagsElementContains(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.contains(
FilterCondition.contains( property: r'tags',
property: r'tags', value: value,
value: value, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementMatches(String pattern, {bool caseSensitive = true}) { tagsElementMatches(String pattern, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.matches(
FilterCondition.matches( property: r'tags',
property: r'tags', wildcard: pattern,
wildcard: pattern, caseSensitive: caseSensitive,
caseSensitive: caseSensitive, ));
),
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementIsEmpty() { tagsElementIsEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.equalTo(
FilterCondition.equalTo(property: r'tags', value: ''), property: r'tags',
); value: '',
));
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsElementIsNotEmpty() { tagsElementIsNotEmpty() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition( return query.addFilterCondition(FilterCondition.greaterThan(
FilterCondition.greaterThan(property: r'tags', value: ''), property: r'tags',
); value: '',
));
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthEqualTo(int length) { tagsLengthEqualTo(int length) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.listLength(r'tags', length, true, length, true); 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(r'tags', 0, true, 0, true); return query.listLength(
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(r'tags', 0, false, 999999, true); return query.listLength(
r'tags',
0,
false,
999999,
true,
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthLessThan(int length, {bool include = false}) { tagsLengthLessThan(
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.listLength(r'tags', 0, true, length, include); return query.listLength(
r'tags',
0,
true,
length,
include,
);
}); });
} }
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
tagsLengthGreaterThan(int length, {bool include = false}) { tagsLengthGreaterThan(
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.listLength(r'tags', length, include, 999999, true); return query.listLength(
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,
@ -615,45 +623,42 @@ 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

@ -12,6 +12,8 @@ import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart'; import 'package:okane/ui/utils.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'collections/budget.dart';
Future<Isar> openDatabase() async { Future<Isar> openDatabase() async {
final dir = await getApplicationDocumentsDirectory(); final dir = await getApplicationDocumentsDirectory();
return Isar.open([ return Isar.open([
@ -21,6 +23,8 @@ Future<Isar> openDatabase() async {
TransactionTemplateSchema, TransactionTemplateSchema,
RecurringTransactionSchema, RecurringTransactionSchema,
ExpenseCategorySchema, ExpenseCategorySchema,
BudgetSchema,
BudgetItemSchema,
], directory: dir.path); ], directory: dir.path);
} }
@ -205,3 +209,56 @@ Future<List<ExpenseCategory>> getExpenseCategories() {
Stream<void> watchExpenseCategory() { Stream<void> watchExpenseCategory() {
return GetIt.I.get<Isar>().expenseCategorys.watchLazy(fireImmediately: true); return GetIt.I.get<Isar>().expenseCategorys.watchLazy(fireImmediately: true);
} }
Stream<void> watchBudgets(Account account) {
return GetIt.I.get<Isar>().budgets.filter().account((q) => q.idEqualTo(account.id)).watchLazy(fireImmediately: true);
}
Future<List<Budget>> getBudgets(Account? account) {
if (account == null) {
return Future.value([]);
}
return GetIt.I.get<Isar>().budgets.filter().account((q) => q.idEqualTo(account.id)).findAll();
}
Future<void> upsertBudget(Budget budget) {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
await db.budgets.put(budget);
await budget.items.save();
await budget.account.save();
});
}
Future<void> upsertBudgetItem(BudgetItem item) {
final db = GetIt.I.get<Isar>();
return db.writeTxn(() async {
await db.budgetItems.put(item);
await item.expenseCategory.save();
});
}
enum TransactionQueryDateOption {
thisMonth,
}
Future<List<Transaction>> getTransactionsInTimeframe(Account account, DateTime today, TransactionQueryDateOption option) async {
final lower = switch (option) {
TransactionQueryDateOption.thisMonth => DateTime(
today.year,
today.month,
0,
),
};
final upper = switch (option) {
TransactionQueryDateOption.thisMonth => monthEnding(today),
};
return GetIt.I.get<Isar>()
.transactions
.filter()
.account((q) => q.idEqualTo(account.id))
.dateBetween(lower, upper)
.findAll();
}

View File

@ -8,6 +8,7 @@ import 'package:isar/isar.dart';
import 'package:okane/database/database.dart'; import 'package:okane/database/database.dart';
import 'package:okane/screen.dart'; import 'package:okane/screen.dart';
import 'package:okane/ui/navigation.dart'; import 'package:okane/ui/navigation.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';
@ -39,6 +40,7 @@ class MyApp extends StatelessWidget {
onGenerateRoute: onGenerateRoute:
(settings) => switch (settings.name) { (settings) => switch (settings.name) {
"/transactions/details" => TransactionDetailsPage.mobileRoute, "/transactions/details" => TransactionDetailsPage.mobileRoute,
"/budgets/details" => BudgetDetailsPage.mobileRoute,
_ => MaterialPageRoute<void>(builder: (_) => Text("Unknown!!")), _ => MaterialPageRoute<void>(builder: (_) => Text("Unknown!!")),
}, },
), ),
@ -86,10 +88,7 @@ class _MyHomePageState extends State<MyHomePage> {
} }
return Scaffold( return Scaffold(
bottomNavigationBar: switch (screenSize) { drawer: OkaneNavigationDrawer(),
ScreenSize.normal => null,
ScreenSize.small => OkaneNavigationBar(),
},
body: switch (screenSize) { body: switch (screenSize) {
ScreenSize.normal => const Row( ScreenSize.normal => const Row(
children: [ children: [

View File

@ -2,6 +2,8 @@ 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/budgets/budget_details.dart';
import 'package:okane/ui/pages/budgets/budgets.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';
@ -66,8 +68,8 @@ final _pages = <OkanePageItem>[
OkanePage.budgets, OkanePage.budgets,
Icons.pie_chart, Icons.pie_chart,
"Budgets", "Budgets",
Placeholder(), BudgetListPage(),
null, (_) => BudgetDetailsPage(),
), ),
]; ];
@ -105,6 +107,29 @@ class OkaneNavigationBar extends StatelessWidget {
} }
} }
class OkaneNavigationDrawer extends StatelessWidget {
const OkaneNavigationDrawer({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) => Drawer(
child: ListView(
children: _pages.map((p) => ListTile(
title: Text(p.label),
leading: Icon(p.icon),
selected: p.page == state.activePage,
onTap: () {
context.read<CoreCubit>().setPage(p.page);
Navigator.of(context).pop();
},
)).toList(),
),
),
);
}
}
class OkaneNavigationLayout extends StatelessWidget { class OkaneNavigationLayout extends StatelessWidget {
const OkaneNavigationLayout({super.key}); const OkaneNavigationLayout({super.key});
@ -119,7 +144,27 @@ class OkaneNavigationLayout extends StatelessWidget {
_pages _pages
.map( .map(
(p) => switch (screenSize) { (p) => switch (screenSize) {
ScreenSize.small => p.child, ScreenSize.small => Column(
children: [
SizedBox(
height: 50,
child: Padding(
padding: EdgeInsets.all(8),
child: Row(
children: [
IconButton(
icon: Icon(Icons.menu),
onPressed: () {
Scaffold.of(context).openDrawer();
},
),
],
),
),
),
Expanded(child: p.child),
],
),
ScreenSize.normal => ScreenSize.normal =>
p.details != null p.details != null
? Row( ? Row(

View File

@ -111,20 +111,6 @@ class AccountListPageState extends State<AccountListPage> {
child: UpcomingTransactionsCard(), child: UpcomingTransactionsCard(),
), ),
/*
BlocBuilder<CoreCubit, CoreState>(
builder:
(context, state) => Row(
children: [
Expanded(
child: Padding(
padding: EdgeInsets.all(16),
child: AccountBalanceGraphCard(),
),
),
],
),
),*/
Row( Row(
children: [ children: [
Padding(padding: EdgeInsets.all(16), child: BreakdownCard()), Padding(padding: EdgeInsets.all(16), child: BreakdownCard()),

View File

@ -28,15 +28,17 @@ class TotalBalanceCard extends StatelessWidget {
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text("Total balance"), Text(
"Total balance",
style: Theme.of(context).textTheme.titleLarge,
),
FutureBuilder( FutureBuilder(
future: _getTotalBalance(state.accounts), future: _getTotalBalance(state.accounts),
builder: (context, snapshot) { builder: (context, snapshot) {
if (!snapshot.hasData) { return Text(
return Text("..."); snapshot.hasData ? formatCurrency(snapshot.data!) : "...",
} style: Theme.of(context).textTheme.bodyLarge,
);
return Text(formatCurrency(snapshot.data!));
}, },
), ),
], ],

View File

@ -1,6 +1,4 @@
import 'dart:math'; import 'dart:math';
import 'package:flutter/cupertino.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:okane/database/collections/recurrent.dart'; import 'package:okane/database/collections/recurrent.dart';
@ -29,7 +27,12 @@ class UpcomingTransactionsCard extends StatelessWidget {
: upcomingRaw.sublist(0, min(upcomingRaw.length, 3)); : upcomingRaw.sublist(0, min(upcomingRaw.length, 3));
final transactions = final transactions =
upcoming.isEmpty upcoming.isEmpty
? [Text("No upcoming transactions")] ? [
Text(
"No upcoming transactions",
style: Theme.of(context).textTheme.bodyLarge,
),
]
: upcoming : upcoming
.map( .map(
(t) => ListTile( (t) => ListTile(
@ -59,7 +62,14 @@ class UpcomingTransactionsCard extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: Column( child: Column(
children: <Widget>[Text("Upcoming Transactions")] + transactions, children:
<Widget>[
Text(
"Upcoming Transactions",
style: Theme.of(context).textTheme.titleLarge,
),
] +
transactions,
), ),
), ),
); );

View File

@ -0,0 +1,65 @@
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/database/collections/budget.dart';
import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart';
class AddBudgetPopup extends StatefulWidget {
final VoidCallback onDone;
const AddBudgetPopup({super.key, required this.onDone});
@override
AddBudgetState createState() => AddBudgetState();
}
class AddBudgetState extends State<AddBudgetPopup> {
final _budgetNameEditController = TextEditingController();
final _budgetIncomeEditController = TextEditingController();
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
TextField(
decoration: InputDecoration(
hintText: "Budget name",
),
controller: _budgetNameEditController,
),
TextField(
decoration: InputDecoration(
hintText: "Income",
),
controller: _budgetIncomeEditController,
keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true),
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
OutlinedButton(
onPressed: () async {
if (_budgetNameEditController.text.isEmpty || _budgetIncomeEditController.text.isEmpty) {
return;
}
final bloc = GetIt.I.get<CoreCubit>();
final budget = Budget()
..name = _budgetNameEditController.text
..period = BudgetPeriod.month
..income = double.parse(_budgetIncomeEditController.text)
..account.value = bloc.activeAccount!;
await upsertBudget(budget);
widget.onDone();
},
child: Text("Add"),
),
],
),
],
);
}
}

View File

@ -0,0 +1,85 @@
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/database/collections/budget.dart';
import 'package:okane/database/collections/expense_category.dart';
import 'package:okane/database/database.dart';
import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart';
import 'package:okane/ui/widgets/add_expense_category.dart';
class AddBudgetItemPopup extends StatefulWidget {
final VoidCallback onDone;
final Budget budget;
const AddBudgetItemPopup({super.key, required this.onDone, required this.budget});
@override
AddBudgetItemState createState() => AddBudgetItemState();
}
class AddBudgetItemState extends State<AddBudgetItemPopup> {
final _budgetItemAmountEditController = TextEditingController();
ExpenseCategory? _expenseCategory;
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
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"),
),
],
),
TextField(
decoration: InputDecoration(
hintText: "Amount",
),
controller: _budgetItemAmountEditController,
keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true),
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
OutlinedButton(
onPressed: () async {
if (_budgetItemAmountEditController.text.isEmpty || _expenseCategory == null) {
return;
}
if (widget.budget.items.where((i) => i.expenseCategory.value!.name == _expenseCategory!.name).firstOrNull != null) {
return;
}
final item = BudgetItem()
..expenseCategory.value = _expenseCategory
..amount = double.parse(_budgetItemAmountEditController.text);
await upsertBudgetItem(item);
widget.budget.items.add(item);
await upsertBudget(widget.budget);
widget.onDone();
},
child: Text("Add"),
),
],
),
],
);
}
}

View File

@ -0,0 +1,374 @@
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/database/collections/budget.dart';
import 'package:okane/database/database.dart';
import 'package:okane/ui/pages/account/breakdown_card.dart';
import 'package:okane/ui/pages/budgets/add_budget_item.dart';
import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart';
class BudgetDetailsPage extends StatelessWidget {
final bool isPage;
const BudgetDetailsPage({this.isPage = false, super.key});
static MaterialPageRoute<void> get mobileRoute =>
MaterialPageRoute(builder: (_) => BudgetDetailsPage(isPage: true));
void _addBudgetItem(BuildContext context, CoreState state) {
showDialogOrModal(
context: context,
builder:
(_) => AddBudgetItemPopup(
budget: state.activeBudget!,
onDone: () {
Navigator.of(context).pop();
},
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
if (isPage)
SizedBox(
height: 50,
child: Row(
children: [
IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
Navigator.of(context).pop();
},
),
],
),
),
BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) {
if (state.activeBudget == null) {
return Text("No budget selected");
}
if (state.activeBudget!.items.isEmpty) {
return Row(
children: [
Text("No budget items added"),
Padding(
padding: EdgeInsets.only(left: 16),
child: IconButton(
onPressed: () => _addBudgetItem(context, state),
icon: Icon(Icons.add),
),
),
],
);
}
final bloc = GetIt.I.get<CoreCubit>();
final today = DateTime.now();
return FutureBuilder(
future: getTransactionsInTimeframe(
bloc.activeAccount!,
today,
TransactionQueryDateOption.thisMonth,
),
builder: (context, snapshot) {
final daysLeft = switch (state.activeBudget!.period) {
BudgetPeriod.month =>
monthEnding(today).difference(today).inDays,
};
if (!snapshot.hasData) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
"Budget items",
style: Theme.of(context).textTheme.titleMedium,
),
ListView.builder(
shrinkWrap: true,
itemCount: state.activeBudget!.items.length,
itemBuilder: (context, index) {
final item = state.activeBudget!.items.elementAt(
index,
);
final amount = formatCurrency(item.amount);
return ListTile(
title: Text(
"${item.expenseCategory.value!.name} ($amount)",
),
subtitle: Text("..."),
);
},
),
],
);
}
final spending = <String, double>{};
for (final t in snapshot.data!) {
if (t.expenseCategory.value == null) {
continue;
}
spending.update(
t.expenseCategory.value!.name,
(value) => value + t.amount,
ifAbsent: () => t.amount,
);
}
final budgetTotal = state.activeBudget!.items
.map((i) => i.amount)
.reduce((acc, val) => acc + val);
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 100,
child: ListView(
scrollDirection: Axis.horizontal,
children: [
Padding(
padding: EdgeInsets.all(8),
child: SizedBox(
height: 100,
width: 150,
child: Card(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Days left",
textAlign: TextAlign.center,
style:
Theme.of(
context,
).textTheme.titleLarge,
),
Text(
daysLeft.toString(),
textAlign: TextAlign.center,
style:
Theme.of(
context,
).textTheme.bodyLarge,
),
],
),
),
),
),
Padding(
padding: EdgeInsets.all(8),
child: SizedBox(
height: 100,
width: 150,
child: Card(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Budget total",
textAlign: TextAlign.center,
style:
Theme.of(
context,
).textTheme.titleLarge,
),
Text(
formatCurrency(budgetTotal),
textAlign: TextAlign.center,
style:
Theme.of(
context,
).textTheme.bodyLarge,
),
],
),
),
),
),
],
),
),
Padding(
padding: EdgeInsets.all(8),
child: SizedBox(
child: Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: EdgeInsets.only(top: 8),
child: Text(
"Budget breakdown",
style:
Theme.of(context).textTheme.titleLarge,
textAlign: TextAlign.center,
),
),
Row(
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: EdgeInsets.all(16),
child: SizedBox(
width: 150,
height: 150,
child: AspectRatio(
aspectRatio: 1,
child: PieChart(
PieChartData(
borderData: FlBorderData(
show: false,
),
sectionsSpace: 0,
centerSpaceRadius: 35,
sections:
state.activeBudget!.items
.map(
(
i,
) => PieChartSectionData(
value: i.amount.abs(),
title: formatCurrency(
i.amount.abs(),
),
titleStyle: TextStyle(
fontWeight:
FontWeight.bold,
),
radius: 40,
color: colorHash(
i
.expenseCategory
.value!
.name,
),
),
)
.toList(),
),
),
),
),
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: 8,
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children:
state.activeBudget!.items
.map(
(i) => LegendItem(
text:
i
.expenseCategory
.value!
.name,
color: colorHash(
i
.expenseCategory
.value!
.name,
),
),
)
.toList(),
),
),
],
),
],
),
),
),
),
Padding(
padding: EdgeInsets.all(8),
child: Row(
children: [
Text(
"Budget items",
style: Theme.of(context).textTheme.titleMedium,
),
Padding(
padding: EdgeInsets.only(left: 16),
child: IconButton(
icon: Icon(Icons.add),
onPressed: () => _addBudgetItem(context, state),
),
),
],
),
),
Padding(
padding: EdgeInsets.all(8),
child: ListView.builder(
shrinkWrap: true,
itemCount: state.activeBudget!.items.length,
itemBuilder: (context, index) {
final item = state.activeBudget!.items.elementAt(
index,
);
final amount = formatCurrency(item.amount);
final spent =
spending[item.expenseCategory.value!.name];
final left =
spent == null
? item.amount
: item.amount + spent;
final subtitleText =
left < 0
? "${formatCurrency(left)} over"
: "${formatCurrency(left)} left";
return ListTile(
title: Text(
"${item.expenseCategory.value!.name} ($amount)",
),
subtitle: Text(
subtitleText,
style: TextStyle(
color: left < 0 ? Colors.red : Colors.green,
),
),
trailing: IconButton(
icon: Icon(Icons.delete),
onPressed: () {},
),
);
},
),
),
],
);
},
);
},
),
],
),
);
}
}

View File

@ -0,0 +1,67 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/screen.dart';
import 'package:okane/ui/pages/budgets/add_budget.dart';
import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart';
class BudgetListPage extends StatelessWidget {
const BudgetListPage({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<CoreCubit, CoreState>(
builder: (context, state) {
if (state.budgets.isEmpty) {
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("No budgets"),
OutlinedButton(
onPressed: () {
showDialogOrModal(
context: context,
builder:
(_) => AddBudgetPopup(
onDone: () {
Navigator.of(context).pop();
},
),
);
},
child: Text("Add"),
),
],
);
}
return ListView.builder(
itemCount: state.budgets.length,
itemBuilder:
(context, index) => ListTile(
title: Text(state.budgets[index].name),
selected: state.budgets[index] == state.activeBudget,
trailing: IconButton(
icon: Icon(
Icons.delete,
color: Colors.redAccent,
),
onPressed: () {
// TODO
},
),
onTap: () {
GetIt.I.get<CoreCubit>().setActiveBudget(
state.budgets[index],
);
if (getScreenSize(context) == ScreenSize.small) {
Navigator.of(context).pushNamed("/budgets/details");
}
},
),
);
},
);
}
}

View File

@ -47,72 +47,89 @@ class TransactionDetailsPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final widget = BlocBuilder<CoreCubit, CoreState>( return Scaffold(
builder: (context, state) { body: Column(
if (state.activeTransaction == null) { children: [
return Text("No transaction selected"); if (isPage)
} SizedBox(
height: 50,
return Padding( child: Row(
padding: const EdgeInsets.all(8.0),
child: ListView(
children: [
Row(
children: [ children: [
StreamBuilder(
stream: watchBeneficiaryObject(
state.activeTransaction!.beneficiary.value!.id,
),
builder: (context, snapshot) {
final obj =
snapshot.data ??
state.activeTransaction!.beneficiary.value!;
return ImageWrapper(
title: obj.name,
path: obj.imagePath,
onTap: () => _updateBeneficiaryIcon(obj),
);
},
),
Padding(
padding: EdgeInsets.only(left: 8),
child: Text(
state.activeTransaction!.beneficiary.value!.name,
),
),
Spacer(),
IconButton( IconButton(
icon: Icon(Icons.edit), icon: Icon(Icons.arrow_back),
onPressed: () { onPressed: () {
// TODO: Implement Navigator.of(context).pop();
}, },
), ),
], ],
), ),
Wrap( ),
spacing: 8, Expanded(
children: child: BlocBuilder<CoreCubit, CoreState>(
state.activeTransaction!.tags builder: (context, state) {
.map((tag) => Chip(label: Text(tag))) if (state.activeTransaction == null) {
.toList(), return Text("No transaction selected");
), }
Row(
children: [
state.activeTransaction!.amount > 0
? Icon(Icons.add)
: Icon(Icons.remove),
Text(formatCurrency(state.activeTransaction!.amount)),
],
),
],
),
);
},
);
if (isPage) { return Padding(
return Scaffold(body: widget); padding: const EdgeInsets.all(8.0),
} child: ListView(
return widget; children: [
Row(
children: [
StreamBuilder(
stream: watchBeneficiaryObject(
state.activeTransaction!.beneficiary.value!.id,
),
builder: (context, snapshot) {
final obj =
snapshot.data ??
state.activeTransaction!.beneficiary.value!;
return ImageWrapper(
title: obj.name,
path: obj.imagePath,
onTap: () => _updateBeneficiaryIcon(obj),
);
},
),
Padding(
padding: EdgeInsets.only(left: 8),
child: Text(
state.activeTransaction!.beneficiary.value!.name,
),
),
Spacer(),
IconButton(
icon: Icon(Icons.edit),
onPressed: () {
// TODO: Implement
},
),
],
),
Wrap(
spacing: 8,
children:
state.activeTransaction!.tags
.map((tag) => Chip(label: Text(tag)))
.toList(),
),
Row(
children: [
state.activeTransaction!.amount > 0
? Icon(Icons.add)
: Icon(Icons.remove),
Text(formatCurrency(state.activeTransaction!.amount)),
],
),
],
),
);
},
),
),
],
),
);
} }
} }

View File

@ -3,7 +3,6 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'package:grouped_list/grouped_list.dart'; import 'package:grouped_list/grouped_list.dart';
import 'package:okane/database/collections/transaction.dart'; import 'package:okane/database/collections/transaction.dart';
import 'package:okane/database/database.dart';
import 'package:okane/screen.dart'; import 'package:okane/screen.dart';
import 'package:okane/ui/pages/account/balance_graph_card.dart'; import 'package:okane/ui/pages/account/balance_graph_card.dart';
import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/state/core.dart';

View File

@ -4,6 +4,7 @@ import 'package:bloc/bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:freezed_annotation/freezed_annotation.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/budget.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/recurrent.dart';
import 'package:okane/database/collections/template.dart'; import 'package:okane/database/collections/template.dart';
@ -25,6 +26,8 @@ abstract class CoreState with _$CoreState {
@Default([]) List<TransactionTemplate> transactionTemplates, @Default([]) List<TransactionTemplate> transactionTemplates,
@Default([]) List<Beneficiary> beneficiaries, @Default([]) List<Beneficiary> beneficiaries,
@Default([]) List<ExpenseCategory> expenseCategories, @Default([]) List<ExpenseCategory> expenseCategories,
@Default([]) List<Budget> budgets,
@Default(null) Budget? activeBudget,
}) = _CoreState; }) = _CoreState;
} }
@ -37,6 +40,7 @@ class CoreCubit extends Cubit<CoreState> {
StreamSubscription<void>? _transactionsStreamSubscription; StreamSubscription<void>? _transactionsStreamSubscription;
StreamSubscription<void>? _beneficiariesStreamSubscription; StreamSubscription<void>? _beneficiariesStreamSubscription;
StreamSubscription<void>? _expenseCategoryStreamSubscription; StreamSubscription<void>? _expenseCategoryStreamSubscription;
StreamSubscription<void>? _budgetsStreamSubscription;
void setupAccountStream() { void setupAccountStream() {
_accountsStreamSubscription?.cancel(); _accountsStreamSubscription?.cancel();
@ -94,6 +98,12 @@ class CoreCubit extends Cubit<CoreState> {
) async { ) async {
emit(state.copyWith(expenseCategories: await getExpenseCategories())); emit(state.copyWith(expenseCategories: await getExpenseCategories()));
}); });
_budgetsStreamSubscription?.cancel();
_budgetsStreamSubscription = watchBudgets(activeAccount!).listen((
_,
) async {
emit(state.copyWith(budgets: await getBudgets(activeAccount!)));
});
} }
Future<void> init() async { Future<void> init() async {
@ -108,6 +118,7 @@ class CoreCubit extends Cubit<CoreState> {
transactionTemplates: await getTransactionTemplates(account), transactionTemplates: await getTransactionTemplates(account),
recurringTransactions: await getRecurringTransactions(account), recurringTransactions: await getRecurringTransactions(account),
expenseCategories: await getExpenseCategories(), expenseCategories: await getExpenseCategories(),
budgets: await getBudgets(account),
), ),
); );
@ -132,6 +143,9 @@ class CoreCubit extends Cubit<CoreState> {
beneficiaries: await getBeneficiaries(), beneficiaries: await getBeneficiaries(),
transactionTemplates: await getTransactionTemplates(account), transactionTemplates: await getTransactionTemplates(account),
recurringTransactions: await getRecurringTransactions(account), recurringTransactions: await getRecurringTransactions(account),
budgets: await getBudgets(account),
activeBudget: null,
activeTransaction: null,
), ),
); );
setupStreams(account); setupStreams(account);
@ -145,6 +159,10 @@ class CoreCubit extends Cubit<CoreState> {
emit(state.copyWith(accounts: accounts)); emit(state.copyWith(accounts: accounts));
} }
void setActiveBudget(Budget? budget) {
emit(state.copyWith(activeBudget: budget));
}
Account? get activeAccount => Account? get activeAccount =>
state.activeAccountIndex == null state.activeAccountIndex == null
? null ? null

View File

@ -12,8 +12,7 @@ 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 {
@ -29,6 +28,8 @@ mixin _$CoreState {
List<Beneficiary> get beneficiaries => throw _privateConstructorUsedError; List<Beneficiary> get beneficiaries => throw _privateConstructorUsedError;
List<ExpenseCategory> get expenseCategories => List<ExpenseCategory> get expenseCategories =>
throw _privateConstructorUsedError; throw _privateConstructorUsedError;
List<Budget> get budgets => throw _privateConstructorUsedError;
Budget? get activeBudget => throw _privateConstructorUsedError;
@JsonKey(ignore: true) @JsonKey(ignore: true)
$CoreStateCopyWith<CoreState> get copyWith => $CoreStateCopyWith<CoreState> get copyWith =>
@ -40,17 +41,18 @@ 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,
Budget? activeBudget});
} }
/// @nodoc /// @nodoc
@ -75,57 +77,55 @@ class _$CoreStateCopyWithImpl<$Res, $Val extends CoreState>
Object? transactionTemplates = null, Object? transactionTemplates = null,
Object? beneficiaries = null, Object? beneficiaries = null,
Object? expenseCategories = null, Object? expenseCategories = null,
Object? budgets = null,
Object? activeBudget = freezed,
}) { }) {
return _then( return _then(_value.copyWith(
_value.copyWith( activePage: null == activePage
activePage: ? _value.activePage
null == activePage : activePage // ignore: cast_nullable_to_non_nullable
? _value.activePage as OkanePage,
: activePage // ignore: cast_nullable_to_non_nullable activeAccountIndex: freezed == activeAccountIndex
as OkanePage, ? _value.activeAccountIndex
activeAccountIndex: : activeAccountIndex // ignore: cast_nullable_to_non_nullable
freezed == activeAccountIndex as int?,
? _value.activeAccountIndex activeTransaction: freezed == activeTransaction
: activeAccountIndex // ignore: cast_nullable_to_non_nullable ? _value.activeTransaction
as int?, : activeTransaction // ignore: cast_nullable_to_non_nullable
activeTransaction: as Transaction?,
freezed == activeTransaction accounts: null == accounts
? _value.activeTransaction ? _value.accounts
: activeTransaction // ignore: cast_nullable_to_non_nullable : accounts // ignore: cast_nullable_to_non_nullable
as Transaction?, as List<Account>,
accounts: recurringTransactions: null == recurringTransactions
null == accounts ? _value.recurringTransactions
? _value.accounts : recurringTransactions // ignore: cast_nullable_to_non_nullable
: accounts // ignore: cast_nullable_to_non_nullable as List<RecurringTransaction>,
as List<Account>, transactions: null == transactions
recurringTransactions: ? _value.transactions
null == recurringTransactions : transactions // ignore: cast_nullable_to_non_nullable
? _value.recurringTransactions as List<Transaction>,
: recurringTransactions // ignore: cast_nullable_to_non_nullable transactionTemplates: null == transactionTemplates
as List<RecurringTransaction>, ? _value.transactionTemplates
transactions: : transactionTemplates // ignore: cast_nullable_to_non_nullable
null == transactions as List<TransactionTemplate>,
? _value.transactions beneficiaries: null == beneficiaries
: transactions // ignore: cast_nullable_to_non_nullable ? _value.beneficiaries
as List<Transaction>, : beneficiaries // ignore: cast_nullable_to_non_nullable
transactionTemplates: as List<Beneficiary>,
null == transactionTemplates expenseCategories: null == expenseCategories
? _value.transactionTemplates ? _value.expenseCategories
: transactionTemplates // ignore: cast_nullable_to_non_nullable : expenseCategories // ignore: cast_nullable_to_non_nullable
as List<TransactionTemplate>, as List<ExpenseCategory>,
beneficiaries: budgets: null == budgets
null == beneficiaries ? _value.budgets
? _value.beneficiaries : budgets // ignore: cast_nullable_to_non_nullable
: beneficiaries // ignore: cast_nullable_to_non_nullable as List<Budget>,
as List<Beneficiary>, activeBudget: freezed == activeBudget
expenseCategories: ? _value.activeBudget
null == expenseCategories : activeBudget // ignore: cast_nullable_to_non_nullable
? _value.expenseCategories as Budget?,
: expenseCategories // ignore: cast_nullable_to_non_nullable ) as $Val);
as List<ExpenseCategory>,
)
as $Val,
);
} }
} }
@ -133,22 +133,22 @@ 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, _$CoreStateImpl value, $Res Function(_$CoreStateImpl) then) =
$Res Function(_$CoreStateImpl) then, __$$CoreStateImplCopyWithImpl<$Res>;
) = __$$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,
Budget? activeBudget});
} }
/// @nodoc /// @nodoc
@ -156,9 +156,8 @@ class __$$CoreStateImplCopyWithImpl<$Res>
extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl> extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl>
implements _$$CoreStateImplCopyWith<$Res> { implements _$$CoreStateImplCopyWith<$Res> {
__$$CoreStateImplCopyWithImpl( __$$CoreStateImplCopyWithImpl(
_$CoreStateImpl _value, _$CoreStateImpl _value, $Res Function(_$CoreStateImpl) _then)
$Res Function(_$CoreStateImpl) _then, : super(_value, _then);
) : super(_value, _then);
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
@override @override
@ -172,78 +171,80 @@ class __$$CoreStateImplCopyWithImpl<$Res>
Object? transactionTemplates = null, Object? transactionTemplates = null,
Object? beneficiaries = null, Object? beneficiaries = null,
Object? expenseCategories = null, Object? expenseCategories = null,
Object? budgets = null,
Object? activeBudget = freezed,
}) { }) {
return _then( return _then(_$CoreStateImpl(
_$CoreStateImpl( activePage: null == activePage
activePage: ? _value.activePage
null == activePage : activePage // ignore: cast_nullable_to_non_nullable
? _value.activePage as OkanePage,
: activePage // ignore: cast_nullable_to_non_nullable activeAccountIndex: freezed == activeAccountIndex
as OkanePage, ? _value.activeAccountIndex
activeAccountIndex: : activeAccountIndex // ignore: cast_nullable_to_non_nullable
freezed == activeAccountIndex as int?,
? _value.activeAccountIndex activeTransaction: freezed == activeTransaction
: activeAccountIndex // ignore: cast_nullable_to_non_nullable ? _value.activeTransaction
as int?, : activeTransaction // ignore: cast_nullable_to_non_nullable
activeTransaction: as Transaction?,
freezed == activeTransaction accounts: null == accounts
? _value.activeTransaction ? _value._accounts
: activeTransaction // ignore: cast_nullable_to_non_nullable : accounts // ignore: cast_nullable_to_non_nullable
as Transaction?, as List<Account>,
accounts: recurringTransactions: null == recurringTransactions
null == accounts ? _value._recurringTransactions
? _value._accounts : recurringTransactions // ignore: cast_nullable_to_non_nullable
: accounts // ignore: cast_nullable_to_non_nullable as List<RecurringTransaction>,
as List<Account>, transactions: null == transactions
recurringTransactions: ? _value._transactions
null == recurringTransactions : transactions // ignore: cast_nullable_to_non_nullable
? _value._recurringTransactions as List<Transaction>,
: recurringTransactions // ignore: cast_nullable_to_non_nullable transactionTemplates: null == transactionTemplates
as List<RecurringTransaction>, ? _value._transactionTemplates
transactions: : transactionTemplates // ignore: cast_nullable_to_non_nullable
null == transactions as List<TransactionTemplate>,
? _value._transactions beneficiaries: null == beneficiaries
: transactions // ignore: cast_nullable_to_non_nullable ? _value._beneficiaries
as List<Transaction>, : beneficiaries // ignore: cast_nullable_to_non_nullable
transactionTemplates: as List<Beneficiary>,
null == transactionTemplates expenseCategories: null == expenseCategories
? _value._transactionTemplates ? _value._expenseCategories
: transactionTemplates // ignore: cast_nullable_to_non_nullable : expenseCategories // ignore: cast_nullable_to_non_nullable
as List<TransactionTemplate>, as List<ExpenseCategory>,
beneficiaries: budgets: null == budgets
null == beneficiaries ? _value._budgets
? _value._beneficiaries : budgets // ignore: cast_nullable_to_non_nullable
: beneficiaries // ignore: cast_nullable_to_non_nullable as List<Budget>,
as List<Beneficiary>, activeBudget: freezed == activeBudget
expenseCategories: ? _value.activeBudget
null == expenseCategories : activeBudget // ignore: cast_nullable_to_non_nullable
? _value._expenseCategories as Budget?,
: expenseCategories // ignore: cast_nullable_to_non_nullable ));
as List<ExpenseCategory>,
),
);
} }
} }
/// @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 [],
}) : _accounts = accounts, final List<Budget> budgets = const [],
_recurringTransactions = recurringTransactions, this.activeBudget = null})
_transactions = transactions, : _accounts = accounts,
_transactionTemplates = transactionTemplates, _recurringTransactions = recurringTransactions,
_beneficiaries = beneficiaries, _transactions = transactions,
_expenseCategories = expenseCategories; _transactionTemplates = transactionTemplates,
_beneficiaries = beneficiaries,
_expenseCategories = expenseCategories,
_budgets = budgets;
@override @override
@JsonKey() @JsonKey()
@ -310,9 +311,22 @@ class _$CoreStateImpl implements _CoreState {
return EqualUnmodifiableListView(_expenseCategories); return EqualUnmodifiableListView(_expenseCategories);
} }
final List<Budget> _budgets;
@override
@JsonKey()
List<Budget> get budgets {
if (_budgets is EqualUnmodifiableListView) return _budgets;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_budgets);
}
@override
@JsonKey()
final Budget? activeBudget;
@override @override
String toString() { String toString() {
return 'CoreState(activePage: $activePage, activeAccountIndex: $activeAccountIndex, activeTransaction: $activeTransaction, accounts: $accounts, recurringTransactions: $recurringTransactions, transactions: $transactions, transactionTemplates: $transactionTemplates, beneficiaries: $beneficiaries, expenseCategories: $expenseCategories)'; return 'CoreState(activePage: $activePage, activeAccountIndex: $activeAccountIndex, activeTransaction: $activeTransaction, accounts: $accounts, recurringTransactions: $recurringTransactions, transactions: $transactions, transactionTemplates: $transactionTemplates, beneficiaries: $beneficiaries, expenseCategories: $expenseCategories, budgets: $budgets, activeBudget: $activeBudget)';
} }
@override @override
@ -327,41 +341,35 @@ 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().equals( const DeepCollectionEquality()
other._recurringTransactions, .equals(other._recurringTransactions, _recurringTransactions) &&
_recurringTransactions, const DeepCollectionEquality()
) && .equals(other._transactions, _transactions) &&
const DeepCollectionEquality().equals( const DeepCollectionEquality()
other._transactions, .equals(other._transactionTemplates, _transactionTemplates) &&
_transactions, const DeepCollectionEquality()
) && .equals(other._beneficiaries, _beneficiaries) &&
const DeepCollectionEquality().equals( const DeepCollectionEquality()
other._transactionTemplates, .equals(other._expenseCategories, _expenseCategories) &&
_transactionTemplates, const DeepCollectionEquality().equals(other._budgets, _budgets) &&
) && (identical(other.activeBudget, activeBudget) ||
const DeepCollectionEquality().equals( other.activeBudget == activeBudget));
other._beneficiaries,
_beneficiaries,
) &&
const DeepCollectionEquality().equals(
other._expenseCategories,
_expenseCategories,
));
} }
@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),
activeBudget);
@JsonKey(ignore: true) @JsonKey(ignore: true)
@override @override
@ -371,17 +379,18 @@ 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,
}) = _$CoreStateImpl; final List<Budget> budgets,
final Budget? activeBudget}) = _$CoreStateImpl;
@override @override
OkanePage get activePage; OkanePage get activePage;
@ -402,6 +411,10 @@ abstract class _CoreState implements CoreState {
@override @override
List<ExpenseCategory> get expenseCategories; List<ExpenseCategory> get expenseCategories;
@override @override
List<Budget> get budgets;
@override
Budget? get activeBudget;
@override
@JsonKey(ignore: true) @JsonKey(ignore: true)
_$$CoreStateImplCopyWith<_$CoreStateImpl> get copyWith => _$$CoreStateImplCopyWith<_$CoreStateImpl> get copyWith =>
throw _privateConstructorUsedError; throw _privateConstructorUsedError;

View File

@ -69,3 +69,14 @@ String formatCurrency(double amount, {bool precise = true}) {
} }
return "${amount.toStringAsFixed(2)}"; return "${amount.toStringAsFixed(2)}";
} }
DateTime monthEnding(DateTime now) {
return DateTime(
now.year,
now.month,
32,
23,
59,
59,
);
}