Add budgets
This commit is contained in:
parent
5cc0bba09a
commit
eced6e6a6d
@ -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);
|
||||||
});
|
});
|
||||||
|
@ -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,
|
||||||
@ -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,46 +263,45 @@ 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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,14 +312,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'imagePath',
|
property: r'imagePath',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,14 +328,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'imagePath',
|
property: r'imagePath',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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,8 +618,7 @@ 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');
|
||||||
});
|
});
|
||||||
@ -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);
|
||||||
});
|
});
|
||||||
|
35
lib/database/collections/budget.dart
Normal file
35
lib/database/collections/budget.dart
Normal 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>();
|
||||||
|
}
|
1097
lib/database/collections/budget.g.dart
Normal file
1097
lib/database/collections/budget.g.dart
Normal file
File diff suppressed because it is too large
Load Diff
@ -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,10 +107,12 @@ 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,
|
||||||
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -180,35 +180,38 @@ extension ExpenseCategoryQueryFilter
|
|||||||
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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,28 +223,27 @@ extension ExpenseCategoryQueryFilter
|
|||||||
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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,14 +254,12 @@ 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.greaterThan(
|
||||||
FilterCondition.greaterThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'name',
|
property: r'name',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,14 +270,12 @@ 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.lessThan(
|
||||||
FilterCondition.lessThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'name',
|
property: r'name',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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: '',
|
||||||
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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);
|
||||||
});
|
});
|
||||||
|
@ -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,23 +109,15 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +136,10 @@ extension RecurringTransactionQueryWhere
|
|||||||
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,
|
||||||
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,319 +192,233 @@ extension RecurringTransactionQueryWhere
|
|||||||
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);
|
||||||
});
|
});
|
||||||
@ -605,13 +518,8 @@ extension RecurringTransactionQueryWhereDistinct
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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');
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +153,10 @@ extension TransactionTemplateQueryWhere
|
|||||||
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,
|
||||||
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,35 +209,29 @@ extension TransactionTemplateQueryWhere
|
|||||||
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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,14 +242,12 @@ 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.greaterThan(
|
||||||
FilterCondition.greaterThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'amount',
|
property: r'amount',
|
||||||
value: value,
|
value: value,
|
||||||
epsilon: epsilon,
|
epsilon: epsilon,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,14 +258,12 @@ 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.lessThan(
|
||||||
FilterCondition.lessThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'amount',
|
property: r'amount',
|
||||||
value: value,
|
value: value,
|
||||||
epsilon: epsilon,
|
epsilon: epsilon,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,51 +276,52 @@ 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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,28 +333,27 @@ extension TransactionTemplateQueryFilter
|
|||||||
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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,14 +364,12 @@ 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.greaterThan(
|
||||||
FilterCondition.greaterThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'name',
|
property: r'name',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -393,14 +380,12 @@ 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.lessThan(
|
||||||
FilterCondition.lessThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'name',
|
property: r'name',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -413,114 +398,103 @@ 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) {
|
||||||
|
@ -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,13 +228,11 @@ 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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,14 +243,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.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,28 +382,27 @@ 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,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,14 +413,12 @@ 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.greaterThan(
|
||||||
FilterCondition.greaterThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'tags',
|
property: r'tags',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,14 +429,12 @@ 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.lessThan(
|
||||||
FilterCondition.lessThan(
|
|
||||||
include: include,
|
include: include,
|
||||||
property: r'tags',
|
property: r'tags',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
caseSensitive: caseSensitive,
|
||||||
),
|
));
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,120 +447,154 @@ 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,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -615,8 +623,7 @@ 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');
|
||||||
});
|
});
|
||||||
@ -630,8 +637,7 @@ extension TransactionQueryLinks
|
|||||||
}
|
}
|
||||||
|
|
||||||
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');
|
||||||
});
|
});
|
||||||
@ -645,8 +651,7 @@ extension TransactionQueryLinks
|
|||||||
}
|
}
|
||||||
|
|
||||||
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');
|
||||||
});
|
});
|
||||||
|
@ -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();
|
||||||
|
}
|
@ -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: [
|
||||||
|
@ -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(
|
||||||
|
@ -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()),
|
||||||
|
@ -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!));
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -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,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
65
lib/ui/pages/budgets/add_budget.dart
Normal file
65
lib/ui/pages/budgets/add_budget.dart
Normal 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"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
85
lib/ui/pages/budgets/add_budget_item.dart
Normal file
85
lib/ui/pages/budgets/add_budget_item.dart
Normal 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"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
374
lib/ui/pages/budgets/budget_details.dart
Normal file
374
lib/ui/pages/budgets/budget_details.dart
Normal 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: () {},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
67
lib/ui/pages/budgets/budgets.dart
Normal file
67
lib/ui/pages/budgets/budgets.dart
Normal 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");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -47,7 +47,25 @@ class TransactionDetailsPage extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final widget = BlocBuilder<CoreCubit, CoreState>(
|
return Scaffold(
|
||||||
|
body: Column(
|
||||||
|
children: [
|
||||||
|
if (isPage)
|
||||||
|
SizedBox(
|
||||||
|
height: 50,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
IconButton(
|
||||||
|
icon: Icon(Icons.arrow_back),
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: BlocBuilder<CoreCubit, CoreState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
if (state.activeTransaction == null) {
|
if (state.activeTransaction == null) {
|
||||||
return Text("No transaction selected");
|
return Text("No transaction selected");
|
||||||
@ -108,11 +126,10 @@ class TransactionDetailsPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (isPage) {
|
|
||||||
return Scaffold(body: widget);
|
|
||||||
}
|
|
||||||
return widget;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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';
|
||||||
|
@ -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
|
||||||
|
@ -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,8 +41,8 @@ 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,
|
||||||
@ -50,7 +51,8 @@ abstract class $CoreStateCopyWith<$Res> {
|
|||||||
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:
|
|
||||||
null == activePage
|
|
||||||
? _value.activePage
|
? _value.activePage
|
||||||
: activePage // ignore: cast_nullable_to_non_nullable
|
: activePage // ignore: cast_nullable_to_non_nullable
|
||||||
as OkanePage,
|
as OkanePage,
|
||||||
activeAccountIndex:
|
activeAccountIndex: freezed == activeAccountIndex
|
||||||
freezed == activeAccountIndex
|
|
||||||
? _value.activeAccountIndex
|
? _value.activeAccountIndex
|
||||||
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
||||||
as int?,
|
as int?,
|
||||||
activeTransaction:
|
activeTransaction: freezed == activeTransaction
|
||||||
freezed == activeTransaction
|
|
||||||
? _value.activeTransaction
|
? _value.activeTransaction
|
||||||
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
||||||
as Transaction?,
|
as Transaction?,
|
||||||
accounts:
|
accounts: null == accounts
|
||||||
null == accounts
|
|
||||||
? _value.accounts
|
? _value.accounts
|
||||||
: accounts // ignore: cast_nullable_to_non_nullable
|
: accounts // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Account>,
|
as List<Account>,
|
||||||
recurringTransactions:
|
recurringTransactions: null == recurringTransactions
|
||||||
null == recurringTransactions
|
|
||||||
? _value.recurringTransactions
|
? _value.recurringTransactions
|
||||||
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
||||||
as List<RecurringTransaction>,
|
as List<RecurringTransaction>,
|
||||||
transactions:
|
transactions: null == transactions
|
||||||
null == transactions
|
|
||||||
? _value.transactions
|
? _value.transactions
|
||||||
: transactions // ignore: cast_nullable_to_non_nullable
|
: transactions // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Transaction>,
|
as List<Transaction>,
|
||||||
transactionTemplates:
|
transactionTemplates: null == transactionTemplates
|
||||||
null == transactionTemplates
|
|
||||||
? _value.transactionTemplates
|
? _value.transactionTemplates
|
||||||
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
||||||
as List<TransactionTemplate>,
|
as List<TransactionTemplate>,
|
||||||
beneficiaries:
|
beneficiaries: null == beneficiaries
|
||||||
null == beneficiaries
|
|
||||||
? _value.beneficiaries
|
? _value.beneficiaries
|
||||||
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Beneficiary>,
|
as List<Beneficiary>,
|
||||||
expenseCategories:
|
expenseCategories: null == expenseCategories
|
||||||
null == expenseCategories
|
|
||||||
? _value.expenseCategories
|
? _value.expenseCategories
|
||||||
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
||||||
as List<ExpenseCategory>,
|
as List<ExpenseCategory>,
|
||||||
)
|
budgets: null == budgets
|
||||||
as $Val,
|
? _value.budgets
|
||||||
);
|
: budgets // ignore: cast_nullable_to_non_nullable
|
||||||
|
as List<Budget>,
|
||||||
|
activeBudget: freezed == activeBudget
|
||||||
|
? _value.activeBudget
|
||||||
|
: activeBudget // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Budget?,
|
||||||
|
) as $Val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,13 +133,12 @@ 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,
|
||||||
@ -148,7 +147,8 @@ abstract class _$$CoreStateImplCopyWith<$Res>
|
|||||||
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,64 +171,63 @@ 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:
|
|
||||||
null == activePage
|
|
||||||
? _value.activePage
|
? _value.activePage
|
||||||
: activePage // ignore: cast_nullable_to_non_nullable
|
: activePage // ignore: cast_nullable_to_non_nullable
|
||||||
as OkanePage,
|
as OkanePage,
|
||||||
activeAccountIndex:
|
activeAccountIndex: freezed == activeAccountIndex
|
||||||
freezed == activeAccountIndex
|
|
||||||
? _value.activeAccountIndex
|
? _value.activeAccountIndex
|
||||||
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
||||||
as int?,
|
as int?,
|
||||||
activeTransaction:
|
activeTransaction: freezed == activeTransaction
|
||||||
freezed == activeTransaction
|
|
||||||
? _value.activeTransaction
|
? _value.activeTransaction
|
||||||
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
||||||
as Transaction?,
|
as Transaction?,
|
||||||
accounts:
|
accounts: null == accounts
|
||||||
null == accounts
|
|
||||||
? _value._accounts
|
? _value._accounts
|
||||||
: accounts // ignore: cast_nullable_to_non_nullable
|
: accounts // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Account>,
|
as List<Account>,
|
||||||
recurringTransactions:
|
recurringTransactions: null == recurringTransactions
|
||||||
null == recurringTransactions
|
|
||||||
? _value._recurringTransactions
|
? _value._recurringTransactions
|
||||||
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
||||||
as List<RecurringTransaction>,
|
as List<RecurringTransaction>,
|
||||||
transactions:
|
transactions: null == transactions
|
||||||
null == transactions
|
|
||||||
? _value._transactions
|
? _value._transactions
|
||||||
: transactions // ignore: cast_nullable_to_non_nullable
|
: transactions // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Transaction>,
|
as List<Transaction>,
|
||||||
transactionTemplates:
|
transactionTemplates: null == transactionTemplates
|
||||||
null == transactionTemplates
|
|
||||||
? _value._transactionTemplates
|
? _value._transactionTemplates
|
||||||
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
||||||
as List<TransactionTemplate>,
|
as List<TransactionTemplate>,
|
||||||
beneficiaries:
|
beneficiaries: null == beneficiaries
|
||||||
null == beneficiaries
|
|
||||||
? _value._beneficiaries
|
? _value._beneficiaries
|
||||||
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Beneficiary>,
|
as List<Beneficiary>,
|
||||||
expenseCategories:
|
expenseCategories: null == expenseCategories
|
||||||
null == expenseCategories
|
|
||||||
? _value._expenseCategories
|
? _value._expenseCategories
|
||||||
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
||||||
as List<ExpenseCategory>,
|
as List<ExpenseCategory>,
|
||||||
),
|
budgets: null == budgets
|
||||||
);
|
? _value._budgets
|
||||||
|
: budgets // ignore: cast_nullable_to_non_nullable
|
||||||
|
as List<Budget>,
|
||||||
|
activeBudget: freezed == activeBudget
|
||||||
|
? _value.activeBudget
|
||||||
|
: activeBudget // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Budget?,
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
|
|
||||||
class _$CoreStateImpl implements _CoreState {
|
class _$CoreStateImpl implements _CoreState {
|
||||||
const _$CoreStateImpl({
|
const _$CoreStateImpl(
|
||||||
this.activePage = OkanePage.accounts,
|
{this.activePage = OkanePage.accounts,
|
||||||
this.activeAccountIndex,
|
this.activeAccountIndex,
|
||||||
this.activeTransaction = null,
|
this.activeTransaction = null,
|
||||||
final List<Account> accounts = const [],
|
final List<Account> accounts = const [],
|
||||||
@ -238,12 +236,15 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
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 [],
|
||||||
|
this.activeBudget = null})
|
||||||
|
: _accounts = accounts,
|
||||||
_recurringTransactions = recurringTransactions,
|
_recurringTransactions = recurringTransactions,
|
||||||
_transactions = transactions,
|
_transactions = transactions,
|
||||||
_transactionTemplates = transactionTemplates,
|
_transactionTemplates = transactionTemplates,
|
||||||
_beneficiaries = beneficiaries,
|
_beneficiaries = beneficiaries,
|
||||||
_expenseCategories = expenseCategories;
|
_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,26 +341,19 @@ 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
|
||||||
@ -361,7 +368,8 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
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,8 +379,8 @@ 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,
|
||||||
@ -381,7 +389,8 @@ abstract class _CoreState implements CoreState {
|
|||||||
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;
|
||||||
|
@ -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,
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user