Compare commits
No commits in common. "f4a232883f02fe15b6d7e96c149ba5926f7924b2" and "e261710eba01bddb905c1fb4f008c70603d99697" have entirely different histories.
f4a232883f
...
e261710eba
@ -17,11 +17,7 @@ const AccountSchema = CollectionSchema(
|
|||||||
name: r'Account',
|
name: r'Account',
|
||||||
id: -6646797162501847804,
|
id: -6646797162501847804,
|
||||||
properties: {
|
properties: {
|
||||||
r'name': PropertySchema(
|
r'name': PropertySchema(id: 0, name: r'name', type: IsarType.string),
|
||||||
id: 0,
|
|
||||||
name: r'name',
|
|
||||||
type: IsarType.string,
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
estimateSize: _accountEstimateSize,
|
estimateSize: _accountEstimateSize,
|
||||||
serialize: _accountSerialize,
|
serialize: _accountSerialize,
|
||||||
@ -110,10 +106,7 @@ extension AccountQueryWhereSort on QueryBuilder<Account, Account, QWhere> {
|
|||||||
extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
|
extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
|
||||||
QueryBuilder<Account, Account, QAfterWhereClause> idEqualTo(Id id) {
|
QueryBuilder<Account, Account, QAfterWhereClause> idEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,8 +132,10 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterWhereClause> idGreaterThan(Id id,
|
QueryBuilder<Account, Account, QAfterWhereClause> idGreaterThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -148,8 +143,10 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterWhereClause> idLessThan(Id id,
|
QueryBuilder<Account, Account, QAfterWhereClause> idLessThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -164,12 +161,14 @@ extension AccountQueryWhere on QueryBuilder<Account, Account, QWhereClause> {
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -178,10 +177,9 @@ extension AccountQueryFilter
|
|||||||
on QueryBuilder<Account, Account, QFilterCondition> {
|
on QueryBuilder<Account, Account, QFilterCondition> {
|
||||||
QueryBuilder<Account, Account, QAfterFilterCondition> idEqualTo(Id value) {
|
QueryBuilder<Account, Account, QAfterFilterCondition> idEqualTo(Id value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,11 +188,13 @@ extension AccountQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,11 +203,13 @@ extension AccountQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,29 +220,31 @@ extension AccountQueryFilter
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNull() {
|
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const FilterCondition.isNull(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
const FilterCondition.isNull(property: r'name'),
|
||||||
));
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotNull() {
|
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
const FilterCondition.isNotNull(property: r'name'),
|
||||||
));
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,11 +253,13 @@ extension AccountQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,12 +269,14 @@ extension AccountQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,12 +286,14 @@ extension AccountQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,14 +305,16 @@ extension AccountQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'name',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
caseSensitive: caseSensitive,
|
includeUpper: includeUpper,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,11 +323,13 @@ extension AccountQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.startsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,53 +338,59 @@ extension AccountQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.endsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterFilterCondition> nameContains(
|
QueryBuilder<Account, Account, QAfterFilterCondition> nameContains(
|
||||||
String value,
|
String value, {
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.contains(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterFilterCondition> nameMatches(
|
QueryBuilder<Account, Account, QAfterFilterCondition> nameMatches(
|
||||||
String pattern,
|
String pattern, {
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.matches(
|
||||||
wildcard: pattern,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
wildcard: pattern,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsEmpty() {
|
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotEmpty() {
|
QueryBuilder<Account, Account, QAfterFilterCondition> nameIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.greaterThan(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -424,8 +444,9 @@ extension AccountQuerySortThenBy
|
|||||||
|
|
||||||
extension AccountQueryWhereDistinct
|
extension AccountQueryWhereDistinct
|
||||||
on QueryBuilder<Account, Account, QDistinct> {
|
on QueryBuilder<Account, Account, QDistinct> {
|
||||||
QueryBuilder<Account, Account, QDistinct> distinctByName(
|
QueryBuilder<Account, Account, QDistinct> distinctByName({
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
||||||
});
|
});
|
||||||
|
@ -22,17 +22,13 @@ const BeneficiarySchema = CollectionSchema(
|
|||||||
name: r'imagePath',
|
name: r'imagePath',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
),
|
),
|
||||||
r'name': PropertySchema(
|
r'name': PropertySchema(id: 1, name: r'name', type: IsarType.string),
|
||||||
id: 1,
|
|
||||||
name: r'name',
|
|
||||||
type: IsarType.string,
|
|
||||||
),
|
|
||||||
r'type': PropertySchema(
|
r'type': PropertySchema(
|
||||||
id: 2,
|
id: 2,
|
||||||
name: r'type',
|
name: r'type',
|
||||||
type: IsarType.byte,
|
type: IsarType.byte,
|
||||||
enumMap: _BeneficiarytypeEnumValueMap,
|
enumMap: _BeneficiarytypeEnumValueMap,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
estimateSize: _beneficiaryEstimateSize,
|
estimateSize: _beneficiaryEstimateSize,
|
||||||
serialize: _beneficiarySerialize,
|
serialize: _beneficiarySerialize,
|
||||||
@ -46,7 +42,7 @@ const BeneficiarySchema = CollectionSchema(
|
|||||||
name: r'account',
|
name: r'account',
|
||||||
target: r'Account',
|
target: r'Account',
|
||||||
single: true,
|
single: true,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
embeddedSchemas: {},
|
embeddedSchemas: {},
|
||||||
getId: _beneficiaryGetId,
|
getId: _beneficiaryGetId,
|
||||||
@ -94,7 +90,7 @@ Beneficiary _beneficiaryDeserialize(
|
|||||||
object.name = reader.readString(offsets[1]);
|
object.name = reader.readString(offsets[1]);
|
||||||
object.type =
|
object.type =
|
||||||
_BeneficiarytypeValueEnumMap[reader.readByteOrNull(offsets[2])] ??
|
_BeneficiarytypeValueEnumMap[reader.readByteOrNull(offsets[2])] ??
|
||||||
BeneficiaryType.account;
|
BeneficiaryType.account;
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,16 +107,14 @@ P _beneficiaryDeserializeProp<P>(
|
|||||||
return (reader.readString(offset)) as P;
|
return (reader.readString(offset)) as P;
|
||||||
case 2:
|
case 2:
|
||||||
return (_BeneficiarytypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
return (_BeneficiarytypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
||||||
BeneficiaryType.account) as P;
|
BeneficiaryType.account)
|
||||||
|
as P;
|
||||||
default:
|
default:
|
||||||
throw IsarError('Unknown property with id $propertyId');
|
throw IsarError('Unknown property with id $propertyId');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const _BeneficiarytypeEnumValueMap = {
|
const _BeneficiarytypeEnumValueMap = {'account': 0, 'other': 1};
|
||||||
'account': 0,
|
|
||||||
'other': 1,
|
|
||||||
};
|
|
||||||
const _BeneficiarytypeValueEnumMap = {
|
const _BeneficiarytypeValueEnumMap = {
|
||||||
0: BeneficiaryType.account,
|
0: BeneficiaryType.account,
|
||||||
1: BeneficiaryType.other,
|
1: BeneficiaryType.other,
|
||||||
@ -135,7 +129,10 @@ List<IsarLinkBase<dynamic>> _beneficiaryGetLinks(Beneficiary object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _beneficiaryAttach(
|
void _beneficiaryAttach(
|
||||||
IsarCollection<dynamic> col, Id id, Beneficiary object) {
|
IsarCollection<dynamic> col,
|
||||||
|
Id id,
|
||||||
|
Beneficiary object,
|
||||||
|
) {
|
||||||
object.id = id;
|
object.id = id;
|
||||||
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
||||||
}
|
}
|
||||||
@ -153,15 +150,13 @@ extension BeneficiaryQueryWhere
|
|||||||
on QueryBuilder<Beneficiary, Beneficiary, QWhereClause> {
|
on QueryBuilder<Beneficiary, Beneficiary, QWhereClause> {
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idEqualTo(Id id) {
|
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idNotEqualTo(
|
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idNotEqualTo(
|
||||||
Id id) {
|
Id id,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
if (query.whereSort == Sort.asc) {
|
if (query.whereSort == Sort.asc) {
|
||||||
return query
|
return query
|
||||||
@ -183,8 +178,10 @@ extension BeneficiaryQueryWhere
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idGreaterThan(Id id,
|
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idGreaterThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -192,8 +189,10 @@ extension BeneficiaryQueryWhere
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idLessThan(Id id,
|
QueryBuilder<Beneficiary, Beneficiary, QAfterWhereClause> idLessThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -208,12 +207,14 @@ extension BeneficiaryQueryWhere
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -221,12 +222,12 @@ extension BeneficiaryQueryWhere
|
|||||||
extension BeneficiaryQueryFilter
|
extension BeneficiaryQueryFilter
|
||||||
on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> {
|
on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> {
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> idEqualTo(
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> idEqualTo(
|
||||||
Id value) {
|
Id value,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,11 +236,13 @@ extension BeneficiaryQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,11 +251,13 @@ extension BeneficiaryQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,82 +268,87 @@ extension BeneficiaryQueryFilter
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathIsNull() {
|
imagePathIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const FilterCondition.isNull(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
const FilterCondition.isNull(property: r'imagePath'),
|
||||||
));
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathIsNotNull() {
|
imagePathIsNotNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
const FilterCondition.isNotNull(property: r'imagePath'),
|
||||||
));
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathEqualTo(
|
imagePathEqualTo(String? value, {bool caseSensitive = true}) {
|
||||||
String? value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'imagePath',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathGreaterThan(
|
imagePathGreaterThan(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'imagePath',
|
include: include,
|
||||||
value: value,
|
property: r'imagePath',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathLessThan(
|
imagePathLessThan(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'imagePath',
|
include: include,
|
||||||
value: value,
|
property: r'imagePath',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathBetween(
|
imagePathBetween(
|
||||||
String? lower,
|
String? lower,
|
||||||
String? upper, {
|
String? upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
@ -346,84 +356,86 @@ extension BeneficiaryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'imagePath',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
caseSensitive: caseSensitive,
|
includeUpper: includeUpper,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathStartsWith(
|
imagePathStartsWith(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.startsWith(
|
||||||
value: value,
|
property: r'imagePath',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathEndsWith(
|
imagePathEndsWith(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.endsWith(
|
||||||
value: value,
|
property: r'imagePath',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathContains(String value, {bool caseSensitive = true}) {
|
imagePathContains(String value, {bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.contains(
|
||||||
value: value,
|
property: r'imagePath',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathMatches(String pattern, {bool caseSensitive = true}) {
|
imagePathMatches(String pattern, {bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.matches(
|
||||||
wildcard: pattern,
|
property: r'imagePath',
|
||||||
caseSensitive: caseSensitive,
|
wildcard: pattern,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathIsEmpty() {
|
imagePathIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.equalTo(property: r'imagePath', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
imagePathIsNotEmpty() {
|
imagePathIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
property: r'imagePath',
|
FilterCondition.greaterThan(property: r'imagePath', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,11 +444,13 @@ extension BeneficiaryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,12 +460,14 @@ extension BeneficiaryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,12 +477,14 @@ extension BeneficiaryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,14 +496,16 @@ extension BeneficiaryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'name',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
caseSensitive: caseSensitive,
|
includeUpper: includeUpper,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,11 +514,13 @@ extension BeneficiaryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.startsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -507,64 +529,70 @@ extension BeneficiaryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.endsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameContains(
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameContains(
|
||||||
String value,
|
String value, {
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.contains(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameMatches(
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameMatches(
|
||||||
String pattern,
|
String pattern, {
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.matches(
|
||||||
wildcard: pattern,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
wildcard: pattern,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameIsEmpty() {
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> nameIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
nameIsNotEmpty() {
|
nameIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.greaterThan(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> typeEqualTo(
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> typeEqualTo(
|
||||||
BeneficiaryType value) {
|
BeneficiaryType value,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'type',
|
FilterCondition.equalTo(property: r'type', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,11 +601,13 @@ extension BeneficiaryQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'type',
|
include: include,
|
||||||
value: value,
|
property: r'type',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -586,11 +616,13 @@ extension BeneficiaryQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'type',
|
include: include,
|
||||||
value: value,
|
property: r'type',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -601,13 +633,15 @@ extension BeneficiaryQueryFilter
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'type',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'type',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -618,14 +652,15 @@ extension BeneficiaryQueryObject
|
|||||||
extension BeneficiaryQueryLinks
|
extension BeneficiaryQueryLinks
|
||||||
on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> {
|
on QueryBuilder<Beneficiary, Beneficiary, QFilterCondition> {
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> account(
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition> account(
|
||||||
FilterQuery<Account> q) {
|
FilterQuery<Account> q,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'account');
|
return query.link(q, r'account');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
QueryBuilder<Beneficiary, Beneficiary, QAfterFilterCondition>
|
||||||
accountIsNull() {
|
accountIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'account', 0, true, 0, true);
|
return query.linkLength(r'account', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
@ -724,15 +759,17 @@ extension BeneficiaryQuerySortThenBy
|
|||||||
|
|
||||||
extension BeneficiaryQueryWhereDistinct
|
extension BeneficiaryQueryWhereDistinct
|
||||||
on QueryBuilder<Beneficiary, Beneficiary, QDistinct> {
|
on QueryBuilder<Beneficiary, Beneficiary, QDistinct> {
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByImagePath(
|
QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByImagePath({
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'imagePath', caseSensitive: caseSensitive);
|
return query.addDistinctBy(r'imagePath', caseSensitive: caseSensitive);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByName(
|
QueryBuilder<Beneficiary, Beneficiary, QDistinct> distinctByName({
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
||||||
});
|
});
|
||||||
|
@ -17,11 +17,7 @@ const BudgetItemSchema = CollectionSchema(
|
|||||||
name: r'BudgetItem',
|
name: r'BudgetItem',
|
||||||
id: 618999772191843499,
|
id: 618999772191843499,
|
||||||
properties: {
|
properties: {
|
||||||
r'amount': PropertySchema(
|
r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double),
|
||||||
id: 0,
|
|
||||||
name: r'amount',
|
|
||||||
type: IsarType.double,
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
estimateSize: _budgetItemEstimateSize,
|
estimateSize: _budgetItemEstimateSize,
|
||||||
serialize: _budgetItemSerialize,
|
serialize: _budgetItemSerialize,
|
||||||
@ -35,7 +31,7 @@ const BudgetItemSchema = CollectionSchema(
|
|||||||
name: r'expenseCategory',
|
name: r'expenseCategory',
|
||||||
target: r'ExpenseCategory',
|
target: r'ExpenseCategory',
|
||||||
single: true,
|
single: true,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
embeddedSchemas: {},
|
embeddedSchemas: {},
|
||||||
getId: _budgetItemGetId,
|
getId: _budgetItemGetId,
|
||||||
@ -99,7 +95,11 @@ List<IsarLinkBase<dynamic>> _budgetItemGetLinks(BudgetItem object) {
|
|||||||
void _budgetItemAttach(IsarCollection<dynamic> col, Id id, BudgetItem object) {
|
void _budgetItemAttach(IsarCollection<dynamic> col, Id id, BudgetItem object) {
|
||||||
object.id = id;
|
object.id = id;
|
||||||
object.expenseCategory.attach(
|
object.expenseCategory.attach(
|
||||||
col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id);
|
col,
|
||||||
|
col.isar.collection<ExpenseCategory>(),
|
||||||
|
r'expenseCategory',
|
||||||
|
id,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
extension BudgetItemQueryWhereSort
|
extension BudgetItemQueryWhereSort
|
||||||
@ -115,10 +115,7 @@ extension BudgetItemQueryWhere
|
|||||||
on QueryBuilder<BudgetItem, BudgetItem, QWhereClause> {
|
on QueryBuilder<BudgetItem, BudgetItem, QWhereClause> {
|
||||||
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idEqualTo(Id id) {
|
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,8 +141,10 @@ extension BudgetItemQueryWhere
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idGreaterThan(Id id,
|
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idGreaterThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -153,8 +152,10 @@ extension BudgetItemQueryWhere
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idLessThan(Id id,
|
QueryBuilder<BudgetItem, BudgetItem, QAfterWhereClause> idLessThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -169,12 +170,14 @@ extension BudgetItemQueryWhere
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -186,11 +189,13 @@ extension BudgetItemQueryFilter
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'amount',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,12 +205,14 @@ extension BudgetItemQueryFilter
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'amount',
|
include: include,
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,12 +222,14 @@ extension BudgetItemQueryFilter
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'amount',
|
include: include,
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,24 +241,26 @@ extension BudgetItemQueryFilter
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'amount',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'amount',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
epsilon: epsilon,
|
includeUpper: includeUpper,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> idEqualTo(
|
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> idEqualTo(
|
||||||
Id value) {
|
Id value,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,11 +269,13 @@ extension BudgetItemQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,11 +284,13 @@ extension BudgetItemQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,13 +301,15 @@ extension BudgetItemQueryFilter
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -303,14 +320,15 @@ extension BudgetItemQueryObject
|
|||||||
extension BudgetItemQueryLinks
|
extension BudgetItemQueryLinks
|
||||||
on QueryBuilder<BudgetItem, BudgetItem, QFilterCondition> {
|
on QueryBuilder<BudgetItem, BudgetItem, QFilterCondition> {
|
||||||
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> expenseCategory(
|
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition> expenseCategory(
|
||||||
FilterQuery<ExpenseCategory> q) {
|
FilterQuery<ExpenseCategory> q,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'expenseCategory');
|
return query.link(q, r'expenseCategory');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition>
|
QueryBuilder<BudgetItem, BudgetItem, QAfterFilterCondition>
|
||||||
expenseCategoryIsNull() {
|
expenseCategoryIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'expenseCategory', 0, true, 0, true);
|
return query.linkLength(r'expenseCategory', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
@ -399,22 +417,14 @@ const BudgetSchema = CollectionSchema(
|
|||||||
name: r'includeOtherSpendings',
|
name: r'includeOtherSpendings',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
r'income': PropertySchema(
|
r'income': PropertySchema(id: 1, name: r'income', type: IsarType.double),
|
||||||
id: 1,
|
r'name': PropertySchema(id: 2, name: r'name', type: IsarType.string),
|
||||||
name: r'income',
|
|
||||||
type: IsarType.double,
|
|
||||||
),
|
|
||||||
r'name': PropertySchema(
|
|
||||||
id: 2,
|
|
||||||
name: r'name',
|
|
||||||
type: IsarType.string,
|
|
||||||
),
|
|
||||||
r'period': PropertySchema(
|
r'period': PropertySchema(
|
||||||
id: 3,
|
id: 3,
|
||||||
name: r'period',
|
name: r'period',
|
||||||
type: IsarType.byte,
|
type: IsarType.byte,
|
||||||
enumMap: _BudgetperiodEnumValueMap,
|
enumMap: _BudgetperiodEnumValueMap,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
estimateSize: _budgetEstimateSize,
|
estimateSize: _budgetEstimateSize,
|
||||||
serialize: _budgetSerialize,
|
serialize: _budgetSerialize,
|
||||||
@ -434,7 +444,7 @@ const BudgetSchema = CollectionSchema(
|
|||||||
name: r'items',
|
name: r'items',
|
||||||
target: r'BudgetItem',
|
target: r'BudgetItem',
|
||||||
single: false,
|
single: false,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
embeddedSchemas: {},
|
embeddedSchemas: {},
|
||||||
getId: _budgetGetId,
|
getId: _budgetGetId,
|
||||||
@ -478,7 +488,7 @@ Budget _budgetDeserialize(
|
|||||||
object.name = reader.readString(offsets[2]);
|
object.name = reader.readString(offsets[2]);
|
||||||
object.period =
|
object.period =
|
||||||
_BudgetperiodValueEnumMap[reader.readByteOrNull(offsets[3])] ??
|
_BudgetperiodValueEnumMap[reader.readByteOrNull(offsets[3])] ??
|
||||||
BudgetPeriod.month;
|
BudgetPeriod.month;
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -497,18 +507,15 @@ P _budgetDeserializeProp<P>(
|
|||||||
return (reader.readString(offset)) as P;
|
return (reader.readString(offset)) as P;
|
||||||
case 3:
|
case 3:
|
||||||
return (_BudgetperiodValueEnumMap[reader.readByteOrNull(offset)] ??
|
return (_BudgetperiodValueEnumMap[reader.readByteOrNull(offset)] ??
|
||||||
BudgetPeriod.month) as P;
|
BudgetPeriod.month)
|
||||||
|
as P;
|
||||||
default:
|
default:
|
||||||
throw IsarError('Unknown property with id $propertyId');
|
throw IsarError('Unknown property with id $propertyId');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const _BudgetperiodEnumValueMap = {
|
const _BudgetperiodEnumValueMap = {'month': 0};
|
||||||
'month': 0,
|
const _BudgetperiodValueEnumMap = {0: BudgetPeriod.month};
|
||||||
};
|
|
||||||
const _BudgetperiodValueEnumMap = {
|
|
||||||
0: BudgetPeriod.month,
|
|
||||||
};
|
|
||||||
|
|
||||||
Id _budgetGetId(Budget object) {
|
Id _budgetGetId(Budget object) {
|
||||||
return object.id;
|
return object.id;
|
||||||
@ -535,10 +542,7 @@ extension BudgetQueryWhereSort on QueryBuilder<Budget, Budget, QWhere> {
|
|||||||
extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
|
extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
|
||||||
QueryBuilder<Budget, Budget, QAfterWhereClause> idEqualTo(Id id) {
|
QueryBuilder<Budget, Budget, QAfterWhereClause> idEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -564,8 +568,10 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterWhereClause> idGreaterThan(Id id,
|
QueryBuilder<Budget, Budget, QAfterWhereClause> idGreaterThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -573,8 +579,10 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterWhereClause> idLessThan(Id id,
|
QueryBuilder<Budget, Budget, QAfterWhereClause> idLessThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -589,12 +597,14 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -602,10 +612,9 @@ extension BudgetQueryWhere on QueryBuilder<Budget, Budget, QWhereClause> {
|
|||||||
extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> idEqualTo(Id value) {
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> idEqualTo(Id value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,11 +623,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -627,11 +638,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -642,23 +655,27 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition>
|
QueryBuilder<Budget, Budget, QAfterFilterCondition>
|
||||||
includeOtherSpendingsEqualTo(bool value) {
|
includeOtherSpendingsEqualTo(bool value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'includeOtherSpendings',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'includeOtherSpendings',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -667,11 +684,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'income',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'income',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -681,12 +700,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'income',
|
include: include,
|
||||||
value: value,
|
property: r'income',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -696,12 +717,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'income',
|
include: include,
|
||||||
value: value,
|
property: r'income',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -713,14 +736,16 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'income',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'income',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
epsilon: epsilon,
|
includeUpper: includeUpper,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -729,11 +754,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -743,12 +770,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -758,12 +787,14 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -775,14 +806,16 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'name',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
caseSensitive: caseSensitive,
|
includeUpper: includeUpper,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -791,11 +824,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.startsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -804,62 +839,69 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.endsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameContains(String value,
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameContains(
|
||||||
{bool caseSensitive = true}) {
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.contains(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameMatches(
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameMatches(
|
||||||
String pattern,
|
String pattern, {
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.matches(
|
||||||
wildcard: pattern,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
wildcard: pattern,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsEmpty() {
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsNotEmpty() {
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> nameIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.greaterThan(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> periodEqualTo(
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> periodEqualTo(
|
||||||
BudgetPeriod value) {
|
BudgetPeriod value,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'period',
|
FilterCondition.equalTo(property: r'period', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -868,11 +910,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'period',
|
include: include,
|
||||||
value: value,
|
property: r'period',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -881,11 +925,13 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'period',
|
include: include,
|
||||||
value: value,
|
property: r'period',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -896,13 +942,15 @@ extension BudgetQueryFilter on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'period',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'period',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -911,7 +959,8 @@ extension BudgetQueryObject on QueryBuilder<Budget, Budget, QFilterCondition> {}
|
|||||||
|
|
||||||
extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> {
|
extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> {
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> account(
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> account(
|
||||||
FilterQuery<Account> q) {
|
FilterQuery<Account> q,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'account');
|
return query.link(q, r'account');
|
||||||
});
|
});
|
||||||
@ -924,14 +973,16 @@ extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> items(
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> items(
|
||||||
FilterQuery<BudgetItem> q) {
|
FilterQuery<BudgetItem> q,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'items');
|
return query.link(q, r'items');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QAfterFilterCondition> itemsLengthEqualTo(
|
QueryBuilder<Budget, Budget, QAfterFilterCondition> itemsLengthEqualTo(
|
||||||
int length) {
|
int length,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'items', length, true, length, true);
|
return query.linkLength(r'items', length, true, length, true);
|
||||||
});
|
});
|
||||||
@ -975,7 +1026,12 @@ extension BudgetQueryLinks on QueryBuilder<Budget, Budget, QFilterCondition> {
|
|||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(
|
return query.linkLength(
|
||||||
r'items', lower, includeLower, upper, includeUpper);
|
r'items',
|
||||||
|
lower,
|
||||||
|
includeLower,
|
||||||
|
upper,
|
||||||
|
includeUpper,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1105,8 +1161,9 @@ extension BudgetQueryWhereDistinct on QueryBuilder<Budget, Budget, QDistinct> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Budget, Budget, QDistinct> distinctByName(
|
QueryBuilder<Budget, Budget, QDistinct> distinctByName({
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
||||||
});
|
});
|
||||||
|
@ -17,11 +17,7 @@ const ExpenseCategorySchema = CollectionSchema(
|
|||||||
name: r'ExpenseCategory',
|
name: r'ExpenseCategory',
|
||||||
id: -6352499903118634,
|
id: -6352499903118634,
|
||||||
properties: {
|
properties: {
|
||||||
r'name': PropertySchema(
|
r'name': PropertySchema(id: 0, name: r'name', type: IsarType.string),
|
||||||
id: 0,
|
|
||||||
name: r'name',
|
|
||||||
type: IsarType.string,
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
estimateSize: _expenseCategoryEstimateSize,
|
estimateSize: _expenseCategoryEstimateSize,
|
||||||
serialize: _expenseCategorySerialize,
|
serialize: _expenseCategorySerialize,
|
||||||
@ -91,7 +87,10 @@ List<IsarLinkBase<dynamic>> _expenseCategoryGetLinks(ExpenseCategory object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _expenseCategoryAttach(
|
void _expenseCategoryAttach(
|
||||||
IsarCollection<dynamic> col, Id id, ExpenseCategory object) {
|
IsarCollection<dynamic> col,
|
||||||
|
Id id,
|
||||||
|
ExpenseCategory object,
|
||||||
|
) {
|
||||||
object.id = id;
|
object.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,17 +106,15 @@ extension ExpenseCategoryQueryWhereSort
|
|||||||
extension ExpenseCategoryQueryWhere
|
extension ExpenseCategoryQueryWhere
|
||||||
on QueryBuilder<ExpenseCategory, ExpenseCategory, QWhereClause> {
|
on QueryBuilder<ExpenseCategory, ExpenseCategory, QWhereClause> {
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idEqualTo(
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idEqualTo(
|
||||||
Id id) {
|
Id id,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause>
|
||||||
idNotEqualTo(Id id) {
|
idNotEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
if (query.whereSort == Sort.asc) {
|
if (query.whereSort == Sort.asc) {
|
||||||
return query
|
return query
|
||||||
@ -140,7 +137,7 @@ extension ExpenseCategoryQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause>
|
||||||
idGreaterThan(Id id, {bool include = false}) {
|
idGreaterThan(Id id, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -149,8 +146,9 @@ extension ExpenseCategoryQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idLessThan(
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterWhereClause> idLessThan(
|
||||||
Id id,
|
Id id, {
|
||||||
{bool include = false}) {
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -165,12 +163,14 @@ extension ExpenseCategoryQueryWhere
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -178,109 +178,111 @@ extension ExpenseCategoryQueryWhere
|
|||||||
extension ExpenseCategoryQueryFilter
|
extension ExpenseCategoryQueryFilter
|
||||||
on QueryBuilder<ExpenseCategory, ExpenseCategory, QFilterCondition> {
|
on QueryBuilder<ExpenseCategory, ExpenseCategory, QFilterCondition> {
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
idEqualTo(Id value) {
|
idEqualTo(Id value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
idGreaterThan(
|
idGreaterThan(Id value, {bool include = false}) {
|
||||||
Id value, {
|
|
||||||
bool include = false,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
idLessThan(
|
idLessThan(Id value, {bool include = false}) {
|
||||||
Id value, {
|
|
||||||
bool include = false,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
idBetween(
|
idBetween(
|
||||||
Id lower,
|
Id lower,
|
||||||
Id upper, {
|
Id upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameEqualTo(
|
nameEqualTo(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameGreaterThan(
|
nameGreaterThan(
|
||||||
String value, {
|
String value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameLessThan(
|
nameLessThan(
|
||||||
String value, {
|
String value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameBetween(
|
nameBetween(
|
||||||
String lower,
|
String lower,
|
||||||
String upper, {
|
String upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
@ -288,84 +290,86 @@ extension ExpenseCategoryQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'name',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
caseSensitive: caseSensitive,
|
includeUpper: includeUpper,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameStartsWith(
|
nameStartsWith(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.startsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameEndsWith(
|
nameEndsWith(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.endsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameContains(String value, {bool caseSensitive = true}) {
|
nameContains(String value, {bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.contains(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameMatches(String pattern, {bool caseSensitive = true}) {
|
nameMatches(String pattern, {bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.matches(
|
||||||
wildcard: pattern,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
wildcard: pattern,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameIsEmpty() {
|
nameIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterFilterCondition>
|
||||||
nameIsNotEmpty() {
|
nameIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.greaterThan(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -385,7 +389,7 @@ extension ExpenseCategoryQuerySortBy
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy>
|
||||||
sortByNameDesc() {
|
sortByNameDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'name', Sort.desc);
|
return query.addSortBy(r'name', Sort.desc);
|
||||||
});
|
});
|
||||||
@ -413,7 +417,7 @@ extension ExpenseCategoryQuerySortThenBy
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy>
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QAfterSortBy>
|
||||||
thenByNameDesc() {
|
thenByNameDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'name', Sort.desc);
|
return query.addSortBy(r'name', Sort.desc);
|
||||||
});
|
});
|
||||||
@ -422,8 +426,9 @@ extension ExpenseCategoryQuerySortThenBy
|
|||||||
|
|
||||||
extension ExpenseCategoryQueryWhereDistinct
|
extension ExpenseCategoryQueryWhereDistinct
|
||||||
on QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> {
|
on QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> {
|
||||||
QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> distinctByName(
|
QueryBuilder<ExpenseCategory, ExpenseCategory, QDistinct> distinctByName({
|
||||||
{bool caseSensitive = true}) {
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
||||||
});
|
});
|
||||||
|
@ -15,18 +15,4 @@ class RecurringTransaction {
|
|||||||
final template = IsarLink<TransactionTemplate>();
|
final template = IsarLink<TransactionTemplate>();
|
||||||
|
|
||||||
final account = IsarLink<Account>();
|
final account = IsarLink<Account>();
|
||||||
|
|
||||||
bool isDue(DateTime now) {
|
|
||||||
if (lastExecution == null) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
final expectedNextExecution = lastExecution!.add(Duration(days: days));
|
|
||||||
if (now.isAfter(expectedNextExecution)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return now.difference(expectedNextExecution).inDays.abs() <=
|
|
||||||
(days * 0.5).toInt();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -18,16 +18,12 @@ const RecurringTransactionSchema = CollectionSchema(
|
|||||||
name: r'RecurringTransaction',
|
name: r'RecurringTransaction',
|
||||||
id: 969840479390105118,
|
id: 969840479390105118,
|
||||||
properties: {
|
properties: {
|
||||||
r'days': PropertySchema(
|
r'days': PropertySchema(id: 0, name: r'days', type: IsarType.long),
|
||||||
id: 0,
|
|
||||||
name: r'days',
|
|
||||||
type: IsarType.long,
|
|
||||||
),
|
|
||||||
r'lastExecution': PropertySchema(
|
r'lastExecution': PropertySchema(
|
||||||
id: 1,
|
id: 1,
|
||||||
name: r'lastExecution',
|
name: r'lastExecution',
|
||||||
type: IsarType.dateTime,
|
type: IsarType.dateTime,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
estimateSize: _recurringTransactionEstimateSize,
|
estimateSize: _recurringTransactionEstimateSize,
|
||||||
serialize: _recurringTransactionSerialize,
|
serialize: _recurringTransactionSerialize,
|
||||||
@ -47,7 +43,7 @@ const RecurringTransactionSchema = CollectionSchema(
|
|||||||
name: r'account',
|
name: r'account',
|
||||||
target: r'Account',
|
target: r'Account',
|
||||||
single: true,
|
single: true,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
embeddedSchemas: {},
|
embeddedSchemas: {},
|
||||||
getId: _recurringTransactionGetId,
|
getId: _recurringTransactionGetId,
|
||||||
@ -109,22 +105,30 @@ Id _recurringTransactionGetId(RecurringTransaction object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<IsarLinkBase<dynamic>> _recurringTransactionGetLinks(
|
List<IsarLinkBase<dynamic>> _recurringTransactionGetLinks(
|
||||||
RecurringTransaction object) {
|
RecurringTransaction object,
|
||||||
|
) {
|
||||||
return [object.template, object.account];
|
return [object.template, object.account];
|
||||||
}
|
}
|
||||||
|
|
||||||
void _recurringTransactionAttach(
|
void _recurringTransactionAttach(
|
||||||
IsarCollection<dynamic> col, Id id, RecurringTransaction object) {
|
IsarCollection<dynamic> col,
|
||||||
|
Id id,
|
||||||
|
RecurringTransaction object,
|
||||||
|
) {
|
||||||
object.id = id;
|
object.id = id;
|
||||||
object.template
|
object.template.attach(
|
||||||
.attach(col, col.isar.collection<TransactionTemplate>(), r'template', id);
|
col,
|
||||||
|
col.isar.collection<TransactionTemplate>(),
|
||||||
|
r'template',
|
||||||
|
id,
|
||||||
|
);
|
||||||
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
||||||
}
|
}
|
||||||
|
|
||||||
extension RecurringTransactionQueryWhereSort
|
extension RecurringTransactionQueryWhereSort
|
||||||
on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhere> {
|
on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhere> {
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhere>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhere>
|
||||||
anyId() {
|
anyId() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(const IdWhereClause.any());
|
return query.addWhereClause(const IdWhereClause.any());
|
||||||
});
|
});
|
||||||
@ -134,17 +138,14 @@ extension RecurringTransactionQueryWhereSort
|
|||||||
extension RecurringTransactionQueryWhere
|
extension RecurringTransactionQueryWhere
|
||||||
on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhereClause> {
|
on QueryBuilder<RecurringTransaction, RecurringTransaction, QWhereClause> {
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
||||||
idEqualTo(Id id) {
|
idEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
||||||
idNotEqualTo(Id id) {
|
idNotEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
if (query.whereSort == Sort.asc) {
|
if (query.whereSort == Sort.asc) {
|
||||||
return query
|
return query
|
||||||
@ -167,7 +168,7 @@ extension RecurringTransactionQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
||||||
idGreaterThan(Id id, {bool include = false}) {
|
idGreaterThan(Id id, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -176,7 +177,7 @@ extension RecurringTransactionQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
||||||
idLessThan(Id id, {bool include = false}) {
|
idLessThan(Id id, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -185,240 +186,326 @@ extension RecurringTransactionQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterWhereClause>
|
||||||
idBetween(
|
idBetween(
|
||||||
Id lowerId,
|
Id lowerId,
|
||||||
Id upperId, {
|
Id upperId, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension RecurringTransactionQueryFilter on QueryBuilder<RecurringTransaction,
|
extension RecurringTransactionQueryFilter
|
||||||
RecurringTransaction, QFilterCondition> {
|
on
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> daysEqualTo(int value) {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QFilterCondition
|
||||||
|
> {
|
||||||
|
QueryBuilder<
|
||||||
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
daysEqualTo(int value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'days',
|
FilterCondition.equalTo(property: r'days', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> daysGreaterThan(
|
RecurringTransaction,
|
||||||
int value, {
|
RecurringTransaction,
|
||||||
bool include = false,
|
QAfterFilterCondition
|
||||||
}) {
|
>
|
||||||
|
daysGreaterThan(int value, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'days',
|
include: include,
|
||||||
value: value,
|
property: r'days',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> daysLessThan(
|
RecurringTransaction,
|
||||||
int value, {
|
RecurringTransaction,
|
||||||
bool include = false,
|
QAfterFilterCondition
|
||||||
}) {
|
>
|
||||||
|
daysLessThan(int value, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'days',
|
include: include,
|
||||||
value: value,
|
property: r'days',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> daysBetween(
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
daysBetween(
|
||||||
int lower,
|
int lower,
|
||||||
int upper, {
|
int upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'days',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'days',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> idEqualTo(Id value) {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
idEqualTo(Id value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> idGreaterThan(
|
RecurringTransaction,
|
||||||
Id value, {
|
RecurringTransaction,
|
||||||
bool include = false,
|
QAfterFilterCondition
|
||||||
}) {
|
>
|
||||||
|
idGreaterThan(Id value, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> idLessThan(
|
RecurringTransaction,
|
||||||
Id value, {
|
RecurringTransaction,
|
||||||
bool include = false,
|
QAfterFilterCondition
|
||||||
}) {
|
>
|
||||||
|
idLessThan(Id value, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> idBetween(
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
idBetween(
|
||||||
Id lower,
|
Id lower,
|
||||||
Id upper, {
|
Id upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> lastExecutionIsNull() {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
lastExecutionIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const FilterCondition.isNull(
|
return query.addFilterCondition(
|
||||||
property: r'lastExecution',
|
const FilterCondition.isNull(property: r'lastExecution'),
|
||||||
));
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> lastExecutionIsNotNull() {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
lastExecutionIsNotNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
return query.addFilterCondition(
|
||||||
property: r'lastExecution',
|
const FilterCondition.isNotNull(property: r'lastExecution'),
|
||||||
));
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> lastExecutionEqualTo(DateTime? value) {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
lastExecutionEqualTo(DateTime? value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'lastExecution',
|
FilterCondition.equalTo(property: r'lastExecution', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> lastExecutionGreaterThan(
|
RecurringTransaction,
|
||||||
DateTime? value, {
|
RecurringTransaction,
|
||||||
bool include = false,
|
QAfterFilterCondition
|
||||||
}) {
|
>
|
||||||
|
lastExecutionGreaterThan(DateTime? value, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'lastExecution',
|
include: include,
|
||||||
value: value,
|
property: r'lastExecution',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> lastExecutionLessThan(
|
RecurringTransaction,
|
||||||
DateTime? value, {
|
RecurringTransaction,
|
||||||
bool include = false,
|
QAfterFilterCondition
|
||||||
}) {
|
>
|
||||||
|
lastExecutionLessThan(DateTime? value, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'lastExecution',
|
include: include,
|
||||||
value: value,
|
property: r'lastExecution',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> lastExecutionBetween(
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
lastExecutionBetween(
|
||||||
DateTime? lower,
|
DateTime? lower,
|
||||||
DateTime? upper, {
|
DateTime? upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'lastExecution',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'lastExecution',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension RecurringTransactionQueryObject on QueryBuilder<RecurringTransaction,
|
extension RecurringTransactionQueryObject
|
||||||
RecurringTransaction, QFilterCondition> {}
|
on
|
||||||
|
QueryBuilder<
|
||||||
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QFilterCondition
|
||||||
|
> {}
|
||||||
|
|
||||||
extension RecurringTransactionQueryLinks on QueryBuilder<RecurringTransaction,
|
extension RecurringTransactionQueryLinks
|
||||||
RecurringTransaction, QFilterCondition> {
|
on
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> template(FilterQuery<TransactionTemplate> q) {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QFilterCondition
|
||||||
|
> {
|
||||||
|
QueryBuilder<
|
||||||
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
template(FilterQuery<TransactionTemplate> q) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'template');
|
return query.link(q, r'template');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> templateIsNull() {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
templateIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'template', 0, true, 0, true);
|
return query.linkLength(r'template', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> account(FilterQuery<Account> q) {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
account(FilterQuery<Account> q) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'account');
|
return query.link(q, r'account');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction,
|
QueryBuilder<
|
||||||
QAfterFilterCondition> accountIsNull() {
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QAfterFilterCondition
|
||||||
|
>
|
||||||
|
accountIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'account', 0, true, 0, true);
|
return query.linkLength(r'account', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
@ -428,28 +515,28 @@ extension RecurringTransactionQueryLinks on QueryBuilder<RecurringTransaction,
|
|||||||
extension RecurringTransactionQuerySortBy
|
extension RecurringTransactionQuerySortBy
|
||||||
on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortBy> {
|
on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortBy> {
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
sortByDays() {
|
sortByDays() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'days', Sort.asc);
|
return query.addSortBy(r'days', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
sortByDaysDesc() {
|
sortByDaysDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'days', Sort.desc);
|
return query.addSortBy(r'days', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
sortByLastExecution() {
|
sortByLastExecution() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'lastExecution', Sort.asc);
|
return query.addSortBy(r'lastExecution', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
sortByLastExecutionDesc() {
|
sortByLastExecutionDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'lastExecution', Sort.desc);
|
return query.addSortBy(r'lastExecution', Sort.desc);
|
||||||
});
|
});
|
||||||
@ -459,42 +546,42 @@ extension RecurringTransactionQuerySortBy
|
|||||||
extension RecurringTransactionQuerySortThenBy
|
extension RecurringTransactionQuerySortThenBy
|
||||||
on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortThenBy> {
|
on QueryBuilder<RecurringTransaction, RecurringTransaction, QSortThenBy> {
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
thenByDays() {
|
thenByDays() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'days', Sort.asc);
|
return query.addSortBy(r'days', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
thenByDaysDesc() {
|
thenByDaysDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'days', Sort.desc);
|
return query.addSortBy(r'days', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
thenById() {
|
thenById() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'id', Sort.asc);
|
return query.addSortBy(r'id', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
thenByIdDesc() {
|
thenByIdDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'id', Sort.desc);
|
return query.addSortBy(r'id', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
thenByLastExecution() {
|
thenByLastExecution() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'lastExecution', Sort.asc);
|
return query.addSortBy(r'lastExecution', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QAfterSortBy>
|
||||||
thenByLastExecutionDesc() {
|
thenByLastExecutionDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'lastExecution', Sort.desc);
|
return query.addSortBy(r'lastExecution', Sort.desc);
|
||||||
});
|
});
|
||||||
@ -504,22 +591,27 @@ extension RecurringTransactionQuerySortThenBy
|
|||||||
extension RecurringTransactionQueryWhereDistinct
|
extension RecurringTransactionQueryWhereDistinct
|
||||||
on QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct> {
|
on QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct> {
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
|
||||||
distinctByDays() {
|
distinctByDays() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'days');
|
return query.addDistinctBy(r'days');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
|
QueryBuilder<RecurringTransaction, RecurringTransaction, QDistinct>
|
||||||
distinctByLastExecution() {
|
distinctByLastExecution() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'lastExecution');
|
return query.addDistinctBy(r'lastExecution');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension RecurringTransactionQueryProperty on QueryBuilder<
|
extension RecurringTransactionQueryProperty
|
||||||
RecurringTransaction, RecurringTransaction, QQueryProperty> {
|
on
|
||||||
|
QueryBuilder<
|
||||||
|
RecurringTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
|
QQueryProperty
|
||||||
|
> {
|
||||||
QueryBuilder<RecurringTransaction, int, QQueryOperations> idProperty() {
|
QueryBuilder<RecurringTransaction, int, QQueryOperations> idProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addPropertyName(r'id');
|
return query.addPropertyName(r'id');
|
||||||
@ -533,7 +625,7 @@ extension RecurringTransactionQueryProperty on QueryBuilder<
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<RecurringTransaction, DateTime?, QQueryOperations>
|
QueryBuilder<RecurringTransaction, DateTime?, QQueryOperations>
|
||||||
lastExecutionProperty() {
|
lastExecutionProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addPropertyName(r'lastExecution');
|
return query.addPropertyName(r'lastExecution');
|
||||||
});
|
});
|
||||||
|
@ -18,21 +18,13 @@ const TransactionTemplateSchema = CollectionSchema(
|
|||||||
name: r'TransactionTemplate',
|
name: r'TransactionTemplate',
|
||||||
id: -2324989530163310644,
|
id: -2324989530163310644,
|
||||||
properties: {
|
properties: {
|
||||||
r'amount': PropertySchema(
|
r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double),
|
||||||
id: 0,
|
r'name': PropertySchema(id: 1, name: r'name', type: IsarType.string),
|
||||||
name: r'amount',
|
|
||||||
type: IsarType.double,
|
|
||||||
),
|
|
||||||
r'name': PropertySchema(
|
|
||||||
id: 1,
|
|
||||||
name: r'name',
|
|
||||||
type: IsarType.string,
|
|
||||||
),
|
|
||||||
r'recurring': PropertySchema(
|
r'recurring': PropertySchema(
|
||||||
id: 2,
|
id: 2,
|
||||||
name: r'recurring',
|
name: r'recurring',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
estimateSize: _transactionTemplateEstimateSize,
|
estimateSize: _transactionTemplateEstimateSize,
|
||||||
serialize: _transactionTemplateSerialize,
|
serialize: _transactionTemplateSerialize,
|
||||||
@ -58,7 +50,7 @@ const TransactionTemplateSchema = CollectionSchema(
|
|||||||
name: r'account',
|
name: r'account',
|
||||||
target: r'Account',
|
target: r'Account',
|
||||||
single: true,
|
single: true,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
embeddedSchemas: {},
|
embeddedSchemas: {},
|
||||||
getId: _transactionTemplateGetId,
|
getId: _transactionTemplateGetId,
|
||||||
@ -125,17 +117,29 @@ Id _transactionTemplateGetId(TransactionTemplate object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<IsarLinkBase<dynamic>> _transactionTemplateGetLinks(
|
List<IsarLinkBase<dynamic>> _transactionTemplateGetLinks(
|
||||||
TransactionTemplate object) {
|
TransactionTemplate object,
|
||||||
|
) {
|
||||||
return [object.expenseCategory, object.beneficiary, object.account];
|
return [object.expenseCategory, object.beneficiary, object.account];
|
||||||
}
|
}
|
||||||
|
|
||||||
void _transactionTemplateAttach(
|
void _transactionTemplateAttach(
|
||||||
IsarCollection<dynamic> col, Id id, TransactionTemplate object) {
|
IsarCollection<dynamic> col,
|
||||||
|
Id id,
|
||||||
|
TransactionTemplate object,
|
||||||
|
) {
|
||||||
object.id = id;
|
object.id = id;
|
||||||
object.expenseCategory.attach(
|
object.expenseCategory.attach(
|
||||||
col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id);
|
col,
|
||||||
object.beneficiary
|
col.isar.collection<ExpenseCategory>(),
|
||||||
.attach(col, col.isar.collection<Beneficiary>(), r'beneficiary', id);
|
r'expenseCategory',
|
||||||
|
id,
|
||||||
|
);
|
||||||
|
object.beneficiary.attach(
|
||||||
|
col,
|
||||||
|
col.isar.collection<Beneficiary>(),
|
||||||
|
r'beneficiary',
|
||||||
|
id,
|
||||||
|
);
|
||||||
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,17 +155,14 @@ extension TransactionTemplateQueryWhereSort
|
|||||||
extension TransactionTemplateQueryWhere
|
extension TransactionTemplateQueryWhere
|
||||||
on QueryBuilder<TransactionTemplate, TransactionTemplate, QWhereClause> {
|
on QueryBuilder<TransactionTemplate, TransactionTemplate, QWhereClause> {
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
||||||
idEqualTo(Id id) {
|
idEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
||||||
idNotEqualTo(Id id) {
|
idNotEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
if (query.whereSort == Sort.asc) {
|
if (query.whereSort == Sort.asc) {
|
||||||
return query
|
return query
|
||||||
@ -184,7 +185,7 @@ extension TransactionTemplateQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
||||||
idGreaterThan(Id id, {bool include = false}) {
|
idGreaterThan(Id id, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -193,7 +194,7 @@ extension TransactionTemplateQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
||||||
idLessThan(Id id, {bool include = false}) {
|
idLessThan(Id id, {bool include = false}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -202,73 +203,83 @@ extension TransactionTemplateQueryWhere
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterWhereClause>
|
||||||
idBetween(
|
idBetween(
|
||||||
Id lowerId,
|
Id lowerId,
|
||||||
Id upperId, {
|
Id upperId, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension TransactionTemplateQueryFilter on QueryBuilder<TransactionTemplate,
|
extension TransactionTemplateQueryFilter
|
||||||
TransactionTemplate, QFilterCondition> {
|
on
|
||||||
|
QueryBuilder<
|
||||||
|
TransactionTemplate,
|
||||||
|
TransactionTemplate,
|
||||||
|
QFilterCondition
|
||||||
|
> {
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
amountEqualTo(
|
amountEqualTo(double value, {double epsilon = Query.epsilon}) {
|
||||||
double value, {
|
|
||||||
double epsilon = Query.epsilon,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'amount',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
amountGreaterThan(
|
amountGreaterThan(
|
||||||
double value, {
|
double value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'amount',
|
include: include,
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
amountLessThan(
|
amountLessThan(
|
||||||
double value, {
|
double value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'amount',
|
include: include,
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
amountBetween(
|
amountBetween(
|
||||||
double lower,
|
double lower,
|
||||||
double upper, {
|
double upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
@ -276,121 +287,125 @@ extension TransactionTemplateQueryFilter on QueryBuilder<TransactionTemplate,
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'amount',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'amount',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
epsilon: epsilon,
|
includeUpper: includeUpper,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
idEqualTo(Id value) {
|
idEqualTo(Id value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
idGreaterThan(
|
idGreaterThan(Id value, {bool include = false}) {
|
||||||
Id value, {
|
|
||||||
bool include = false,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
idLessThan(
|
idLessThan(Id value, {bool include = false}) {
|
||||||
Id value, {
|
|
||||||
bool include = false,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
idBetween(
|
idBetween(
|
||||||
Id lower,
|
Id lower,
|
||||||
Id upper, {
|
Id upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameEqualTo(
|
nameEqualTo(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameGreaterThan(
|
nameGreaterThan(
|
||||||
String value, {
|
String value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameLessThan(
|
nameLessThan(
|
||||||
String value, {
|
String value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'name',
|
include: include,
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameBetween(
|
nameBetween(
|
||||||
String lower,
|
String lower,
|
||||||
String upper, {
|
String upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
@ -398,140 +413,151 @@ extension TransactionTemplateQueryFilter on QueryBuilder<TransactionTemplate,
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'name',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
caseSensitive: caseSensitive,
|
includeUpper: includeUpper,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameStartsWith(
|
nameStartsWith(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.startsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameEndsWith(
|
nameEndsWith(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.endsWith(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameContains(String value, {bool caseSensitive = true}) {
|
nameContains(String value, {bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.contains(
|
||||||
value: value,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameMatches(String pattern, {bool caseSensitive = true}) {
|
nameMatches(String pattern, {bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.matches(
|
||||||
wildcard: pattern,
|
property: r'name',
|
||||||
caseSensitive: caseSensitive,
|
wildcard: pattern,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameIsEmpty() {
|
nameIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.equalTo(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
nameIsNotEmpty() {
|
nameIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
property: r'name',
|
FilterCondition.greaterThan(property: r'name', value: ''),
|
||||||
value: '',
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
recurringEqualTo(bool value) {
|
recurringEqualTo(bool value) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'recurring',
|
FilterCondition.equalTo(property: r'recurring', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension TransactionTemplateQueryObject on QueryBuilder<TransactionTemplate,
|
extension TransactionTemplateQueryObject
|
||||||
TransactionTemplate, QFilterCondition> {}
|
on
|
||||||
|
QueryBuilder<
|
||||||
|
TransactionTemplate,
|
||||||
|
TransactionTemplate,
|
||||||
|
QFilterCondition
|
||||||
|
> {}
|
||||||
|
|
||||||
extension TransactionTemplateQueryLinks on QueryBuilder<TransactionTemplate,
|
extension TransactionTemplateQueryLinks
|
||||||
TransactionTemplate, QFilterCondition> {
|
on
|
||||||
|
QueryBuilder<
|
||||||
|
TransactionTemplate,
|
||||||
|
TransactionTemplate,
|
||||||
|
QFilterCondition
|
||||||
|
> {
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
expenseCategory(FilterQuery<ExpenseCategory> q) {
|
expenseCategory(FilterQuery<ExpenseCategory> q) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'expenseCategory');
|
return query.link(q, r'expenseCategory');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
expenseCategoryIsNull() {
|
expenseCategoryIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'expenseCategory', 0, true, 0, true);
|
return query.linkLength(r'expenseCategory', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
beneficiary(FilterQuery<Beneficiary> q) {
|
beneficiary(FilterQuery<Beneficiary> q) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'beneficiary');
|
return query.link(q, r'beneficiary');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
beneficiaryIsNull() {
|
beneficiaryIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'beneficiary', 0, true, 0, true);
|
return query.linkLength(r'beneficiary', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
account(FilterQuery<Account> q) {
|
account(FilterQuery<Account> q) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'account');
|
return query.link(q, r'account');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterFilterCondition>
|
||||||
accountIsNull() {
|
accountIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'account', 0, true, 0, true);
|
return query.linkLength(r'account', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
@ -541,42 +567,42 @@ extension TransactionTemplateQueryLinks on QueryBuilder<TransactionTemplate,
|
|||||||
extension TransactionTemplateQuerySortBy
|
extension TransactionTemplateQuerySortBy
|
||||||
on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortBy> {
|
on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortBy> {
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
sortByAmount() {
|
sortByAmount() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'amount', Sort.asc);
|
return query.addSortBy(r'amount', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
sortByAmountDesc() {
|
sortByAmountDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'amount', Sort.desc);
|
return query.addSortBy(r'amount', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
sortByName() {
|
sortByName() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'name', Sort.asc);
|
return query.addSortBy(r'name', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
sortByNameDesc() {
|
sortByNameDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'name', Sort.desc);
|
return query.addSortBy(r'name', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
sortByRecurring() {
|
sortByRecurring() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'recurring', Sort.asc);
|
return query.addSortBy(r'recurring', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
sortByRecurringDesc() {
|
sortByRecurringDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'recurring', Sort.desc);
|
return query.addSortBy(r'recurring', Sort.desc);
|
||||||
});
|
});
|
||||||
@ -586,56 +612,56 @@ extension TransactionTemplateQuerySortBy
|
|||||||
extension TransactionTemplateQuerySortThenBy
|
extension TransactionTemplateQuerySortThenBy
|
||||||
on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortThenBy> {
|
on QueryBuilder<TransactionTemplate, TransactionTemplate, QSortThenBy> {
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenByAmount() {
|
thenByAmount() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'amount', Sort.asc);
|
return query.addSortBy(r'amount', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenByAmountDesc() {
|
thenByAmountDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'amount', Sort.desc);
|
return query.addSortBy(r'amount', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenById() {
|
thenById() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'id', Sort.asc);
|
return query.addSortBy(r'id', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenByIdDesc() {
|
thenByIdDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'id', Sort.desc);
|
return query.addSortBy(r'id', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenByName() {
|
thenByName() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'name', Sort.asc);
|
return query.addSortBy(r'name', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenByNameDesc() {
|
thenByNameDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'name', Sort.desc);
|
return query.addSortBy(r'name', Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenByRecurring() {
|
thenByRecurring() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'recurring', Sort.asc);
|
return query.addSortBy(r'recurring', Sort.asc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QAfterSortBy>
|
||||||
thenByRecurringDesc() {
|
thenByRecurringDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'recurring', Sort.desc);
|
return query.addSortBy(r'recurring', Sort.desc);
|
||||||
});
|
});
|
||||||
@ -645,21 +671,21 @@ extension TransactionTemplateQuerySortThenBy
|
|||||||
extension TransactionTemplateQueryWhereDistinct
|
extension TransactionTemplateQueryWhereDistinct
|
||||||
on QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct> {
|
on QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct> {
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
|
||||||
distinctByAmount() {
|
distinctByAmount() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'amount');
|
return query.addDistinctBy(r'amount');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
|
||||||
distinctByName({bool caseSensitive = true}) {
|
distinctByName({bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
return query.addDistinctBy(r'name', caseSensitive: caseSensitive);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
|
QueryBuilder<TransactionTemplate, TransactionTemplate, QDistinct>
|
||||||
distinctByRecurring() {
|
distinctByRecurring() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'recurring');
|
return query.addDistinctBy(r'recurring');
|
||||||
});
|
});
|
||||||
@ -687,7 +713,7 @@ extension TransactionTemplateQueryProperty
|
|||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<TransactionTemplate, bool, QQueryOperations>
|
QueryBuilder<TransactionTemplate, bool, QQueryOperations>
|
||||||
recurringProperty() {
|
recurringProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addPropertyName(r'recurring');
|
return query.addPropertyName(r'recurring');
|
||||||
});
|
});
|
||||||
|
@ -17,21 +17,9 @@ const TransactionSchema = CollectionSchema(
|
|||||||
name: r'Transaction',
|
name: r'Transaction',
|
||||||
id: 5320225499417954855,
|
id: 5320225499417954855,
|
||||||
properties: {
|
properties: {
|
||||||
r'amount': PropertySchema(
|
r'amount': PropertySchema(id: 0, name: r'amount', type: IsarType.double),
|
||||||
id: 0,
|
r'date': PropertySchema(id: 1, name: r'date', type: IsarType.dateTime),
|
||||||
name: r'amount',
|
r'tags': PropertySchema(id: 2, name: r'tags', type: IsarType.stringList),
|
||||||
type: IsarType.double,
|
|
||||||
),
|
|
||||||
r'date': PropertySchema(
|
|
||||||
id: 1,
|
|
||||||
name: r'date',
|
|
||||||
type: IsarType.dateTime,
|
|
||||||
),
|
|
||||||
r'tags': PropertySchema(
|
|
||||||
id: 2,
|
|
||||||
name: r'tags',
|
|
||||||
type: IsarType.stringList,
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
estimateSize: _transactionEstimateSize,
|
estimateSize: _transactionEstimateSize,
|
||||||
serialize: _transactionSerialize,
|
serialize: _transactionSerialize,
|
||||||
@ -57,7 +45,7 @@ const TransactionSchema = CollectionSchema(
|
|||||||
name: r'beneficiary',
|
name: r'beneficiary',
|
||||||
target: r'Beneficiary',
|
target: r'Beneficiary',
|
||||||
single: true,
|
single: true,
|
||||||
)
|
),
|
||||||
},
|
},
|
||||||
embeddedSchemas: {},
|
embeddedSchemas: {},
|
||||||
getId: _transactionGetId,
|
getId: _transactionGetId,
|
||||||
@ -134,13 +122,24 @@ List<IsarLinkBase<dynamic>> _transactionGetLinks(Transaction object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _transactionAttach(
|
void _transactionAttach(
|
||||||
IsarCollection<dynamic> col, Id id, Transaction object) {
|
IsarCollection<dynamic> col,
|
||||||
|
Id id,
|
||||||
|
Transaction object,
|
||||||
|
) {
|
||||||
object.id = id;
|
object.id = id;
|
||||||
object.expenseCategory.attach(
|
object.expenseCategory.attach(
|
||||||
col, col.isar.collection<ExpenseCategory>(), r'expenseCategory', id);
|
col,
|
||||||
|
col.isar.collection<ExpenseCategory>(),
|
||||||
|
r'expenseCategory',
|
||||||
|
id,
|
||||||
|
);
|
||||||
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
object.account.attach(col, col.isar.collection<Account>(), r'account', id);
|
||||||
object.beneficiary
|
object.beneficiary.attach(
|
||||||
.attach(col, col.isar.collection<Beneficiary>(), r'beneficiary', id);
|
col,
|
||||||
|
col.isar.collection<Beneficiary>(),
|
||||||
|
r'beneficiary',
|
||||||
|
id,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
extension TransactionQueryWhereSort
|
extension TransactionQueryWhereSort
|
||||||
@ -156,15 +155,13 @@ extension TransactionQueryWhere
|
|||||||
on QueryBuilder<Transaction, Transaction, QWhereClause> {
|
on QueryBuilder<Transaction, Transaction, QWhereClause> {
|
||||||
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idEqualTo(Id id) {
|
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idEqualTo(Id id) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(IdWhereClause.between(lower: id, upper: id));
|
||||||
lower: id,
|
|
||||||
upper: id,
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idNotEqualTo(
|
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idNotEqualTo(
|
||||||
Id id) {
|
Id id,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
if (query.whereSort == Sort.asc) {
|
if (query.whereSort == Sort.asc) {
|
||||||
return query
|
return query
|
||||||
@ -186,8 +183,10 @@ extension TransactionQueryWhere
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idGreaterThan(Id id,
|
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idGreaterThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
IdWhereClause.greaterThan(lower: id, includeLower: include),
|
||||||
@ -195,8 +194,10 @@ extension TransactionQueryWhere
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idLessThan(Id id,
|
QueryBuilder<Transaction, Transaction, QAfterWhereClause> idLessThan(
|
||||||
{bool include = false}) {
|
Id id, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(
|
return query.addWhereClause(
|
||||||
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
IdWhereClause.lessThan(upper: id, includeUpper: include),
|
||||||
@ -211,12 +212,14 @@ extension TransactionQueryWhere
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addWhereClause(IdWhereClause.between(
|
return query.addWhereClause(
|
||||||
lower: lowerId,
|
IdWhereClause.between(
|
||||||
includeLower: includeLower,
|
lower: lowerId,
|
||||||
upper: upperId,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upperId,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -228,27 +231,31 @@ extension TransactionQueryFilter
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'amount',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
amountGreaterThan(
|
amountGreaterThan(
|
||||||
double value, {
|
double value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'amount',
|
include: include,
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,12 +265,14 @@ extension TransactionQueryFilter
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'amount',
|
include: include,
|
||||||
value: value,
|
property: r'amount',
|
||||||
epsilon: epsilon,
|
value: value,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,24 +284,26 @@ extension TransactionQueryFilter
|
|||||||
double epsilon = Query.epsilon,
|
double epsilon = Query.epsilon,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'amount',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'amount',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
epsilon: epsilon,
|
includeUpper: includeUpper,
|
||||||
));
|
epsilon: epsilon,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> dateEqualTo(
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> dateEqualTo(
|
||||||
DateTime value) {
|
DateTime value,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'date',
|
FilterCondition.equalTo(property: r'date', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,11 +312,13 @@ extension TransactionQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'date',
|
include: include,
|
||||||
value: value,
|
property: r'date',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,11 +327,13 @@ extension TransactionQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'date',
|
include: include,
|
||||||
value: value,
|
property: r'date',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,23 +344,25 @@ extension TransactionQueryFilter
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'date',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'date',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> idEqualTo(
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> idEqualTo(
|
||||||
Id value) {
|
Id value,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.equalTo(property: r'id', value: value),
|
||||||
value: value,
|
);
|
||||||
));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,11 +371,13 @@ extension TransactionQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -367,11 +386,13 @@ extension TransactionQueryFilter
|
|||||||
bool include = false,
|
bool include = false,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'id',
|
include: include,
|
||||||
value: value,
|
property: r'id',
|
||||||
));
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,64 +403,69 @@ extension TransactionQueryFilter
|
|||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'id',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'id',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
));
|
includeUpper: includeUpper,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsElementEqualTo(
|
tagsElementEqualTo(String value, {bool caseSensitive = true}) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(
|
||||||
property: r'tags',
|
FilterCondition.equalTo(
|
||||||
value: value,
|
property: r'tags',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsElementGreaterThan(
|
tagsElementGreaterThan(
|
||||||
String value, {
|
String value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.greaterThan(
|
||||||
property: r'tags',
|
include: include,
|
||||||
value: value,
|
property: r'tags',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsElementLessThan(
|
tagsElementLessThan(
|
||||||
String value, {
|
String value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(
|
||||||
include: include,
|
FilterCondition.lessThan(
|
||||||
property: r'tags',
|
include: include,
|
||||||
value: value,
|
property: r'tags',
|
||||||
caseSensitive: caseSensitive,
|
value: value,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsElementBetween(
|
tagsElementBetween(
|
||||||
String lower,
|
String lower,
|
||||||
String upper, {
|
String upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
@ -447,159 +473,125 @@ extension TransactionQueryFilter
|
|||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(
|
||||||
property: r'tags',
|
FilterCondition.between(
|
||||||
lower: lower,
|
property: r'tags',
|
||||||
includeLower: includeLower,
|
lower: lower,
|
||||||
upper: upper,
|
includeLower: includeLower,
|
||||||
includeUpper: includeUpper,
|
upper: upper,
|
||||||
caseSensitive: caseSensitive,
|
includeUpper: includeUpper,
|
||||||
));
|
caseSensitive: caseSensitive,
|
||||||
});
|
),
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
|
||||||
tagsElementStartsWith(
|
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
|
||||||
property: r'tags',
|
|
||||||
value: value,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
|
||||||
tagsElementEndsWith(
|
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
|
||||||
property: r'tags',
|
|
||||||
value: value,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
|
||||||
tagsElementContains(String value, {bool caseSensitive = true}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
|
||||||
property: r'tags',
|
|
||||||
value: value,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
|
||||||
tagsElementMatches(String pattern, {bool caseSensitive = true}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
|
||||||
property: r'tags',
|
|
||||||
wildcard: pattern,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
|
||||||
tagsElementIsEmpty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
|
||||||
property: r'tags',
|
|
||||||
value: '',
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
|
||||||
tagsElementIsNotEmpty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
|
||||||
property: r'tags',
|
|
||||||
value: '',
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
|
||||||
tagsLengthEqualTo(int length) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.listLength(
|
|
||||||
r'tags',
|
|
||||||
length,
|
|
||||||
true,
|
|
||||||
length,
|
|
||||||
true,
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
tagsElementStartsWith(String value, {bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
FilterCondition.startsWith(
|
||||||
|
property: r'tags',
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
tagsElementEndsWith(String value, {bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
FilterCondition.endsWith(
|
||||||
|
property: r'tags',
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
tagsElementContains(String value, {bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
FilterCondition.contains(
|
||||||
|
property: r'tags',
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
tagsElementMatches(String pattern, {bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
FilterCondition.matches(
|
||||||
|
property: r'tags',
|
||||||
|
wildcard: pattern,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
tagsElementIsEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
FilterCondition.equalTo(property: r'tags', value: ''),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
tagsElementIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
FilterCondition.greaterThan(property: r'tags', value: ''),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
tagsLengthEqualTo(int length) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.listLength(r'tags', length, true, length, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> tagsIsEmpty() {
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> tagsIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.listLength(
|
return query.listLength(r'tags', 0, true, 0, true);
|
||||||
r'tags',
|
|
||||||
0,
|
|
||||||
true,
|
|
||||||
0,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsIsNotEmpty() {
|
tagsIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.listLength(
|
return query.listLength(r'tags', 0, false, 999999, true);
|
||||||
r'tags',
|
|
||||||
0,
|
|
||||||
false,
|
|
||||||
999999,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsLengthLessThan(
|
tagsLengthLessThan(int length, {bool include = false}) {
|
||||||
int length, {
|
|
||||||
bool include = false,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.listLength(
|
return query.listLength(r'tags', 0, true, length, include);
|
||||||
r'tags',
|
|
||||||
0,
|
|
||||||
true,
|
|
||||||
length,
|
|
||||||
include,
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsLengthGreaterThan(
|
tagsLengthGreaterThan(int length, {bool include = false}) {
|
||||||
int length, {
|
|
||||||
bool include = false,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.listLength(
|
return query.listLength(r'tags', length, include, 999999, true);
|
||||||
r'tags',
|
|
||||||
length,
|
|
||||||
include,
|
|
||||||
999999,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
tagsLengthBetween(
|
tagsLengthBetween(
|
||||||
int lower,
|
int lower,
|
||||||
int upper, {
|
int upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
@ -623,42 +615,45 @@ extension TransactionQueryObject
|
|||||||
extension TransactionQueryLinks
|
extension TransactionQueryLinks
|
||||||
on QueryBuilder<Transaction, Transaction, QFilterCondition> {
|
on QueryBuilder<Transaction, Transaction, QFilterCondition> {
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> expenseCategory(
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> expenseCategory(
|
||||||
FilterQuery<ExpenseCategory> q) {
|
FilterQuery<ExpenseCategory> q,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'expenseCategory');
|
return query.link(q, r'expenseCategory');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
expenseCategoryIsNull() {
|
expenseCategoryIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'expenseCategory', 0, true, 0, true);
|
return query.linkLength(r'expenseCategory', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> account(
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> account(
|
||||||
FilterQuery<Account> q) {
|
FilterQuery<Account> q,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'account');
|
return query.link(q, r'account');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
accountIsNull() {
|
accountIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'account', 0, true, 0, true);
|
return query.linkLength(r'account', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> beneficiary(
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition> beneficiary(
|
||||||
FilterQuery<Beneficiary> q) {
|
FilterQuery<Beneficiary> q,
|
||||||
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.link(q, r'beneficiary');
|
return query.link(q, r'beneficiary');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
beneficiaryIsNull() {
|
beneficiaryIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.linkLength(r'beneficiary', 0, true, 0, true);
|
return query.linkLength(r'beneficiary', 0, true, 0, true);
|
||||||
});
|
});
|
||||||
|
@ -83,7 +83,9 @@ Stream<void> watchRecurringTransactions(Account account) {
|
|||||||
Future<void> upsertAccount(Account account) async {
|
Future<void> upsertAccount(Account account) async {
|
||||||
final db = GetIt.I.get<Isar>();
|
final db = GetIt.I.get<Isar>();
|
||||||
return db.writeTxn(() async {
|
return db.writeTxn(() async {
|
||||||
await db.accounts.put(account);
|
print("Before account insert");
|
||||||
|
final id = await db.accounts.put(account);
|
||||||
|
print("After account insert: $id");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,14 +116,6 @@ Future<void> upsertTransactionTemplate(TransactionTemplate template) async {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> deleteRecurringTransactionTemplate(RecurringTransaction template) {
|
|
||||||
final db = GetIt.I.get<Isar>();
|
|
||||||
return db.writeTxn(() async {
|
|
||||||
await db.transactionTemplates.delete(template.template.value!.id);
|
|
||||||
await db.recurringTransactions.delete(template.id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> upsertRecurringTransaction(RecurringTransaction template) async {
|
Future<void> upsertRecurringTransaction(RecurringTransaction template) async {
|
||||||
final db = GetIt.I.get<Isar>();
|
final db = GetIt.I.get<Isar>();
|
||||||
return db.writeTxn(() async {
|
return db.writeTxn(() async {
|
||||||
@ -151,16 +145,10 @@ Stream<void> watchTransactionTemplates(Account account) {
|
|||||||
.transactionTemplates
|
.transactionTemplates
|
||||||
.filter()
|
.filter()
|
||||||
.account((q) => q.idEqualTo(account.id))
|
.account((q) => q.idEqualTo(account.id))
|
||||||
|
.recurringEqualTo(false)
|
||||||
.watchLazy(fireImmediately: true);
|
.watchLazy(fireImmediately: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> deleteTransactionTemplate(TransactionTemplate template) {
|
|
||||||
final db = GetIt.I.get<Isar>();
|
|
||||||
return db.writeTxn(() async {
|
|
||||||
await db.transactionTemplates.delete(template.id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<List<TransactionTemplate>> getTransactionTemplates(Account? account) {
|
Future<List<TransactionTemplate>> getTransactionTemplates(Account? account) {
|
||||||
if (account == null) {
|
if (account == null) {
|
||||||
return Future.value([]);
|
return Future.value([]);
|
||||||
@ -171,6 +159,7 @@ Future<List<TransactionTemplate>> getTransactionTemplates(Account? account) {
|
|||||||
.transactionTemplates
|
.transactionTemplates
|
||||||
.filter()
|
.filter()
|
||||||
.account((q) => q.idEqualTo(account.id))
|
.account((q) => q.idEqualTo(account.id))
|
||||||
|
.recurringEqualTo(false)
|
||||||
.findAll();
|
.findAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,14 +11,10 @@ import 'package:okane/ui/navigation.dart';
|
|||||||
import 'package:okane/ui/pages/budgets/budget_details.dart';
|
import 'package:okane/ui/pages/budgets/budget_details.dart';
|
||||||
import 'package:okane/ui/pages/transaction_details.dart';
|
import 'package:okane/ui/pages/transaction_details.dart';
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
import 'package:okane/ui/state/settings.dart';
|
|
||||||
|
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
final settings = SettingsCubit();
|
|
||||||
await settings.loadSettings();
|
|
||||||
GetIt.I.registerSingleton<SettingsCubit>(settings);
|
|
||||||
GetIt.I.registerSingleton<CoreCubit>(CoreCubit());
|
GetIt.I.registerSingleton<CoreCubit>(CoreCubit());
|
||||||
GetIt.I.registerSingleton<Isar>(await openDatabase());
|
GetIt.I.registerSingleton<Isar>(await openDatabase());
|
||||||
|
|
||||||
@ -35,39 +31,19 @@ class MyApp extends StatelessWidget {
|
|||||||
child: MultiBlocProvider(
|
child: MultiBlocProvider(
|
||||||
providers: [
|
providers: [
|
||||||
BlocProvider<CoreCubit>(create: (_) => GetIt.I.get<CoreCubit>()),
|
BlocProvider<CoreCubit>(create: (_) => GetIt.I.get<CoreCubit>()),
|
||||||
BlocProvider<SettingsCubit>(
|
|
||||||
create: (_) => GetIt.I.get<SettingsCubit>(),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
child: BlocBuilder<SettingsCubit, SettingsWrapper>(
|
child: MaterialApp(
|
||||||
builder:
|
title: 'Flutter Demo',
|
||||||
(context, state) => MaterialApp(
|
theme: ThemeData(
|
||||||
title: 'Okane',
|
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
|
||||||
theme: ThemeData(
|
),
|
||||||
colorSchemeSeed: Colors.deepPurple,
|
home: const MyHomePage(),
|
||||||
brightness: switch (state.settings.colorScheme) {
|
onGenerateRoute:
|
||||||
ColorSchemeSettings.dark => Brightness.dark,
|
(settings) => switch (settings.name) {
|
||||||
ColorSchemeSettings.light => Brightness.light,
|
"/transactions/details" => TransactionDetailsPage.mobileRoute,
|
||||||
ColorSchemeSettings.system => View.of(context).platformDispatcher.platformBrightness,
|
"/budgets/details" => BudgetDetailsPage.mobileRoute,
|
||||||
},
|
_ => MaterialPageRoute<void>(builder: (_) => Text("Unknown!!")),
|
||||||
pageTransitionsTheme: PageTransitionsTheme(
|
},
|
||||||
builders: Map.fromIterable(
|
|
||||||
TargetPlatform.values,
|
|
||||||
value: (_) => const FadeForwardsPageTransitionsBuilder(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
home: const MyHomePage(),
|
|
||||||
onGenerateRoute:
|
|
||||||
(settings) => switch (settings.name) {
|
|
||||||
"/transactions/details" =>
|
|
||||||
TransactionDetailsPage.mobileRoute,
|
|
||||||
"/budgets/details" => BudgetDetailsPage.mobileRoute,
|
|
||||||
_ => MaterialPageRoute<void>(
|
|
||||||
builder: (_) => Text("Unknown!!"),
|
|
||||||
),
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -2,17 +2,15 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:okane/screen.dart';
|
import 'package:okane/screen.dart';
|
||||||
import 'package:okane/ui/pages/account/account.dart';
|
import 'package:okane/ui/pages/account/account.dart';
|
||||||
import 'package:okane/ui/pages/beneficiary_list.dart';
|
|
||||||
import 'package:okane/ui/pages/budgets/budget_details.dart';
|
import 'package:okane/ui/pages/budgets/budget_details.dart';
|
||||||
import 'package:okane/ui/pages/budgets/budgets.dart';
|
import 'package:okane/ui/pages/budgets/budgets.dart';
|
||||||
import 'package:okane/ui/pages/settings.dart';
|
|
||||||
import 'package:okane/ui/pages/template_list.dart';
|
import 'package:okane/ui/pages/template_list.dart';
|
||||||
import 'package:okane/ui/pages/transaction_details.dart';
|
import 'package:okane/ui/pages/transaction_details.dart';
|
||||||
import 'package:okane/ui/pages/transaction_list.dart';
|
import 'package:okane/ui/pages/transaction_list.dart';
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
import 'package:okane/ui/widgets/account_indicator.dart';
|
import 'package:okane/ui/widgets/account_indicator.dart';
|
||||||
|
|
||||||
enum OkanePage { accounts, transactions, beneficiaries, templates, budgets, settings }
|
enum OkanePage { accounts, transactions, beneficiaries, templates, budgets }
|
||||||
|
|
||||||
typedef OkanePageBuilder = Widget Function(bool);
|
typedef OkanePageBuilder = Widget Function(bool);
|
||||||
|
|
||||||
@ -77,7 +75,7 @@ final _pages = <OkanePageItem>[
|
|||||||
OkanePage.beneficiaries,
|
OkanePage.beneficiaries,
|
||||||
Icons.person,
|
Icons.person,
|
||||||
"Beneficiaries",
|
"Beneficiaries",
|
||||||
BeneficiaryListPage(),
|
Container(),
|
||||||
null,
|
null,
|
||||||
true,
|
true,
|
||||||
),
|
),
|
||||||
@ -97,14 +95,6 @@ final _pages = <OkanePageItem>[
|
|||||||
(_) => BudgetDetailsPage(),
|
(_) => BudgetDetailsPage(),
|
||||||
true,
|
true,
|
||||||
),
|
),
|
||||||
OkanePageItem(
|
|
||||||
OkanePage.settings,
|
|
||||||
Icons.settings,
|
|
||||||
"Settings",
|
|
||||||
SettingsPage(),
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
class OkaneNavigationRail extends StatelessWidget {
|
class OkaneNavigationRail extends StatelessWidget {
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:get_it/get_it.dart';
|
|
||||||
import 'package:okane/database/collections/recurrent.dart';
|
import 'package:okane/database/collections/recurrent.dart';
|
||||||
import 'package:okane/database/database.dart';
|
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
import 'package:okane/ui/utils.dart';
|
|
||||||
import 'package:okane/ui/widgets/add_transaction.dart';
|
|
||||||
|
|
||||||
class UpcomingTransactionsCard extends StatelessWidget {
|
class UpcomingTransactionsCard extends StatelessWidget {
|
||||||
const UpcomingTransactionsCard({super.key});
|
const UpcomingTransactionsCard({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final bloc = GetIt.I.get<CoreCubit>();
|
|
||||||
return BlocBuilder<CoreCubit, CoreState>(
|
return BlocBuilder<CoreCubit, CoreState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
final today = DateTime.now();
|
final today = DateTime.now();
|
||||||
final upcomingRaw =
|
final upcomingRaw =
|
||||||
state.recurringTransactions.where((t) => t.isDue(today)).toList();
|
state.recurringTransactions.where((t) {
|
||||||
|
if (t.lastExecution == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return today.difference(t.lastExecution!).inDays <=
|
||||||
|
(t.days * 1.5).toInt();
|
||||||
|
}).toList();
|
||||||
final List<RecurringTransaction> upcoming =
|
final List<RecurringTransaction> upcoming =
|
||||||
upcomingRaw.isEmpty
|
upcomingRaw.isEmpty
|
||||||
? List.empty()
|
? List.empty()
|
||||||
@ -51,23 +53,7 @@ class UpcomingTransactionsCard extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
trailing: IconButton(
|
trailing: IconButton(
|
||||||
icon: Icon(Icons.play_arrow),
|
icon: Icon(Icons.play_arrow),
|
||||||
onPressed: () {
|
onPressed: () {},
|
||||||
showDialogOrModal(
|
|
||||||
context: context,
|
|
||||||
builder:
|
|
||||||
(context) => AddTransactionWidget(
|
|
||||||
activeAccountItem: bloc.activeAccount!,
|
|
||||||
template: t.template.value!,
|
|
||||||
onAdd: (transaction) async {
|
|
||||||
// Update the recurring template
|
|
||||||
print(transaction.date);
|
|
||||||
t.lastExecution = transaction.date;
|
|
||||||
await upsertRecurringTransaction(t);
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
||||||
import 'package:okane/ui/state/core.dart';
|
|
||||||
import 'package:okane/ui/widgets/image_wrapper.dart';
|
|
||||||
|
|
||||||
class BeneficiaryListPage extends StatelessWidget {
|
|
||||||
const BeneficiaryListPage({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return BlocBuilder<CoreCubit, CoreState>(
|
|
||||||
builder: (context, state) {
|
|
||||||
return Stack(
|
|
||||||
children: [
|
|
||||||
ListView.builder(
|
|
||||||
itemCount: state.beneficiaries.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
final item = state.beneficiaries[index];
|
|
||||||
return ListTile(
|
|
||||||
leading: ImageWrapper(
|
|
||||||
title: item.name,
|
|
||||||
path: item.imagePath,
|
|
||||||
),
|
|
||||||
title: Text(item.name),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
||||||
import 'package:get_it/get_it.dart';
|
|
||||||
import 'package:okane/ui/state/settings.dart';
|
|
||||||
import 'package:okane/ui/utils.dart';
|
|
||||||
|
|
||||||
class SettingsPage extends StatelessWidget {
|
|
||||||
const SettingsPage({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ListView(
|
|
||||||
children: [
|
|
||||||
BlocBuilder<SettingsCubit, SettingsWrapper>(
|
|
||||||
builder:
|
|
||||||
(context, state) => ListTile(
|
|
||||||
title: Text("Color Scheme"),
|
|
||||||
subtitle: switch (state.settings.colorScheme) {
|
|
||||||
ColorSchemeSettings.dark => Text("Dark"),
|
|
||||||
ColorSchemeSettings.light => Text("Light"),
|
|
||||||
ColorSchemeSettings.system => Text("System"),
|
|
||||||
},
|
|
||||||
onTap: () async {
|
|
||||||
final colorScheme = await showDialogOrModal(
|
|
||||||
context: context,
|
|
||||||
builder:
|
|
||||||
(context) => ListView(
|
|
||||||
shrinkWrap: true,
|
|
||||||
children:
|
|
||||||
ColorSchemeSettings.values
|
|
||||||
.map(
|
|
||||||
(s) => ListTile(
|
|
||||||
title: Text(switch (s) {
|
|
||||||
ColorSchemeSettings.dark => "Dark",
|
|
||||||
ColorSchemeSettings.light => "Light",
|
|
||||||
ColorSchemeSettings.system => "System",
|
|
||||||
}),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.of(context).pop(s);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.toList(),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
if (colorScheme == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await GetIt.I.get<SettingsCubit>().setSettings(
|
|
||||||
state.settings.copyWith(colorScheme: colorScheme),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:get_it/get_it.dart';
|
import 'package:get_it/get_it.dart';
|
||||||
import 'package:okane/database/database.dart';
|
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
import 'package:okane/ui/utils.dart';
|
import 'package:okane/ui/utils.dart';
|
||||||
import 'package:okane/ui/widgets/add_template.dart';
|
import 'package:okane/ui/widgets/add_template.dart';
|
||||||
@ -19,62 +18,28 @@ class TemplateListState extends State<TemplateListPage> {
|
|||||||
return BlocBuilder<CoreCubit, CoreState>(
|
return BlocBuilder<CoreCubit, CoreState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
final account = GetIt.I.get<CoreCubit>().activeAccount;
|
final account = GetIt.I.get<CoreCubit>().activeAccount;
|
||||||
final nonRecurringTemplates =
|
|
||||||
state.transactionTemplates.where((t) => !t.recurring).toList();
|
|
||||||
return Stack(
|
return Stack(
|
||||||
children: [
|
children: [
|
||||||
CustomScrollView(
|
Column(
|
||||||
slivers: [
|
children: [
|
||||||
SliverToBoxAdapter(child: Text("Non-recurring")),
|
Padding(
|
||||||
SliverList.builder(
|
padding: EdgeInsets.only(top: 16),
|
||||||
itemCount: nonRecurringTemplates.length,
|
child: ListView.builder(
|
||||||
itemBuilder: (context, index) {
|
itemCount: state.recurringTransactions.length,
|
||||||
final template = nonRecurringTemplates[index];
|
shrinkWrap: true,
|
||||||
return ListTile(
|
itemBuilder:
|
||||||
title: Text(template.name),
|
(ctx, idx) => Card(
|
||||||
trailing: IconButton(
|
child: ListTile(
|
||||||
icon: Icon(Icons.delete),
|
title: Text(
|
||||||
color: Colors.red,
|
state
|
||||||
onPressed: () async {
|
.recurringTransactions[idx]
|
||||||
final result = await confirm(
|
.template
|
||||||
context,
|
.value!
|
||||||
"Remove Template",
|
.name,
|
||||||
"Are you sure you want to remove the template '${template.name}'",
|
),
|
||||||
);
|
),
|
||||||
if (!result) {
|
),
|
||||||
return;
|
),
|
||||||
}
|
|
||||||
|
|
||||||
await deleteTransactionTemplate(template);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
SliverToBoxAdapter(child: Text("Recurring")),
|
|
||||||
SliverList.builder(
|
|
||||||
itemCount: state.recurringTransactions.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
final template = state.recurringTransactions[index];
|
|
||||||
return ListTile(
|
|
||||||
title: Text(template.template.value!.name),
|
|
||||||
trailing: IconButton(
|
|
||||||
icon: Icon(Icons.delete, color: Colors.red),
|
|
||||||
onPressed: () async {
|
|
||||||
final result = await confirm(
|
|
||||||
context,
|
|
||||||
"Remove Template",
|
|
||||||
"Are you sure you want to remove the template '${template.template.value!.name}'",
|
|
||||||
);
|
|
||||||
if (!result) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await deleteRecurringTransactionTemplate(template);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -82,6 +47,7 @@ class TemplateListState extends State<TemplateListPage> {
|
|||||||
right: 16,
|
right: 16,
|
||||||
bottom: 16,
|
bottom: 16,
|
||||||
child: FloatingActionButton(
|
child: FloatingActionButton(
|
||||||
|
child: Icon(Icons.add),
|
||||||
onPressed:
|
onPressed:
|
||||||
account == null
|
account == null
|
||||||
? () {}
|
? () {}
|
||||||
@ -99,7 +65,6 @@ class TemplateListState extends State<TemplateListPage> {
|
|||||||
showDragHandle: true,
|
showDragHandle: true,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Icon(Icons.add),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -3,7 +3,6 @@ import 'dart:io';
|
|||||||
import 'package:file_picker/file_picker.dart';
|
import 'package:file_picker/file_picker.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:get_it/get_it.dart';
|
|
||||||
import 'package:okane/database/collections/beneficiary.dart';
|
import 'package:okane/database/collections/beneficiary.dart';
|
||||||
import 'package:okane/database/database.dart';
|
import 'package:okane/database/database.dart';
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
@ -77,7 +76,6 @@ class TransactionDetailsPage extends StatelessWidget {
|
|||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
children: [
|
||||||
StreamBuilder(
|
StreamBuilder(
|
||||||
stream: watchBeneficiaryObject(
|
stream: watchBeneficiaryObject(
|
||||||
@ -91,50 +89,13 @@ class TransactionDetailsPage extends StatelessWidget {
|
|||||||
title: obj.name,
|
title: obj.name,
|
||||||
path: obj.imagePath,
|
path: obj.imagePath,
|
||||||
onTap: () => _updateBeneficiaryIcon(obj),
|
onTap: () => _updateBeneficiaryIcon(obj),
|
||||||
width: 90,
|
|
||||||
height: 90,
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16),
|
padding: EdgeInsets.only(left: 8),
|
||||||
child: Column(
|
child: Text(
|
||||||
mainAxisSize: MainAxisSize.min,
|
state.activeTransaction!.beneficiary.value!.name,
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
Icon(Icons.arrow_forward_rounded),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 8),
|
|
||||||
child: Text(
|
|
||||||
state
|
|
||||||
.activeTransaction!
|
|
||||||
.beneficiary
|
|
||||||
.value!
|
|
||||||
.name,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
Icon(Icons.arrow_back_rounded),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 8),
|
|
||||||
child: Text(
|
|
||||||
GetIt.I
|
|
||||||
.get<CoreCubit>()
|
|
||||||
.activeAccount!
|
|
||||||
.name!,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Spacer(),
|
Spacer(),
|
||||||
@ -146,7 +107,6 @@ class TransactionDetailsPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
||||||
Wrap(
|
Wrap(
|
||||||
spacing: 8,
|
spacing: 8,
|
||||||
children:
|
children:
|
||||||
@ -154,43 +114,13 @@ class TransactionDetailsPage extends StatelessWidget {
|
|||||||
.map((tag) => Chip(label: Text(tag)))
|
.map((tag) => Chip(label: Text(tag)))
|
||||||
.toList(),
|
.toList(),
|
||||||
),
|
),
|
||||||
|
Row(
|
||||||
if (state.activeTransaction!.expenseCategory.value !=
|
children: [
|
||||||
null)
|
state.activeTransaction!.amount > 0
|
||||||
Padding(
|
? Icon(Icons.add)
|
||||||
padding: EdgeInsets.symmetric(vertical: 8),
|
: Icon(Icons.remove),
|
||||||
child: Row(
|
Text(formatCurrency(state.activeTransaction!.amount)),
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
],
|
||||||
children: [
|
|
||||||
Text("Expense category"),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 16),
|
|
||||||
child: Chip(
|
|
||||||
label: Text(
|
|
||||||
state
|
|
||||||
.activeTransaction!
|
|
||||||
.expenseCategory
|
|
||||||
.value!
|
|
||||||
.name,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 8),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
state.activeTransaction!.amount > 0
|
|
||||||
? Icon(Icons.add)
|
|
||||||
: Icon(Icons.remove),
|
|
||||||
Text(
|
|
||||||
formatCurrency(state.activeTransaction!.amount),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -83,10 +83,58 @@ class TransactionListState extends State<TransactionListPage> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
/*Column(
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(top: 16),
|
||||||
|
child: GroupedListView(
|
||||||
|
elements: state.transactions,
|
||||||
|
reverse: true,
|
||||||
|
groupBy:
|
||||||
|
(Transaction item) => formatDateTime(item.date),
|
||||||
|
groupHeaderBuilder:
|
||||||
|
(item) => Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
DecoratedBox(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.black.withAlpha(170),
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
),
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.all(4),
|
||||||
|
child: Text(
|
||||||
|
formatDateTime(item.date),
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
shrinkWrap: true,
|
||||||
|
indexedItemBuilder:
|
||||||
|
(ctx, item, idx) => TransactionCard(
|
||||||
|
transaction: item,
|
||||||
|
onTap: () {
|
||||||
|
GetIt.I.get<CoreCubit>().setActiveTransaction(
|
||||||
|
item,
|
||||||
|
);
|
||||||
|
if (getScreenSize(ctx) == ScreenSize.small) {
|
||||||
|
Navigator.of(
|
||||||
|
context,
|
||||||
|
).pushNamed("/transactions/details");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),*/
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 16,
|
right: 16,
|
||||||
bottom: 16,
|
bottom: 16,
|
||||||
child: FloatingActionButton(
|
child: FloatingActionButton(
|
||||||
|
child: Icon(Icons.add),
|
||||||
onPressed:
|
onPressed:
|
||||||
account == null
|
account == null
|
||||||
? () {}
|
? () {}
|
||||||
@ -96,7 +144,7 @@ class TransactionListState extends State<TransactionListPage> {
|
|||||||
builder:
|
builder:
|
||||||
(ctx) => AddTransactionWidget(
|
(ctx) => AddTransactionWidget(
|
||||||
activeAccountItem: account,
|
activeAccountItem: account,
|
||||||
onAdd: (_) {
|
onAdd: () {
|
||||||
setState(() {});
|
setState(() {});
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
},
|
},
|
||||||
@ -104,7 +152,6 @@ class TransactionListState extends State<TransactionListPage> {
|
|||||||
showDragHandle: true,
|
showDragHandle: true,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Icon(Icons.add),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -66,7 +66,6 @@ class CoreCubit extends Cubit<CoreState> {
|
|||||||
_recurringTransactionStreamSubscription = watchRecurringTransactions(
|
_recurringTransactionStreamSubscription = watchRecurringTransactions(
|
||||||
activeAccount!,
|
activeAccount!,
|
||||||
).listen((_) async {
|
).listen((_) async {
|
||||||
print("RECURRING UPDATE");
|
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
recurringTransactions: await getRecurringTransactions(activeAccount!),
|
recurringTransactions: await getRecurringTransactions(activeAccount!),
|
||||||
|
@ -12,7 +12,8 @@ part of 'core.dart';
|
|||||||
T _$identity<T>(T value) => value;
|
T _$identity<T>(T value) => value;
|
||||||
|
|
||||||
final _privateConstructorUsedError = UnsupportedError(
|
final _privateConstructorUsedError = UnsupportedError(
|
||||||
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
|
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models',
|
||||||
|
);
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
mixin _$CoreState {
|
mixin _$CoreState {
|
||||||
@ -41,18 +42,19 @@ abstract class $CoreStateCopyWith<$Res> {
|
|||||||
factory $CoreStateCopyWith(CoreState value, $Res Function(CoreState) then) =
|
factory $CoreStateCopyWith(CoreState value, $Res Function(CoreState) then) =
|
||||||
_$CoreStateCopyWithImpl<$Res, CoreState>;
|
_$CoreStateCopyWithImpl<$Res, CoreState>;
|
||||||
@useResult
|
@useResult
|
||||||
$Res call(
|
$Res call({
|
||||||
{OkanePage activePage,
|
OkanePage activePage,
|
||||||
int? activeAccountIndex,
|
int? activeAccountIndex,
|
||||||
Transaction? activeTransaction,
|
Transaction? activeTransaction,
|
||||||
List<Account> accounts,
|
List<Account> accounts,
|
||||||
List<RecurringTransaction> recurringTransactions,
|
List<RecurringTransaction> recurringTransactions,
|
||||||
List<Transaction> transactions,
|
List<Transaction> transactions,
|
||||||
List<TransactionTemplate> transactionTemplates,
|
List<TransactionTemplate> transactionTemplates,
|
||||||
List<Beneficiary> beneficiaries,
|
List<Beneficiary> beneficiaries,
|
||||||
List<ExpenseCategory> expenseCategories,
|
List<ExpenseCategory> expenseCategories,
|
||||||
List<Budget> budgets,
|
List<Budget> budgets,
|
||||||
Budget? activeBudget});
|
Budget? activeBudget,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
@ -80,52 +82,66 @@ class _$CoreStateCopyWithImpl<$Res, $Val extends CoreState>
|
|||||||
Object? budgets = null,
|
Object? budgets = null,
|
||||||
Object? activeBudget = freezed,
|
Object? activeBudget = freezed,
|
||||||
}) {
|
}) {
|
||||||
return _then(_value.copyWith(
|
return _then(
|
||||||
activePage: null == activePage
|
_value.copyWith(
|
||||||
? _value.activePage
|
activePage:
|
||||||
: activePage // ignore: cast_nullable_to_non_nullable
|
null == activePage
|
||||||
as OkanePage,
|
? _value.activePage
|
||||||
activeAccountIndex: freezed == activeAccountIndex
|
: activePage // ignore: cast_nullable_to_non_nullable
|
||||||
? _value.activeAccountIndex
|
as OkanePage,
|
||||||
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
activeAccountIndex:
|
||||||
as int?,
|
freezed == activeAccountIndex
|
||||||
activeTransaction: freezed == activeTransaction
|
? _value.activeAccountIndex
|
||||||
? _value.activeTransaction
|
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
||||||
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
as int?,
|
||||||
as Transaction?,
|
activeTransaction:
|
||||||
accounts: null == accounts
|
freezed == activeTransaction
|
||||||
? _value.accounts
|
? _value.activeTransaction
|
||||||
: accounts // ignore: cast_nullable_to_non_nullable
|
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Account>,
|
as Transaction?,
|
||||||
recurringTransactions: null == recurringTransactions
|
accounts:
|
||||||
? _value.recurringTransactions
|
null == accounts
|
||||||
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
? _value.accounts
|
||||||
as List<RecurringTransaction>,
|
: accounts // ignore: cast_nullable_to_non_nullable
|
||||||
transactions: null == transactions
|
as List<Account>,
|
||||||
? _value.transactions
|
recurringTransactions:
|
||||||
: transactions // ignore: cast_nullable_to_non_nullable
|
null == recurringTransactions
|
||||||
as List<Transaction>,
|
? _value.recurringTransactions
|
||||||
transactionTemplates: null == transactionTemplates
|
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
||||||
? _value.transactionTemplates
|
as List<RecurringTransaction>,
|
||||||
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
transactions:
|
||||||
as List<TransactionTemplate>,
|
null == transactions
|
||||||
beneficiaries: null == beneficiaries
|
? _value.transactions
|
||||||
? _value.beneficiaries
|
: transactions // ignore: cast_nullable_to_non_nullable
|
||||||
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
as List<Transaction>,
|
||||||
as List<Beneficiary>,
|
transactionTemplates:
|
||||||
expenseCategories: null == expenseCategories
|
null == transactionTemplates
|
||||||
? _value.expenseCategories
|
? _value.transactionTemplates
|
||||||
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
||||||
as List<ExpenseCategory>,
|
as List<TransactionTemplate>,
|
||||||
budgets: null == budgets
|
beneficiaries:
|
||||||
? _value.budgets
|
null == beneficiaries
|
||||||
: budgets // ignore: cast_nullable_to_non_nullable
|
? _value.beneficiaries
|
||||||
as List<Budget>,
|
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
||||||
activeBudget: freezed == activeBudget
|
as List<Beneficiary>,
|
||||||
? _value.activeBudget
|
expenseCategories:
|
||||||
: activeBudget // ignore: cast_nullable_to_non_nullable
|
null == expenseCategories
|
||||||
as Budget?,
|
? _value.expenseCategories
|
||||||
) as $Val);
|
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
||||||
|
as List<ExpenseCategory>,
|
||||||
|
budgets:
|
||||||
|
null == budgets
|
||||||
|
? _value.budgets
|
||||||
|
: budgets // ignore: cast_nullable_to_non_nullable
|
||||||
|
as List<Budget>,
|
||||||
|
activeBudget:
|
||||||
|
freezed == activeBudget
|
||||||
|
? _value.activeBudget
|
||||||
|
: activeBudget // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Budget?,
|
||||||
|
)
|
||||||
|
as $Val,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,22 +149,24 @@ class _$CoreStateCopyWithImpl<$Res, $Val extends CoreState>
|
|||||||
abstract class _$$CoreStateImplCopyWith<$Res>
|
abstract class _$$CoreStateImplCopyWith<$Res>
|
||||||
implements $CoreStateCopyWith<$Res> {
|
implements $CoreStateCopyWith<$Res> {
|
||||||
factory _$$CoreStateImplCopyWith(
|
factory _$$CoreStateImplCopyWith(
|
||||||
_$CoreStateImpl value, $Res Function(_$CoreStateImpl) then) =
|
_$CoreStateImpl value,
|
||||||
__$$CoreStateImplCopyWithImpl<$Res>;
|
$Res Function(_$CoreStateImpl) then,
|
||||||
|
) = __$$CoreStateImplCopyWithImpl<$Res>;
|
||||||
@override
|
@override
|
||||||
@useResult
|
@useResult
|
||||||
$Res call(
|
$Res call({
|
||||||
{OkanePage activePage,
|
OkanePage activePage,
|
||||||
int? activeAccountIndex,
|
int? activeAccountIndex,
|
||||||
Transaction? activeTransaction,
|
Transaction? activeTransaction,
|
||||||
List<Account> accounts,
|
List<Account> accounts,
|
||||||
List<RecurringTransaction> recurringTransactions,
|
List<RecurringTransaction> recurringTransactions,
|
||||||
List<Transaction> transactions,
|
List<Transaction> transactions,
|
||||||
List<TransactionTemplate> transactionTemplates,
|
List<TransactionTemplate> transactionTemplates,
|
||||||
List<Beneficiary> beneficiaries,
|
List<Beneficiary> beneficiaries,
|
||||||
List<ExpenseCategory> expenseCategories,
|
List<ExpenseCategory> expenseCategories,
|
||||||
List<Budget> budgets,
|
List<Budget> budgets,
|
||||||
Budget? activeBudget});
|
Budget? activeBudget,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
@ -156,8 +174,9 @@ class __$$CoreStateImplCopyWithImpl<$Res>
|
|||||||
extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl>
|
extends _$CoreStateCopyWithImpl<$Res, _$CoreStateImpl>
|
||||||
implements _$$CoreStateImplCopyWith<$Res> {
|
implements _$$CoreStateImplCopyWith<$Res> {
|
||||||
__$$CoreStateImplCopyWithImpl(
|
__$$CoreStateImplCopyWithImpl(
|
||||||
_$CoreStateImpl _value, $Res Function(_$CoreStateImpl) _then)
|
_$CoreStateImpl _value,
|
||||||
: super(_value, _then);
|
$Res Function(_$CoreStateImpl) _then,
|
||||||
|
) : super(_value, _then);
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
@override
|
@override
|
||||||
@ -174,77 +193,90 @@ class __$$CoreStateImplCopyWithImpl<$Res>
|
|||||||
Object? budgets = null,
|
Object? budgets = null,
|
||||||
Object? activeBudget = freezed,
|
Object? activeBudget = freezed,
|
||||||
}) {
|
}) {
|
||||||
return _then(_$CoreStateImpl(
|
return _then(
|
||||||
activePage: null == activePage
|
_$CoreStateImpl(
|
||||||
? _value.activePage
|
activePage:
|
||||||
: activePage // ignore: cast_nullable_to_non_nullable
|
null == activePage
|
||||||
as OkanePage,
|
? _value.activePage
|
||||||
activeAccountIndex: freezed == activeAccountIndex
|
: activePage // ignore: cast_nullable_to_non_nullable
|
||||||
? _value.activeAccountIndex
|
as OkanePage,
|
||||||
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
activeAccountIndex:
|
||||||
as int?,
|
freezed == activeAccountIndex
|
||||||
activeTransaction: freezed == activeTransaction
|
? _value.activeAccountIndex
|
||||||
? _value.activeTransaction
|
: activeAccountIndex // ignore: cast_nullable_to_non_nullable
|
||||||
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
as int?,
|
||||||
as Transaction?,
|
activeTransaction:
|
||||||
accounts: null == accounts
|
freezed == activeTransaction
|
||||||
? _value._accounts
|
? _value.activeTransaction
|
||||||
: accounts // ignore: cast_nullable_to_non_nullable
|
: activeTransaction // ignore: cast_nullable_to_non_nullable
|
||||||
as List<Account>,
|
as Transaction?,
|
||||||
recurringTransactions: null == recurringTransactions
|
accounts:
|
||||||
? _value._recurringTransactions
|
null == accounts
|
||||||
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
? _value._accounts
|
||||||
as List<RecurringTransaction>,
|
: accounts // ignore: cast_nullable_to_non_nullable
|
||||||
transactions: null == transactions
|
as List<Account>,
|
||||||
? _value._transactions
|
recurringTransactions:
|
||||||
: transactions // ignore: cast_nullable_to_non_nullable
|
null == recurringTransactions
|
||||||
as List<Transaction>,
|
? _value._recurringTransactions
|
||||||
transactionTemplates: null == transactionTemplates
|
: recurringTransactions // ignore: cast_nullable_to_non_nullable
|
||||||
? _value._transactionTemplates
|
as List<RecurringTransaction>,
|
||||||
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
transactions:
|
||||||
as List<TransactionTemplate>,
|
null == transactions
|
||||||
beneficiaries: null == beneficiaries
|
? _value._transactions
|
||||||
? _value._beneficiaries
|
: transactions // ignore: cast_nullable_to_non_nullable
|
||||||
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
as List<Transaction>,
|
||||||
as List<Beneficiary>,
|
transactionTemplates:
|
||||||
expenseCategories: null == expenseCategories
|
null == transactionTemplates
|
||||||
? _value._expenseCategories
|
? _value._transactionTemplates
|
||||||
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
: transactionTemplates // ignore: cast_nullable_to_non_nullable
|
||||||
as List<ExpenseCategory>,
|
as List<TransactionTemplate>,
|
||||||
budgets: null == budgets
|
beneficiaries:
|
||||||
? _value._budgets
|
null == beneficiaries
|
||||||
: budgets // ignore: cast_nullable_to_non_nullable
|
? _value._beneficiaries
|
||||||
as List<Budget>,
|
: beneficiaries // ignore: cast_nullable_to_non_nullable
|
||||||
activeBudget: freezed == activeBudget
|
as List<Beneficiary>,
|
||||||
? _value.activeBudget
|
expenseCategories:
|
||||||
: activeBudget // ignore: cast_nullable_to_non_nullable
|
null == expenseCategories
|
||||||
as Budget?,
|
? _value._expenseCategories
|
||||||
));
|
: expenseCategories // ignore: cast_nullable_to_non_nullable
|
||||||
|
as List<ExpenseCategory>,
|
||||||
|
budgets:
|
||||||
|
null == budgets
|
||||||
|
? _value._budgets
|
||||||
|
: budgets // ignore: cast_nullable_to_non_nullable
|
||||||
|
as List<Budget>,
|
||||||
|
activeBudget:
|
||||||
|
freezed == activeBudget
|
||||||
|
? _value.activeBudget
|
||||||
|
: activeBudget // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Budget?,
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
|
|
||||||
class _$CoreStateImpl implements _CoreState {
|
class _$CoreStateImpl implements _CoreState {
|
||||||
const _$CoreStateImpl(
|
const _$CoreStateImpl({
|
||||||
{this.activePage = OkanePage.accounts,
|
this.activePage = OkanePage.accounts,
|
||||||
this.activeAccountIndex,
|
this.activeAccountIndex,
|
||||||
this.activeTransaction = null,
|
this.activeTransaction = null,
|
||||||
final List<Account> accounts = const [],
|
final List<Account> accounts = const [],
|
||||||
final List<RecurringTransaction> recurringTransactions = const [],
|
final List<RecurringTransaction> recurringTransactions = const [],
|
||||||
final List<Transaction> transactions = const [],
|
final List<Transaction> transactions = const [],
|
||||||
final List<TransactionTemplate> transactionTemplates = const [],
|
final List<TransactionTemplate> transactionTemplates = const [],
|
||||||
final List<Beneficiary> beneficiaries = const [],
|
final List<Beneficiary> beneficiaries = const [],
|
||||||
final List<ExpenseCategory> expenseCategories = const [],
|
final List<ExpenseCategory> expenseCategories = const [],
|
||||||
final List<Budget> budgets = const [],
|
final List<Budget> budgets = const [],
|
||||||
this.activeBudget = null})
|
this.activeBudget = null,
|
||||||
: _accounts = accounts,
|
}) : _accounts = accounts,
|
||||||
_recurringTransactions = recurringTransactions,
|
_recurringTransactions = recurringTransactions,
|
||||||
_transactions = transactions,
|
_transactions = transactions,
|
||||||
_transactionTemplates = transactionTemplates,
|
_transactionTemplates = transactionTemplates,
|
||||||
_beneficiaries = beneficiaries,
|
_beneficiaries = beneficiaries,
|
||||||
_expenseCategories = expenseCategories,
|
_expenseCategories = expenseCategories,
|
||||||
_budgets = budgets;
|
_budgets = budgets;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@JsonKey()
|
@JsonKey()
|
||||||
@ -341,16 +373,26 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
(identical(other.activeTransaction, activeTransaction) ||
|
(identical(other.activeTransaction, activeTransaction) ||
|
||||||
other.activeTransaction == activeTransaction) &&
|
other.activeTransaction == activeTransaction) &&
|
||||||
const DeepCollectionEquality().equals(other._accounts, _accounts) &&
|
const DeepCollectionEquality().equals(other._accounts, _accounts) &&
|
||||||
const DeepCollectionEquality()
|
const DeepCollectionEquality().equals(
|
||||||
.equals(other._recurringTransactions, _recurringTransactions) &&
|
other._recurringTransactions,
|
||||||
const DeepCollectionEquality()
|
_recurringTransactions,
|
||||||
.equals(other._transactions, _transactions) &&
|
) &&
|
||||||
const DeepCollectionEquality()
|
const DeepCollectionEquality().equals(
|
||||||
.equals(other._transactionTemplates, _transactionTemplates) &&
|
other._transactions,
|
||||||
const DeepCollectionEquality()
|
_transactions,
|
||||||
.equals(other._beneficiaries, _beneficiaries) &&
|
) &&
|
||||||
const DeepCollectionEquality()
|
const DeepCollectionEquality().equals(
|
||||||
.equals(other._expenseCategories, _expenseCategories) &&
|
other._transactionTemplates,
|
||||||
|
_transactionTemplates,
|
||||||
|
) &&
|
||||||
|
const DeepCollectionEquality().equals(
|
||||||
|
other._beneficiaries,
|
||||||
|
_beneficiaries,
|
||||||
|
) &&
|
||||||
|
const DeepCollectionEquality().equals(
|
||||||
|
other._expenseCategories,
|
||||||
|
_expenseCategories,
|
||||||
|
) &&
|
||||||
const DeepCollectionEquality().equals(other._budgets, _budgets) &&
|
const DeepCollectionEquality().equals(other._budgets, _budgets) &&
|
||||||
(identical(other.activeBudget, activeBudget) ||
|
(identical(other.activeBudget, activeBudget) ||
|
||||||
other.activeBudget == activeBudget));
|
other.activeBudget == activeBudget));
|
||||||
@ -358,18 +400,19 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(
|
int get hashCode => Object.hash(
|
||||||
runtimeType,
|
runtimeType,
|
||||||
activePage,
|
activePage,
|
||||||
activeAccountIndex,
|
activeAccountIndex,
|
||||||
activeTransaction,
|
activeTransaction,
|
||||||
const DeepCollectionEquality().hash(_accounts),
|
const DeepCollectionEquality().hash(_accounts),
|
||||||
const DeepCollectionEquality().hash(_recurringTransactions),
|
const DeepCollectionEquality().hash(_recurringTransactions),
|
||||||
const DeepCollectionEquality().hash(_transactions),
|
const DeepCollectionEquality().hash(_transactions),
|
||||||
const DeepCollectionEquality().hash(_transactionTemplates),
|
const DeepCollectionEquality().hash(_transactionTemplates),
|
||||||
const DeepCollectionEquality().hash(_beneficiaries),
|
const DeepCollectionEquality().hash(_beneficiaries),
|
||||||
const DeepCollectionEquality().hash(_expenseCategories),
|
const DeepCollectionEquality().hash(_expenseCategories),
|
||||||
const DeepCollectionEquality().hash(_budgets),
|
const DeepCollectionEquality().hash(_budgets),
|
||||||
activeBudget);
|
activeBudget,
|
||||||
|
);
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
@override
|
@override
|
||||||
@ -379,18 +422,19 @@ class _$CoreStateImpl implements _CoreState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class _CoreState implements CoreState {
|
abstract class _CoreState implements CoreState {
|
||||||
const factory _CoreState(
|
const factory _CoreState({
|
||||||
{final OkanePage activePage,
|
final OkanePage activePage,
|
||||||
final int? activeAccountIndex,
|
final int? activeAccountIndex,
|
||||||
final Transaction? activeTransaction,
|
final Transaction? activeTransaction,
|
||||||
final List<Account> accounts,
|
final List<Account> accounts,
|
||||||
final List<RecurringTransaction> recurringTransactions,
|
final List<RecurringTransaction> recurringTransactions,
|
||||||
final List<Transaction> transactions,
|
final List<Transaction> transactions,
|
||||||
final List<TransactionTemplate> transactionTemplates,
|
final List<TransactionTemplate> transactionTemplates,
|
||||||
final List<Beneficiary> beneficiaries,
|
final List<Beneficiary> beneficiaries,
|
||||||
final List<ExpenseCategory> expenseCategories,
|
final List<ExpenseCategory> expenseCategories,
|
||||||
final List<Budget> budgets,
|
final List<Budget> budgets,
|
||||||
final Budget? activeBudget}) = _$CoreStateImpl;
|
final Budget? activeBudget,
|
||||||
|
}) = _$CoreStateImpl;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
OkanePage get activePage;
|
OkanePage get activePage;
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:bloc/bloc.dart';
|
|
||||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
|
||||||
|
|
||||||
part 'settings.freezed.dart';
|
|
||||||
part 'settings.g.dart';
|
|
||||||
|
|
||||||
enum ColorSchemeSettings { light, dark, system }
|
|
||||||
|
|
||||||
@freezed
|
|
||||||
abstract class Settings with _$Settings {
|
|
||||||
const factory Settings({
|
|
||||||
@Default(ColorSchemeSettings.system) ColorSchemeSettings colorScheme,
|
|
||||||
}) = _Settings;
|
|
||||||
|
|
||||||
factory Settings.fromJson(Map<String, Object?> json) =>
|
|
||||||
_$SettingsFromJson(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
@freezed
|
|
||||||
abstract class SettingsWrapper with _$SettingsWrapper {
|
|
||||||
const factory SettingsWrapper({@Default(Settings()) Settings settings}) =
|
|
||||||
_SettingsWrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
class SettingsCubit extends Cubit<SettingsWrapper> {
|
|
||||||
final SharedPreferencesAsync _prefs = SharedPreferencesAsync();
|
|
||||||
|
|
||||||
SettingsCubit() : super(SettingsWrapper());
|
|
||||||
|
|
||||||
Future<void> loadSettings() async {
|
|
||||||
final value = await _prefs.getString("settings");
|
|
||||||
if (value == null) {
|
|
||||||
await _prefs.setString("settings", jsonEncode(Settings().toJson()));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit(state.copyWith(settings: Settings.fromJson(jsonDecode(value))));
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> setSettings(Settings settings) async {
|
|
||||||
emit(state.copyWith(settings: settings));
|
|
||||||
|
|
||||||
await _prefs.setString("settings", jsonEncode(settings.toJson()));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,287 +0,0 @@
|
|||||||
// coverage:ignore-file
|
|
||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
||||||
// ignore_for_file: type=lint
|
|
||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
|
|
||||||
|
|
||||||
part of 'settings.dart';
|
|
||||||
|
|
||||||
// **************************************************************************
|
|
||||||
// FreezedGenerator
|
|
||||||
// **************************************************************************
|
|
||||||
|
|
||||||
T _$identity<T>(T value) => value;
|
|
||||||
|
|
||||||
final _privateConstructorUsedError = UnsupportedError(
|
|
||||||
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
|
|
||||||
|
|
||||||
Settings _$SettingsFromJson(Map<String, dynamic> json) {
|
|
||||||
return _Settings.fromJson(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
mixin _$Settings {
|
|
||||||
ColorSchemeSettings get colorScheme => throw _privateConstructorUsedError;
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
|
||||||
@JsonKey(ignore: true)
|
|
||||||
$SettingsCopyWith<Settings> get copyWith =>
|
|
||||||
throw _privateConstructorUsedError;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
abstract class $SettingsCopyWith<$Res> {
|
|
||||||
factory $SettingsCopyWith(Settings value, $Res Function(Settings) then) =
|
|
||||||
_$SettingsCopyWithImpl<$Res, Settings>;
|
|
||||||
@useResult
|
|
||||||
$Res call({ColorSchemeSettings colorScheme});
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
class _$SettingsCopyWithImpl<$Res, $Val extends Settings>
|
|
||||||
implements $SettingsCopyWith<$Res> {
|
|
||||||
_$SettingsCopyWithImpl(this._value, this._then);
|
|
||||||
|
|
||||||
// ignore: unused_field
|
|
||||||
final $Val _value;
|
|
||||||
// ignore: unused_field
|
|
||||||
final $Res Function($Val) _then;
|
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
|
||||||
@override
|
|
||||||
$Res call({
|
|
||||||
Object? colorScheme = null,
|
|
||||||
}) {
|
|
||||||
return _then(_value.copyWith(
|
|
||||||
colorScheme: null == colorScheme
|
|
||||||
? _value.colorScheme
|
|
||||||
: colorScheme // ignore: cast_nullable_to_non_nullable
|
|
||||||
as ColorSchemeSettings,
|
|
||||||
) as $Val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
abstract class _$$SettingsImplCopyWith<$Res>
|
|
||||||
implements $SettingsCopyWith<$Res> {
|
|
||||||
factory _$$SettingsImplCopyWith(
|
|
||||||
_$SettingsImpl value, $Res Function(_$SettingsImpl) then) =
|
|
||||||
__$$SettingsImplCopyWithImpl<$Res>;
|
|
||||||
@override
|
|
||||||
@useResult
|
|
||||||
$Res call({ColorSchemeSettings colorScheme});
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
class __$$SettingsImplCopyWithImpl<$Res>
|
|
||||||
extends _$SettingsCopyWithImpl<$Res, _$SettingsImpl>
|
|
||||||
implements _$$SettingsImplCopyWith<$Res> {
|
|
||||||
__$$SettingsImplCopyWithImpl(
|
|
||||||
_$SettingsImpl _value, $Res Function(_$SettingsImpl) _then)
|
|
||||||
: super(_value, _then);
|
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
|
||||||
@override
|
|
||||||
$Res call({
|
|
||||||
Object? colorScheme = null,
|
|
||||||
}) {
|
|
||||||
return _then(_$SettingsImpl(
|
|
||||||
colorScheme: null == colorScheme
|
|
||||||
? _value.colorScheme
|
|
||||||
: colorScheme // ignore: cast_nullable_to_non_nullable
|
|
||||||
as ColorSchemeSettings,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
@JsonSerializable()
|
|
||||||
class _$SettingsImpl implements _Settings {
|
|
||||||
const _$SettingsImpl({this.colorScheme = ColorSchemeSettings.system});
|
|
||||||
|
|
||||||
factory _$SettingsImpl.fromJson(Map<String, dynamic> json) =>
|
|
||||||
_$$SettingsImplFromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
@JsonKey()
|
|
||||||
final ColorSchemeSettings colorScheme;
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'Settings(colorScheme: $colorScheme)';
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) {
|
|
||||||
return identical(this, other) ||
|
|
||||||
(other.runtimeType == runtimeType &&
|
|
||||||
other is _$SettingsImpl &&
|
|
||||||
(identical(other.colorScheme, colorScheme) ||
|
|
||||||
other.colorScheme == colorScheme));
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
|
||||||
@override
|
|
||||||
int get hashCode => Object.hash(runtimeType, colorScheme);
|
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
|
||||||
@override
|
|
||||||
@pragma('vm:prefer-inline')
|
|
||||||
_$$SettingsImplCopyWith<_$SettingsImpl> get copyWith =>
|
|
||||||
__$$SettingsImplCopyWithImpl<_$SettingsImpl>(this, _$identity);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Map<String, dynamic> toJson() {
|
|
||||||
return _$$SettingsImplToJson(
|
|
||||||
this,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class _Settings implements Settings {
|
|
||||||
const factory _Settings({final ColorSchemeSettings colorScheme}) =
|
|
||||||
_$SettingsImpl;
|
|
||||||
|
|
||||||
factory _Settings.fromJson(Map<String, dynamic> json) =
|
|
||||||
_$SettingsImpl.fromJson;
|
|
||||||
|
|
||||||
@override
|
|
||||||
ColorSchemeSettings get colorScheme;
|
|
||||||
@override
|
|
||||||
@JsonKey(ignore: true)
|
|
||||||
_$$SettingsImplCopyWith<_$SettingsImpl> get copyWith =>
|
|
||||||
throw _privateConstructorUsedError;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
mixin _$SettingsWrapper {
|
|
||||||
Settings get settings => throw _privateConstructorUsedError;
|
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
|
||||||
$SettingsWrapperCopyWith<SettingsWrapper> get copyWith =>
|
|
||||||
throw _privateConstructorUsedError;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
abstract class $SettingsWrapperCopyWith<$Res> {
|
|
||||||
factory $SettingsWrapperCopyWith(
|
|
||||||
SettingsWrapper value, $Res Function(SettingsWrapper) then) =
|
|
||||||
_$SettingsWrapperCopyWithImpl<$Res, SettingsWrapper>;
|
|
||||||
@useResult
|
|
||||||
$Res call({Settings settings});
|
|
||||||
|
|
||||||
$SettingsCopyWith<$Res> get settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
class _$SettingsWrapperCopyWithImpl<$Res, $Val extends SettingsWrapper>
|
|
||||||
implements $SettingsWrapperCopyWith<$Res> {
|
|
||||||
_$SettingsWrapperCopyWithImpl(this._value, this._then);
|
|
||||||
|
|
||||||
// ignore: unused_field
|
|
||||||
final $Val _value;
|
|
||||||
// ignore: unused_field
|
|
||||||
final $Res Function($Val) _then;
|
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
|
||||||
@override
|
|
||||||
$Res call({
|
|
||||||
Object? settings = null,
|
|
||||||
}) {
|
|
||||||
return _then(_value.copyWith(
|
|
||||||
settings: null == settings
|
|
||||||
? _value.settings
|
|
||||||
: settings // ignore: cast_nullable_to_non_nullable
|
|
||||||
as Settings,
|
|
||||||
) as $Val);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
@pragma('vm:prefer-inline')
|
|
||||||
$SettingsCopyWith<$Res> get settings {
|
|
||||||
return $SettingsCopyWith<$Res>(_value.settings, (value) {
|
|
||||||
return _then(_value.copyWith(settings: value) as $Val);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
abstract class _$$SettingsWrapperImplCopyWith<$Res>
|
|
||||||
implements $SettingsWrapperCopyWith<$Res> {
|
|
||||||
factory _$$SettingsWrapperImplCopyWith(_$SettingsWrapperImpl value,
|
|
||||||
$Res Function(_$SettingsWrapperImpl) then) =
|
|
||||||
__$$SettingsWrapperImplCopyWithImpl<$Res>;
|
|
||||||
@override
|
|
||||||
@useResult
|
|
||||||
$Res call({Settings settings});
|
|
||||||
|
|
||||||
@override
|
|
||||||
$SettingsCopyWith<$Res> get settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
class __$$SettingsWrapperImplCopyWithImpl<$Res>
|
|
||||||
extends _$SettingsWrapperCopyWithImpl<$Res, _$SettingsWrapperImpl>
|
|
||||||
implements _$$SettingsWrapperImplCopyWith<$Res> {
|
|
||||||
__$$SettingsWrapperImplCopyWithImpl(
|
|
||||||
_$SettingsWrapperImpl _value, $Res Function(_$SettingsWrapperImpl) _then)
|
|
||||||
: super(_value, _then);
|
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
|
||||||
@override
|
|
||||||
$Res call({
|
|
||||||
Object? settings = null,
|
|
||||||
}) {
|
|
||||||
return _then(_$SettingsWrapperImpl(
|
|
||||||
settings: null == settings
|
|
||||||
? _value.settings
|
|
||||||
: settings // ignore: cast_nullable_to_non_nullable
|
|
||||||
as Settings,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @nodoc
|
|
||||||
|
|
||||||
class _$SettingsWrapperImpl implements _SettingsWrapper {
|
|
||||||
const _$SettingsWrapperImpl({this.settings = const Settings()});
|
|
||||||
|
|
||||||
@override
|
|
||||||
@JsonKey()
|
|
||||||
final Settings settings;
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'SettingsWrapper(settings: $settings)';
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) {
|
|
||||||
return identical(this, other) ||
|
|
||||||
(other.runtimeType == runtimeType &&
|
|
||||||
other is _$SettingsWrapperImpl &&
|
|
||||||
(identical(other.settings, settings) ||
|
|
||||||
other.settings == settings));
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode => Object.hash(runtimeType, settings);
|
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
|
||||||
@override
|
|
||||||
@pragma('vm:prefer-inline')
|
|
||||||
_$$SettingsWrapperImplCopyWith<_$SettingsWrapperImpl> get copyWith =>
|
|
||||||
__$$SettingsWrapperImplCopyWithImpl<_$SettingsWrapperImpl>(
|
|
||||||
this, _$identity);
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class _SettingsWrapper implements SettingsWrapper {
|
|
||||||
const factory _SettingsWrapper({final Settings settings}) =
|
|
||||||
_$SettingsWrapperImpl;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Settings get settings;
|
|
||||||
@override
|
|
||||||
@JsonKey(ignore: true)
|
|
||||||
_$$SettingsWrapperImplCopyWith<_$SettingsWrapperImpl> get copyWith =>
|
|
||||||
throw _privateConstructorUsedError;
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
||||||
|
|
||||||
part of 'settings.dart';
|
|
||||||
|
|
||||||
// **************************************************************************
|
|
||||||
// JsonSerializableGenerator
|
|
||||||
// **************************************************************************
|
|
||||||
|
|
||||||
_$SettingsImpl _$$SettingsImplFromJson(Map<String, dynamic> json) =>
|
|
||||||
_$SettingsImpl(
|
|
||||||
colorScheme: $enumDecodeNullable(
|
|
||||||
_$ColorSchemeSettingsEnumMap, json['colorScheme']) ??
|
|
||||||
ColorSchemeSettings.system,
|
|
||||||
);
|
|
||||||
|
|
||||||
Map<String, dynamic> _$$SettingsImplToJson(_$SettingsImpl instance) =>
|
|
||||||
<String, dynamic>{
|
|
||||||
'colorScheme': _$ColorSchemeSettingsEnumMap[instance.colorScheme]!,
|
|
||||||
};
|
|
||||||
|
|
||||||
const _$ColorSchemeSettingsEnumMap = {
|
|
||||||
ColorSchemeSettings.light: 'light',
|
|
||||||
ColorSchemeSettings.dark: 'dark',
|
|
||||||
ColorSchemeSettings.system: 'system',
|
|
||||||
};
|
|
@ -1,14 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
||||||
import 'package:okane/database/collections/template.dart';
|
|
||||||
import 'package:okane/screen.dart';
|
import 'package:okane/screen.dart';
|
||||||
import 'package:okane/ui/state/core.dart';
|
|
||||||
|
|
||||||
Future<T?> showDialogOrModal<T>({
|
Future<T?> showDialogOrModal<T>({
|
||||||
required BuildContext context,
|
required BuildContext context,
|
||||||
required WidgetBuilder builder,
|
required WidgetBuilder builder,
|
||||||
bool showDragHandle = true,
|
bool showDragHandle = true,
|
||||||
bool horizontalPaddingOnMobile = true,
|
|
||||||
}) {
|
}) {
|
||||||
final screenSize = getScreenSize(context);
|
final screenSize = getScreenSize(context);
|
||||||
final width = MediaQuery.sizeOf(context).shortestSide;
|
final width = MediaQuery.sizeOf(context).shortestSide;
|
||||||
@ -22,8 +18,6 @@ Future<T?> showDialogOrModal<T>({
|
|||||||
(context) => Padding(
|
(context) => Padding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
bottom: 32 + MediaQuery.of(context).viewInsets.bottom,
|
bottom: 32 + MediaQuery.of(context).viewInsets.bottom,
|
||||||
left: horizontalPaddingOnMobile ? 16 : 0,
|
|
||||||
right: horizontalPaddingOnMobile ? 16 : 0,
|
|
||||||
),
|
),
|
||||||
child: builder(context),
|
child: builder(context),
|
||||||
),
|
),
|
||||||
@ -32,14 +26,11 @@ Future<T?> showDialogOrModal<T>({
|
|||||||
context: context,
|
context: context,
|
||||||
builder:
|
builder:
|
||||||
(context) => Dialog(
|
(context) => Dialog(
|
||||||
child: Padding(
|
child: Container(
|
||||||
padding: EdgeInsets.only(top: 16),
|
constraints: BoxConstraints(maxWidth: width * 0.7),
|
||||||
child: Container(
|
child: Padding(
|
||||||
constraints: BoxConstraints(maxWidth: width * 0.7),
|
padding: EdgeInsets.only(bottom: 32),
|
||||||
child: Padding(
|
child: builder(context),
|
||||||
padding: EdgeInsets.only(bottom: 32),
|
|
||||||
child: builder(context),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -47,37 +38,6 @@ Future<T?> showDialogOrModal<T>({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<TransactionTemplate?> selectTransactionTemplate(BuildContext context) {
|
|
||||||
return showDialogOrModal<TransactionTemplate>(
|
|
||||||
context: context,
|
|
||||||
builder: (context) {
|
|
||||||
return BlocBuilder<CoreCubit, CoreState>(
|
|
||||||
builder: (context, state) {
|
|
||||||
if (state.transactionTemplates.isEmpty) {
|
|
||||||
return Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16),
|
|
||||||
child: Text("No templates defined"),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ListView.builder(
|
|
||||||
itemCount: state.transactionTemplates.length,
|
|
||||||
itemBuilder:
|
|
||||||
(context, index) => ListTile(
|
|
||||||
title: Text(state.transactionTemplates[index].name),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.of(
|
|
||||||
context,
|
|
||||||
).pop(state.transactionTemplates[index]);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
DateTime toMidnight(DateTime t) {
|
DateTime toMidnight(DateTime t) {
|
||||||
return DateTime(t.year, t.month, t.day);
|
return DateTime(t.year, t.month, t.day);
|
||||||
}
|
}
|
||||||
@ -116,29 +76,3 @@ String formatCurrency(double amount, {bool precise = true}) {
|
|||||||
DateTime monthEnding(DateTime now) {
|
DateTime monthEnding(DateTime now) {
|
||||||
return DateTime(now.year, now.month, 32, 23, 59, 59);
|
return DateTime(now.year, now.month, 32, 23, 59, 59);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> confirm(BuildContext context, String title, String body) async {
|
|
||||||
final result = await showDialog<bool>(
|
|
||||||
context: context,
|
|
||||||
builder:
|
|
||||||
(context) => AlertDialog(
|
|
||||||
title: Text(title),
|
|
||||||
content: Text(body),
|
|
||||||
actions: [
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context).pop(true);
|
|
||||||
},
|
|
||||||
child: Text("Delete", style: TextStyle(color: Colors.red)),
|
|
||||||
),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context).pop(false);
|
|
||||||
},
|
|
||||||
child: Text("Cancel"),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
return result ?? false;
|
|
||||||
}
|
|
||||||
|
@ -151,6 +151,44 @@ class _AddRecurringTransactionTemplateWidgetState
|
|||||||
decoration: InputDecoration(label: Text("Template name")),
|
decoration: InputDecoration(label: Text("Template name")),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
|
child: SearchField<Beneficiary>(
|
||||||
|
suggestions:
|
||||||
|
beneficiaries
|
||||||
|
.where((el) {
|
||||||
|
final bloc = GetIt.I.get<CoreCubit>();
|
||||||
|
if (el.type == BeneficiaryType.account) {
|
||||||
|
return el.account.value?.id != bloc.activeAccount?.id;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.map((el) {
|
||||||
|
return SearchFieldListItem(
|
||||||
|
getBeneficiaryName(el),
|
||||||
|
item: el,
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.toList(),
|
||||||
|
hint: "Beneficiary",
|
||||||
|
controller: _beneficiaryTextController,
|
||||||
|
selectedValue: _selectedBeneficiary,
|
||||||
|
onSuggestionTap: (beneficiary) {
|
||||||
|
setState(() => _selectedBeneficiary = beneficiary);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
|
child: TextField(
|
||||||
|
controller: _amountTextController,
|
||||||
|
keyboardType: TextInputType.numberWithOptions(
|
||||||
|
signed: false,
|
||||||
|
decimal: false,
|
||||||
|
),
|
||||||
|
decoration: InputDecoration(hintText: "Amount"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
@ -175,51 +213,6 @@ class _AddRecurringTransactionTemplateWidgetState
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
|
||||||
child: SearchField<Beneficiary>(
|
|
||||||
suggestions:
|
|
||||||
beneficiaries
|
|
||||||
.where((el) {
|
|
||||||
final bloc = GetIt.I.get<CoreCubit>();
|
|
||||||
if (el.type == BeneficiaryType.account) {
|
|
||||||
return el.account.value?.id != bloc.activeAccount?.id;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
})
|
|
||||||
.map((el) {
|
|
||||||
return SearchFieldListItem(
|
|
||||||
getBeneficiaryName(el),
|
|
||||||
item: el,
|
|
||||||
);
|
|
||||||
})
|
|
||||||
.toList(),
|
|
||||||
hint: switch (_selectedDirection) {
|
|
||||||
TransactionDirection.send => "Payee",
|
|
||||||
TransactionDirection.receive => "Payer",
|
|
||||||
},
|
|
||||||
controller: _beneficiaryTextController,
|
|
||||||
selectedValue: _selectedBeneficiary,
|
|
||||||
onSuggestionTap: (beneficiary) {
|
|
||||||
setState(() => _selectedBeneficiary = beneficiary);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
|
||||||
child: TextField(
|
|
||||||
controller: _amountTextController,
|
|
||||||
keyboardType: TextInputType.numberWithOptions(
|
|
||||||
signed: false,
|
|
||||||
decimal: false,
|
|
||||||
),
|
|
||||||
decoration: InputDecoration(
|
|
||||||
hintText: "Amount",
|
|
||||||
icon: Icon(Icons.euro),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.only(left: 16, right: 16, top: 16),
|
padding: EdgeInsets.only(left: 16, right: 16, top: 16),
|
||||||
child: SegmentedButton<Period>(
|
child: SegmentedButton<Period>(
|
||||||
|
@ -4,7 +4,6 @@ import 'package:get_it/get_it.dart';
|
|||||||
import 'package:okane/database/collections/account.dart';
|
import 'package:okane/database/collections/account.dart';
|
||||||
import 'package:okane/database/collections/beneficiary.dart';
|
import 'package:okane/database/collections/beneficiary.dart';
|
||||||
import 'package:okane/database/collections/expense_category.dart';
|
import 'package:okane/database/collections/expense_category.dart';
|
||||||
import 'package:okane/database/collections/recurrent.dart';
|
|
||||||
import 'package:okane/database/collections/template.dart';
|
import 'package:okane/database/collections/template.dart';
|
||||||
import 'package:okane/database/database.dart';
|
import 'package:okane/database/database.dart';
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
@ -13,8 +12,6 @@ import 'package:okane/ui/utils.dart';
|
|||||||
import 'package:okane/ui/widgets/add_expense_category.dart';
|
import 'package:okane/ui/widgets/add_expense_category.dart';
|
||||||
import 'package:searchfield/searchfield.dart';
|
import 'package:searchfield/searchfield.dart';
|
||||||
|
|
||||||
enum Period { days, weeks, months, years }
|
|
||||||
|
|
||||||
class AddTransactionTemplateWidget extends StatefulWidget {
|
class AddTransactionTemplateWidget extends StatefulWidget {
|
||||||
final VoidCallback onAdd;
|
final VoidCallback onAdd;
|
||||||
|
|
||||||
@ -42,12 +39,7 @@ class _AddTransactionTemplateWidgetState
|
|||||||
|
|
||||||
TransactionDirection _selectedDirection = TransactionDirection.send;
|
TransactionDirection _selectedDirection = TransactionDirection.send;
|
||||||
|
|
||||||
ExpenseCategory? _expenseCategory;
|
ExpenseCategory? _expenseCategory = null;
|
||||||
|
|
||||||
bool _isRecurring = false;
|
|
||||||
|
|
||||||
Period _selectedPeriod = Period.weeks;
|
|
||||||
int _periodSize = 1;
|
|
||||||
|
|
||||||
String getBeneficiaryName(Beneficiary item) {
|
String getBeneficiaryName(Beneficiary item) {
|
||||||
return switch (item.type) {
|
return switch (item.type) {
|
||||||
@ -59,7 +51,6 @@ class _AddTransactionTemplateWidgetState
|
|||||||
Future<void> _submit(BuildContext context) async {
|
Future<void> _submit(BuildContext context) async {
|
||||||
final beneficiaryName = _beneficiaryTextController.text;
|
final beneficiaryName = _beneficiaryTextController.text;
|
||||||
if (_selectedBeneficiary == null && beneficiaryName.isEmpty) {
|
if (_selectedBeneficiary == null && beneficiaryName.isEmpty) {
|
||||||
print("No beneficiary");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (_templateNameController.text.isEmpty) {
|
if (_templateNameController.text.isEmpty) {
|
||||||
@ -112,31 +103,15 @@ class _AddTransactionTemplateWidgetState
|
|||||||
TransactionDirection.receive => 1,
|
TransactionDirection.receive => 1,
|
||||||
};
|
};
|
||||||
final amount = factor * double.parse(_amountTextController.text).abs();
|
final amount = factor * double.parse(_amountTextController.text).abs();
|
||||||
final template =
|
final transaction =
|
||||||
TransactionTemplate()
|
TransactionTemplate()
|
||||||
..name = _templateNameController.text
|
..name = _templateNameController.text
|
||||||
..account.value = widget.activeAccountItem
|
..account.value = widget.activeAccountItem
|
||||||
..beneficiary.value = beneficiary
|
..beneficiary.value = beneficiary
|
||||||
..expenseCategory.value = _expenseCategory
|
..expenseCategory.value = _expenseCategory
|
||||||
..recurring = _isRecurring
|
..recurring = false
|
||||||
..amount = amount;
|
..amount = amount;
|
||||||
await upsertTransactionTemplate(template);
|
await upsertTransactionTemplate(transaction);
|
||||||
|
|
||||||
if (_isRecurring) {
|
|
||||||
final days = switch (_selectedPeriod) {
|
|
||||||
Period.days => _periodSize,
|
|
||||||
Period.weeks => _periodSize * 7,
|
|
||||||
Period.months => _periodSize * 31,
|
|
||||||
Period.years => _periodSize * 365,
|
|
||||||
};
|
|
||||||
final recurringTransaction =
|
|
||||||
RecurringTransaction()
|
|
||||||
..account.value = widget.activeAccountItem
|
|
||||||
..template.value = template
|
|
||||||
..lastExecution = null
|
|
||||||
..days = days;
|
|
||||||
await upsertRecurringTransaction(recurringTransaction);
|
|
||||||
}
|
|
||||||
widget.onAdd();
|
widget.onAdd();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,6 +129,68 @@ class _AddTransactionTemplateWidgetState
|
|||||||
decoration: InputDecoration(label: Text("Template name")),
|
decoration: InputDecoration(label: Text("Template name")),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
|
child: BlocBuilder<CoreCubit, CoreState>(
|
||||||
|
builder:
|
||||||
|
(context, state) => SearchField<Beneficiary>(
|
||||||
|
suggestions:
|
||||||
|
state.beneficiaries
|
||||||
|
.where((el) {
|
||||||
|
final bloc = GetIt.I.get<CoreCubit>();
|
||||||
|
if (el.type == BeneficiaryType.account) {
|
||||||
|
return el.account.value?.id !=
|
||||||
|
bloc.activeAccount?.id;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.map((el) {
|
||||||
|
return SearchFieldListItem(
|
||||||
|
getBeneficiaryName(el),
|
||||||
|
item: el,
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.toList(),
|
||||||
|
hint: "Beneficiary",
|
||||||
|
controller: _beneficiaryTextController,
|
||||||
|
selectedValue: _selectedBeneficiary,
|
||||||
|
onSuggestionTap: (beneficiary) {
|
||||||
|
setState(() => _selectedBeneficiary = beneficiary);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
|
child: TextField(
|
||||||
|
controller: _amountTextController,
|
||||||
|
keyboardType: TextInputType.numberWithOptions(
|
||||||
|
signed: false,
|
||||||
|
decimal: false,
|
||||||
|
),
|
||||||
|
decoration: InputDecoration(hintText: "Amount"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Text("Expense category"),
|
||||||
|
OutlinedButton(
|
||||||
|
onPressed: () async {
|
||||||
|
final category = await showDialogOrModal(
|
||||||
|
context: context,
|
||||||
|
builder: (_) => AddExpenseCategory(),
|
||||||
|
);
|
||||||
|
if (category == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(() => _expenseCategory = category);
|
||||||
|
},
|
||||||
|
child: Text(_expenseCategory?.name ?? "None"),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
@ -178,165 +215,6 @@ class _AddTransactionTemplateWidgetState
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
|
||||||
child: BlocBuilder<CoreCubit, CoreState>(
|
|
||||||
builder:
|
|
||||||
(context, state) => SearchField<Beneficiary>(
|
|
||||||
suggestions:
|
|
||||||
state.beneficiaries
|
|
||||||
.where((el) {
|
|
||||||
final bloc = GetIt.I.get<CoreCubit>();
|
|
||||||
if (el.type == BeneficiaryType.account) {
|
|
||||||
return el.account.value?.id !=
|
|
||||||
bloc.activeAccount?.id;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
})
|
|
||||||
.map((el) {
|
|
||||||
return SearchFieldListItem(
|
|
||||||
getBeneficiaryName(el),
|
|
||||||
item: el,
|
|
||||||
);
|
|
||||||
})
|
|
||||||
.toList(),
|
|
||||||
hint: switch (_selectedDirection) {
|
|
||||||
TransactionDirection.send => "Payee",
|
|
||||||
TransactionDirection.receive => "Payer",
|
|
||||||
},
|
|
||||||
controller: _beneficiaryTextController,
|
|
||||||
selectedValue: _selectedBeneficiary,
|
|
||||||
onSuggestionTap: (beneficiary) {
|
|
||||||
setState(() => _selectedBeneficiary = beneficiary);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
|
||||||
child: TextField(
|
|
||||||
controller: _amountTextController,
|
|
||||||
keyboardType: TextInputType.numberWithOptions(
|
|
||||||
signed: false,
|
|
||||||
decimal: false,
|
|
||||||
),
|
|
||||||
decoration: InputDecoration(
|
|
||||||
hintText: "Amount",
|
|
||||||
icon: Icon(Icons.euro),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Text("Expense category"),
|
|
||||||
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 16),
|
|
||||||
child: OutlinedButton(
|
|
||||||
onPressed: () async {
|
|
||||||
final category = await showDialogOrModal(
|
|
||||||
context: context,
|
|
||||||
builder: (_) => AddExpenseCategory(),
|
|
||||||
);
|
|
||||||
if (category == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setState(() => _expenseCategory = category);
|
|
||||||
},
|
|
||||||
child: Text(_expenseCategory?.name ?? "None"),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Text("Is recurring"),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 16),
|
|
||||||
child: Switch(
|
|
||||||
value: _isRecurring,
|
|
||||||
onChanged: (value) {
|
|
||||||
setState(() {
|
|
||||||
_isRecurring = value;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: EdgeInsets.only(left: 16, right: 16, top: 16),
|
|
||||||
child: SegmentedButton<Period>(
|
|
||||||
segments: [
|
|
||||||
ButtonSegment(value: Period.days, label: Text("Days")),
|
|
||||||
ButtonSegment(value: Period.weeks, label: Text("Weeks")),
|
|
||||||
ButtonSegment(value: Period.months, label: Text("Months")),
|
|
||||||
ButtonSegment(value: Period.years, label: Text("Years")),
|
|
||||||
],
|
|
||||||
selected: <Period>{_selectedPeriod},
|
|
||||||
multiSelectionEnabled: false,
|
|
||||||
onSelectionChanged:
|
|
||||||
_isRecurring
|
|
||||||
? (selection) {
|
|
||||||
setState(() => _selectedPeriod = selection.first);
|
|
||||||
}
|
|
||||||
: null,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
IconButton(
|
|
||||||
icon: Icon(Icons.remove),
|
|
||||||
onPressed:
|
|
||||||
_isRecurring
|
|
||||||
? () {
|
|
||||||
if (_periodSize <= 1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setState(() {
|
|
||||||
_periodSize--;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
: null,
|
|
||||||
),
|
|
||||||
|
|
||||||
SizedBox(
|
|
||||||
width: 100,
|
|
||||||
child: Center(
|
|
||||||
child: Text(
|
|
||||||
switch (_selectedPeriod) {
|
|
||||||
Period.days => "$_periodSize days",
|
|
||||||
Period.weeks => "$_periodSize weeks",
|
|
||||||
Period.months => "$_periodSize months",
|
|
||||||
Period.years => "$_periodSize years",
|
|
||||||
},
|
|
||||||
style: TextStyle(
|
|
||||||
color: _isRecurring ? Colors.black : Colors.grey,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
IconButton(
|
|
||||||
icon: Icon(Icons.add),
|
|
||||||
onPressed:
|
|
||||||
_isRecurring
|
|
||||||
? () {
|
|
||||||
setState(() {
|
|
||||||
_periodSize++;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
: null,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
|
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerRight,
|
alignment: Alignment.centerRight,
|
||||||
child: OutlinedButton(
|
child: OutlinedButton(
|
||||||
|
@ -4,7 +4,6 @@ import 'package:get_it/get_it.dart';
|
|||||||
import 'package:okane/database/collections/account.dart';
|
import 'package:okane/database/collections/account.dart';
|
||||||
import 'package:okane/database/collections/beneficiary.dart';
|
import 'package:okane/database/collections/beneficiary.dart';
|
||||||
import 'package:okane/database/collections/expense_category.dart';
|
import 'package:okane/database/collections/expense_category.dart';
|
||||||
import 'package:okane/database/collections/template.dart';
|
|
||||||
import 'package:okane/database/collections/transaction.dart';
|
import 'package:okane/database/collections/transaction.dart';
|
||||||
import 'package:okane/database/database.dart';
|
import 'package:okane/database/database.dart';
|
||||||
import 'package:okane/ui/state/core.dart';
|
import 'package:okane/ui/state/core.dart';
|
||||||
@ -13,18 +12,13 @@ import 'package:okane/ui/utils.dart';
|
|||||||
import 'package:okane/ui/widgets/add_expense_category.dart';
|
import 'package:okane/ui/widgets/add_expense_category.dart';
|
||||||
import 'package:searchfield/searchfield.dart';
|
import 'package:searchfield/searchfield.dart';
|
||||||
|
|
||||||
typedef AddTransactionCallback = void Function(Transaction);
|
|
||||||
|
|
||||||
class AddTransactionWidget extends StatefulWidget {
|
class AddTransactionWidget extends StatefulWidget {
|
||||||
final AddTransactionCallback onAdd;
|
final VoidCallback onAdd;
|
||||||
|
|
||||||
final Account activeAccountItem;
|
final Account activeAccountItem;
|
||||||
|
|
||||||
final TransactionTemplate? template;
|
|
||||||
|
|
||||||
const AddTransactionWidget({
|
const AddTransactionWidget({
|
||||||
super.key,
|
super.key,
|
||||||
this.template,
|
|
||||||
required this.activeAccountItem,
|
required this.activeAccountItem,
|
||||||
required this.onAdd,
|
required this.onAdd,
|
||||||
});
|
});
|
||||||
@ -44,26 +38,7 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
|
|
||||||
TransactionDirection _selectedDirection = TransactionDirection.send;
|
TransactionDirection _selectedDirection = TransactionDirection.send;
|
||||||
|
|
||||||
ExpenseCategory? _expenseCategory;
|
ExpenseCategory? _expenseCategory = null;
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
|
|
||||||
if (widget.template != null) {
|
|
||||||
_selectedDirection =
|
|
||||||
widget.template!.amount > 0
|
|
||||||
? TransactionDirection.receive
|
|
||||||
: TransactionDirection.send;
|
|
||||||
_amountTextController.text = widget.template!.amount.toString();
|
|
||||||
_beneficiaryTextController.text =
|
|
||||||
widget.template!.beneficiary.value!.name;
|
|
||||||
_selectedBeneficiary = SearchFieldListItem(
|
|
||||||
getBeneficiaryName(widget.template!.beneficiary.value!),
|
|
||||||
item: widget.template!.beneficiary.value!,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String getBeneficiaryName(Beneficiary item) {
|
String getBeneficiaryName(Beneficiary item) {
|
||||||
return switch (item.type) {
|
return switch (item.type) {
|
||||||
@ -147,7 +122,7 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
await upsertTransaction(otherTransaction);
|
await upsertTransaction(otherTransaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
widget.onAdd(transaction);
|
widget.onAdd();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -159,7 +134,33 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
children: [
|
children: [
|
||||||
OutlinedButton(
|
OutlinedButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
final template = await selectTransactionTemplate(context);
|
final template = await showDialogOrModal<Transaction>(
|
||||||
|
context: context,
|
||||||
|
builder: (context) {
|
||||||
|
return BlocBuilder<CoreCubit, CoreState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
if (state.transactionTemplates.isEmpty) {
|
||||||
|
return Text("No templates defined");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ListView.builder(
|
||||||
|
itemCount: state.transactionTemplates.length,
|
||||||
|
itemBuilder:
|
||||||
|
(context, index) => ListTile(
|
||||||
|
title: Text(
|
||||||
|
state.transactionTemplates[index].name,
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.of(
|
||||||
|
context,
|
||||||
|
).pop(state.transactionTemplates[index]);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
if (template == null) {
|
if (template == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -179,30 +180,6 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
},
|
},
|
||||||
child: Text("Use template"),
|
child: Text("Use template"),
|
||||||
),
|
),
|
||||||
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
|
||||||
child: SegmentedButton<TransactionDirection>(
|
|
||||||
segments: [
|
|
||||||
ButtonSegment(
|
|
||||||
value: TransactionDirection.send,
|
|
||||||
label: Text("Send"),
|
|
||||||
icon: Icon(Icons.remove),
|
|
||||||
),
|
|
||||||
ButtonSegment(
|
|
||||||
value: TransactionDirection.receive,
|
|
||||||
label: Text("Receive"),
|
|
||||||
icon: Icon(Icons.add),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
selected: <TransactionDirection>{_selectedDirection},
|
|
||||||
multiSelectionEnabled: false,
|
|
||||||
onSelectionChanged: (selection) {
|
|
||||||
setState(() => _selectedDirection = selection.first);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
child: BlocBuilder<CoreCubit, CoreState>(
|
child: BlocBuilder<CoreCubit, CoreState>(
|
||||||
@ -238,6 +215,29 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
|
child: SegmentedButton<TransactionDirection>(
|
||||||
|
segments: [
|
||||||
|
ButtonSegment(
|
||||||
|
value: TransactionDirection.send,
|
||||||
|
label: Text("Send"),
|
||||||
|
icon: Icon(Icons.remove),
|
||||||
|
),
|
||||||
|
ButtonSegment(
|
||||||
|
value: TransactionDirection.receive,
|
||||||
|
label: Text("Receive"),
|
||||||
|
icon: Icon(Icons.add),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
selected: <TransactionDirection>{_selectedDirection},
|
||||||
|
multiSelectionEnabled: false,
|
||||||
|
onSelectionChanged: (selection) {
|
||||||
|
setState(() => _selectedDirection = selection.first);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
child: TextField(
|
child: TextField(
|
||||||
@ -246,10 +246,7 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
signed: false,
|
signed: false,
|
||||||
decimal: false,
|
decimal: false,
|
||||||
),
|
),
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(hintText: "Amount"),
|
||||||
hintText: "Amount",
|
|
||||||
icon: Icon(Icons.euro),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
@ -259,28 +256,25 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Text("Date"),
|
Text("Date"),
|
||||||
Padding(
|
OutlinedButton(
|
||||||
padding: EdgeInsets.only(left: 16),
|
onPressed: () async {
|
||||||
child: OutlinedButton(
|
final dt = await showDatePicker(
|
||||||
onPressed: () async {
|
context: context,
|
||||||
final dt = await showDatePicker(
|
initialDate: _selectedDate,
|
||||||
context: context,
|
firstDate: DateTime(1),
|
||||||
initialDate: _selectedDate,
|
lastDate: DateTime(9999),
|
||||||
firstDate: DateTime(1),
|
);
|
||||||
lastDate: DateTime(9999),
|
if (dt == null) return;
|
||||||
);
|
|
||||||
if (dt == null) return;
|
|
||||||
|
|
||||||
setState(() => _selectedDate = dt);
|
setState(() => _selectedDate = dt);
|
||||||
},
|
},
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.date_range),
|
Icon(Icons.date_range),
|
||||||
Text(formatDateTime(_selectedDate)),
|
Text(formatDateTime(_selectedDate)),
|
||||||
],
|
],
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -290,22 +284,19 @@ class _AddTransactionWidgetState extends State<AddTransactionWidget> {
|
|||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Text("Expense category"),
|
Text("Expense category"),
|
||||||
Padding(
|
OutlinedButton(
|
||||||
padding: EdgeInsets.only(left: 16),
|
onPressed: () async {
|
||||||
child: OutlinedButton(
|
final category = await showDialogOrModal(
|
||||||
onPressed: () async {
|
context: context,
|
||||||
final category = await showDialogOrModal(
|
builder: (_) => AddExpenseCategory(),
|
||||||
context: context,
|
);
|
||||||
builder: (_) => AddExpenseCategory(),
|
if (category == null) {
|
||||||
);
|
return;
|
||||||
if (category == null) {
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setState(() => _expenseCategory = category);
|
setState(() => _expenseCategory = category);
|
||||||
},
|
},
|
||||||
child: Text(_expenseCategory?.name ?? "None"),
|
child: Text(_expenseCategory?.name ?? "None"),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -1,57 +1,40 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
const _BORDER_RADIUS = 8.0;
|
|
||||||
|
|
||||||
class ImageWrapper extends StatelessWidget {
|
class ImageWrapper extends StatelessWidget {
|
||||||
final String title;
|
final String title;
|
||||||
final String? path;
|
final String? path;
|
||||||
final VoidCallback? onTap;
|
final VoidCallback onTap;
|
||||||
final double width;
|
|
||||||
final double height;
|
|
||||||
|
|
||||||
const ImageWrapper({
|
const ImageWrapper({
|
||||||
super.key,
|
super.key,
|
||||||
required this.title,
|
required this.title,
|
||||||
this.onTap,
|
required this.onTap,
|
||||||
this.path,
|
this.path,
|
||||||
this.width = 45,
|
|
||||||
this.height = 45,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
Widget widget;
|
||||||
if (path == null) {
|
if (path == null) {
|
||||||
return InkWell(
|
widget = SizedBox(
|
||||||
onTap: onTap,
|
width: 45,
|
||||||
borderRadius: BorderRadius.circular(_BORDER_RADIUS),
|
height: 45,
|
||||||
child: SizedBox(
|
child: Container(
|
||||||
width: width,
|
decoration: BoxDecoration(
|
||||||
height: height,
|
color: Colors.grey,
|
||||||
child: Container(
|
borderRadius: BorderRadius.circular(8),
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Colors.grey,
|
|
||||||
borderRadius: BorderRadius.circular(_BORDER_RADIUS),
|
|
||||||
),
|
|
||||||
child: Center(child: Text(title[0])),
|
|
||||||
),
|
),
|
||||||
|
child: Center(child: Text(title[0])),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return ClipRRect(
|
widget = ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(_BORDER_RADIUS),
|
borderRadius: BorderRadius.circular(8),
|
||||||
child: Material(
|
child: Image.file(File(path!), width: 45, height: 45),
|
||||||
child: InkWell(
|
|
||||||
onTap: onTap,
|
|
||||||
radius: _BORDER_RADIUS,
|
|
||||||
child: Ink.image(
|
|
||||||
width: width,
|
|
||||||
height: height,
|
|
||||||
image: FileImage(File(path!)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return InkWell(onTap: onTap, child: widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:okane/database/collections/transaction.dart';
|
import 'package:okane/database/collections/transaction.dart';
|
||||||
|
import 'package:okane/database/database.dart';
|
||||||
import 'package:okane/ui/utils.dart';
|
import 'package:okane/ui/utils.dart';
|
||||||
import 'package:okane/ui/widgets/image_wrapper.dart';
|
import 'package:okane/ui/widgets/image_wrapper.dart';
|
||||||
|
|
||||||
@ -20,12 +21,12 @@ class TransactionCard extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Card(
|
return Card(
|
||||||
clipBehavior: Clip.hardEdge,
|
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
leading: ImageWrapper(
|
leading: ImageWrapper(
|
||||||
title: transaction.beneficiary.value!.name,
|
title: transaction.beneficiary.value!.name,
|
||||||
path: transaction.beneficiary.value!.imagePath,
|
path: transaction.beneficiary.value!.imagePath,
|
||||||
|
onTap: () {},
|
||||||
),
|
),
|
||||||
trailing: Text(formatDateTime(transaction.date)),
|
trailing: Text(formatDateTime(transaction.date)),
|
||||||
title: Text(transaction.beneficiary.value!.name),
|
title: Text(transaction.beneficiary.value!.name),
|
||||||
|
74
pubspec.lock
74
pubspec.lock
@ -417,21 +417,13 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.7"
|
version: "0.6.7"
|
||||||
json_annotation:
|
json_annotation:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: json_annotation
|
name: json_annotation
|
||||||
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
|
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.9.0"
|
version: "4.9.0"
|
||||||
json_serializable:
|
|
||||||
dependency: "direct dev"
|
|
||||||
description:
|
|
||||||
name: json_serializable
|
|
||||||
sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.8.0"
|
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -632,62 +624,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.7"
|
version: "1.2.7"
|
||||||
shared_preferences:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: shared_preferences
|
|
||||||
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.5.3"
|
|
||||||
shared_preferences_android:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_android
|
|
||||||
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.10"
|
|
||||||
shared_preferences_foundation:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_foundation
|
|
||||||
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.5.4"
|
|
||||||
shared_preferences_linux:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_linux
|
|
||||||
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shared_preferences_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_platform_interface
|
|
||||||
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shared_preferences_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_web
|
|
||||||
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.3"
|
|
||||||
shared_preferences_windows:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_windows
|
|
||||||
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shelf:
|
shelf:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -717,14 +653,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.0"
|
version: "1.5.0"
|
||||||
source_helper:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: source_helper
|
|
||||||
sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.5"
|
|
||||||
source_span:
|
source_span:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -23,8 +23,6 @@ dependencies:
|
|||||||
flutter_picker_plus: ^1.5.1
|
flutter_picker_plus: ^1.5.1
|
||||||
isar: ^3.1.0+1
|
isar: ^3.1.0+1
|
||||||
isar_flutter_libs: ^3.1.0+1
|
isar_flutter_libs: ^3.1.0+1
|
||||||
shared_preferences: ^2.5.3
|
|
||||||
json_annotation: ^4.9.0
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
@ -33,7 +31,6 @@ dev_dependencies:
|
|||||||
build_runner: ^2.4.13
|
build_runner: ^2.4.13
|
||||||
freezed: 2.5.0
|
freezed: 2.5.0
|
||||||
isar_generator: ^3.1.0+1
|
isar_generator: ^3.1.0+1
|
||||||
json_serializable: ^6.4.0
|
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
import 'package:okane/database/collections/recurrent.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
group("isDue", () {
|
|
||||||
test("null value", () {
|
|
||||||
final t = RecurringTransaction()..lastExecution = null;
|
|
||||||
expect(t.isDue(DateTime.now()), true);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("Date before", () {
|
|
||||||
final now = DateTime.now();
|
|
||||||
final t =
|
|
||||||
RecurringTransaction()
|
|
||||||
..lastExecution = now
|
|
||||||
..days = 30;
|
|
||||||
expect(t.isDue(now.add(Duration(days: 10))), false);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("Date before warning", () {
|
|
||||||
final now = DateTime.now();
|
|
||||||
final t =
|
|
||||||
RecurringTransaction()
|
|
||||||
..lastExecution = now
|
|
||||||
..days = 30;
|
|
||||||
expect(t.isDue(now.add(Duration(days: 20))), true);
|
|
||||||
});
|
|
||||||
|
|
||||||
test("Expired", () {
|
|
||||||
final now = DateTime.now();
|
|
||||||
final t =
|
|
||||||
RecurringTransaction()
|
|
||||||
..lastExecution = now
|
|
||||||
..days = 30;
|
|
||||||
expect(t.isDue(now.add(Duration(days: 31))), true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
30
test/widget_test.dart
Normal file
30
test/widget_test.dart
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// This is a basic Flutter widget test.
|
||||||
|
//
|
||||||
|
// To perform an interaction with a widget in your test, use the WidgetTester
|
||||||
|
// utility in the flutter_test package. For example, you can send tap and scroll
|
||||||
|
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||||
|
// tree, read text, and verify that the values of widget properties are correct.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
|
import 'package:okane/main.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
|
// Build our app and trigger a frame.
|
||||||
|
await tester.pumpWidget(const MyApp());
|
||||||
|
|
||||||
|
// Verify that our counter starts at 0.
|
||||||
|
expect(find.text('0'), findsOneWidget);
|
||||||
|
expect(find.text('1'), findsNothing);
|
||||||
|
|
||||||
|
// Tap the '+' icon and trigger a frame.
|
||||||
|
await tester.tap(find.byIcon(Icons.add));
|
||||||
|
await tester.pump();
|
||||||
|
|
||||||
|
// Verify that our counter has incremented.
|
||||||
|
expect(find.text('0'), findsNothing);
|
||||||
|
expect(find.text('1'), findsOneWidget);
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user