mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-03-12 09:27:01 +00:00
update isar spark coin schema
This commit is contained in:
parent
7f45c0c37c
commit
3cbc866fe9
4 changed files with 339 additions and 212 deletions
|
@ -21,6 +21,7 @@ import 'package:stackwallet/models/isar/stack_theme.dart';
|
|||
import 'package:stackwallet/utilities/amount/amount.dart';
|
||||
import 'package:stackwallet/utilities/enums/coin_enum.dart';
|
||||
import 'package:stackwallet/utilities/stack_file_system.dart';
|
||||
import 'package:stackwallet/wallets/isar/models/spark_coin.dart';
|
||||
import 'package:stackwallet/wallets/isar/models/wallet_info.dart';
|
||||
import 'package:tuple/tuple.dart';
|
||||
|
||||
|
@ -61,6 +62,7 @@ class MainDB {
|
|||
LelantusCoinSchema,
|
||||
WalletInfoSchema,
|
||||
TransactionV2Schema,
|
||||
SparkCoinSchema,
|
||||
],
|
||||
directory: (await StackFileSystem.applicationIsarDirectory()).path,
|
||||
// inspector: kDebugMode,
|
||||
|
|
|
@ -29,7 +29,7 @@ class SparkCoin {
|
|||
|
||||
final bool isUsed;
|
||||
|
||||
final List<int>? k; // TODO: proper name (not single char!!) is this nonce???
|
||||
final List<int>? nonce;
|
||||
|
||||
final String address;
|
||||
final String txHash;
|
||||
|
@ -47,6 +47,8 @@ class SparkCoin {
|
|||
|
||||
final String lTagHash;
|
||||
|
||||
final int? height;
|
||||
|
||||
@ignore
|
||||
BigInt get value => BigInt.parse(valueIntString);
|
||||
|
||||
|
@ -57,7 +59,7 @@ class SparkCoin {
|
|||
required this.walletId,
|
||||
required this.type,
|
||||
required this.isUsed,
|
||||
this.k,
|
||||
this.nonce,
|
||||
required this.address,
|
||||
required this.txHash,
|
||||
required this.valueIntString,
|
||||
|
@ -68,12 +70,13 @@ class SparkCoin {
|
|||
this.serial,
|
||||
this.tag,
|
||||
required this.lTagHash,
|
||||
this.height,
|
||||
});
|
||||
|
||||
SparkCoin copyWith({
|
||||
SparkCoinType? type,
|
||||
bool? isUsed,
|
||||
List<int>? k,
|
||||
List<int>? nonce,
|
||||
String? address,
|
||||
String? txHash,
|
||||
BigInt? value,
|
||||
|
@ -84,12 +87,13 @@ class SparkCoin {
|
|||
List<int>? serial,
|
||||
List<int>? tag,
|
||||
String? lTagHash,
|
||||
int? height,
|
||||
}) {
|
||||
return SparkCoin(
|
||||
walletId: walletId,
|
||||
type: type ?? this.type,
|
||||
isUsed: isUsed ?? this.isUsed,
|
||||
k: k ?? this.k,
|
||||
nonce: nonce ?? this.nonce,
|
||||
address: address ?? this.address,
|
||||
txHash: txHash ?? this.txHash,
|
||||
valueIntString: value?.toString() ?? this.value.toString(),
|
||||
|
@ -101,16 +105,17 @@ class SparkCoin {
|
|||
serial: serial ?? this.serial,
|
||||
tag: tag ?? this.tag,
|
||||
lTagHash: lTagHash ?? this.lTagHash,
|
||||
height: height ?? this.height,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'SparkCoin('
|
||||
', walletId: $walletId'
|
||||
'walletId: $walletId'
|
||||
', type: $type'
|
||||
', isUsed: $isUsed'
|
||||
', k: $k'
|
||||
', k: $nonce'
|
||||
', address: $address'
|
||||
', txHash: $txHash'
|
||||
', value: $value'
|
||||
|
@ -121,6 +126,7 @@ class SparkCoin {
|
|||
', serial: $serial'
|
||||
', tag: $tag'
|
||||
', lTagHash: $lTagHash'
|
||||
', height: $height'
|
||||
')';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,16 +32,16 @@ const SparkCoinSchema = CollectionSchema(
|
|||
name: r'encryptedDiversifier',
|
||||
type: IsarType.longList,
|
||||
),
|
||||
r'isUsed': PropertySchema(
|
||||
r'height': PropertySchema(
|
||||
id: 3,
|
||||
name: r'height',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'isUsed': PropertySchema(
|
||||
id: 4,
|
||||
name: r'isUsed',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'k': PropertySchema(
|
||||
id: 4,
|
||||
name: r'k',
|
||||
type: IsarType.longList,
|
||||
),
|
||||
r'lTagHash': PropertySchema(
|
||||
id: 5,
|
||||
name: r'lTagHash',
|
||||
|
@ -52,39 +52,44 @@ const SparkCoinSchema = CollectionSchema(
|
|||
name: r'memo',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'serial': PropertySchema(
|
||||
r'nonce': PropertySchema(
|
||||
id: 7,
|
||||
name: r'nonce',
|
||||
type: IsarType.longList,
|
||||
),
|
||||
r'serial': PropertySchema(
|
||||
id: 8,
|
||||
name: r'serial',
|
||||
type: IsarType.longList,
|
||||
),
|
||||
r'serialContext': PropertySchema(
|
||||
id: 8,
|
||||
id: 9,
|
||||
name: r'serialContext',
|
||||
type: IsarType.longList,
|
||||
),
|
||||
r'tag': PropertySchema(
|
||||
id: 9,
|
||||
id: 10,
|
||||
name: r'tag',
|
||||
type: IsarType.longList,
|
||||
),
|
||||
r'txHash': PropertySchema(
|
||||
id: 10,
|
||||
id: 11,
|
||||
name: r'txHash',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'type': PropertySchema(
|
||||
id: 11,
|
||||
id: 12,
|
||||
name: r'type',
|
||||
type: IsarType.byte,
|
||||
enumMap: _SparkCointypeEnumValueMap,
|
||||
),
|
||||
r'valueIntString': PropertySchema(
|
||||
id: 12,
|
||||
id: 13,
|
||||
name: r'valueIntString',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'walletId': PropertySchema(
|
||||
id: 13,
|
||||
id: 14,
|
||||
name: r'walletId',
|
||||
type: IsarType.string,
|
||||
)
|
||||
|
@ -136,12 +141,6 @@ int _sparkCoinEstimateSize(
|
|||
bytesCount += 3 + value.length * 8;
|
||||
}
|
||||
}
|
||||
{
|
||||
final value = object.k;
|
||||
if (value != null) {
|
||||
bytesCount += 3 + value.length * 8;
|
||||
}
|
||||
}
|
||||
bytesCount += 3 + object.lTagHash.length * 3;
|
||||
{
|
||||
final value = object.memo;
|
||||
|
@ -149,6 +148,12 @@ int _sparkCoinEstimateSize(
|
|||
bytesCount += 3 + value.length * 3;
|
||||
}
|
||||
}
|
||||
{
|
||||
final value = object.nonce;
|
||||
if (value != null) {
|
||||
bytesCount += 3 + value.length * 8;
|
||||
}
|
||||
}
|
||||
{
|
||||
final value = object.serial;
|
||||
if (value != null) {
|
||||
|
@ -182,17 +187,18 @@ void _sparkCoinSerialize(
|
|||
writer.writeString(offsets[0], object.address);
|
||||
writer.writeString(offsets[1], object.diversifierIntString);
|
||||
writer.writeLongList(offsets[2], object.encryptedDiversifier);
|
||||
writer.writeBool(offsets[3], object.isUsed);
|
||||
writer.writeLongList(offsets[4], object.k);
|
||||
writer.writeLong(offsets[3], object.height);
|
||||
writer.writeBool(offsets[4], object.isUsed);
|
||||
writer.writeString(offsets[5], object.lTagHash);
|
||||
writer.writeString(offsets[6], object.memo);
|
||||
writer.writeLongList(offsets[7], object.serial);
|
||||
writer.writeLongList(offsets[8], object.serialContext);
|
||||
writer.writeLongList(offsets[9], object.tag);
|
||||
writer.writeString(offsets[10], object.txHash);
|
||||
writer.writeByte(offsets[11], object.type.index);
|
||||
writer.writeString(offsets[12], object.valueIntString);
|
||||
writer.writeString(offsets[13], object.walletId);
|
||||
writer.writeLongList(offsets[7], object.nonce);
|
||||
writer.writeLongList(offsets[8], object.serial);
|
||||
writer.writeLongList(offsets[9], object.serialContext);
|
||||
writer.writeLongList(offsets[10], object.tag);
|
||||
writer.writeString(offsets[11], object.txHash);
|
||||
writer.writeByte(offsets[12], object.type.index);
|
||||
writer.writeString(offsets[13], object.valueIntString);
|
||||
writer.writeString(offsets[14], object.walletId);
|
||||
}
|
||||
|
||||
SparkCoin _sparkCoinDeserialize(
|
||||
|
@ -205,18 +211,19 @@ SparkCoin _sparkCoinDeserialize(
|
|||
address: reader.readString(offsets[0]),
|
||||
diversifierIntString: reader.readString(offsets[1]),
|
||||
encryptedDiversifier: reader.readLongList(offsets[2]),
|
||||
isUsed: reader.readBool(offsets[3]),
|
||||
k: reader.readLongList(offsets[4]),
|
||||
height: reader.readLongOrNull(offsets[3]),
|
||||
isUsed: reader.readBool(offsets[4]),
|
||||
lTagHash: reader.readString(offsets[5]),
|
||||
memo: reader.readStringOrNull(offsets[6]),
|
||||
serial: reader.readLongList(offsets[7]),
|
||||
serialContext: reader.readLongList(offsets[8]),
|
||||
tag: reader.readLongList(offsets[9]),
|
||||
txHash: reader.readString(offsets[10]),
|
||||
type: _SparkCointypeValueEnumMap[reader.readByteOrNull(offsets[11])] ??
|
||||
nonce: reader.readLongList(offsets[7]),
|
||||
serial: reader.readLongList(offsets[8]),
|
||||
serialContext: reader.readLongList(offsets[9]),
|
||||
tag: reader.readLongList(offsets[10]),
|
||||
txHash: reader.readString(offsets[11]),
|
||||
type: _SparkCointypeValueEnumMap[reader.readByteOrNull(offsets[12])] ??
|
||||
SparkCoinType.mint,
|
||||
valueIntString: reader.readString(offsets[12]),
|
||||
walletId: reader.readString(offsets[13]),
|
||||
valueIntString: reader.readString(offsets[13]),
|
||||
walletId: reader.readString(offsets[14]),
|
||||
);
|
||||
object.id = id;
|
||||
return object;
|
||||
|
@ -236,9 +243,9 @@ P _sparkCoinDeserializeProp<P>(
|
|||
case 2:
|
||||
return (reader.readLongList(offset)) as P;
|
||||
case 3:
|
||||
return (reader.readBool(offset)) as P;
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 4:
|
||||
return (reader.readLongList(offset)) as P;
|
||||
return (reader.readBool(offset)) as P;
|
||||
case 5:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 6:
|
||||
|
@ -250,14 +257,16 @@ P _sparkCoinDeserializeProp<P>(
|
|||
case 9:
|
||||
return (reader.readLongList(offset)) as P;
|
||||
case 10:
|
||||
return (reader.readString(offset)) as P;
|
||||
return (reader.readLongList(offset)) as P;
|
||||
case 11:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 12:
|
||||
return (_SparkCointypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
||||
SparkCoinType.mint) as P;
|
||||
case 12:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 13:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 14:
|
||||
return (reader.readString(offset)) as P;
|
||||
default:
|
||||
throw IsarError('Unknown property with id $propertyId');
|
||||
}
|
||||
|
@ -971,6 +980,75 @@ extension SparkCoinQueryFilter
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> heightIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
property: r'height',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> heightIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||
property: r'height',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> heightEqualTo(
|
||||
int? value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'height',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> heightGreaterThan(
|
||||
int? value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'height',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> heightLessThan(
|
||||
int? value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'height',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> heightBetween(
|
||||
int? lower,
|
||||
int? upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'height',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> idEqualTo(
|
||||
Id value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
@ -1034,159 +1112,6 @@ extension SparkCoinQueryFilter
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
property: r'k',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||
property: r'k',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kElementEqualTo(
|
||||
int value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'k',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kElementGreaterThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'k',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kElementLessThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'k',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kElementBetween(
|
||||
int lower,
|
||||
int upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'k',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kLengthEqualTo(
|
||||
int length) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'k',
|
||||
length,
|
||||
true,
|
||||
length,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'k',
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'k',
|
||||
0,
|
||||
false,
|
||||
999999,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kLengthLessThan(
|
||||
int length, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'k',
|
||||
0,
|
||||
true,
|
||||
length,
|
||||
include,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kLengthGreaterThan(
|
||||
int length, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'k',
|
||||
length,
|
||||
include,
|
||||
999999,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> kLengthBetween(
|
||||
int lower,
|
||||
int upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'k',
|
||||
lower,
|
||||
includeLower,
|
||||
upper,
|
||||
includeUpper,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> lTagHashEqualTo(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
|
@ -1464,6 +1389,162 @@ extension SparkCoinQueryFilter
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
property: r'nonce',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||
property: r'nonce',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceElementEqualTo(
|
||||
int value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'nonce',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition>
|
||||
nonceElementGreaterThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'nonce',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition>
|
||||
nonceElementLessThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'nonce',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceElementBetween(
|
||||
int lower,
|
||||
int upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'nonce',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceLengthEqualTo(
|
||||
int length) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'nonce',
|
||||
length,
|
||||
true,
|
||||
length,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'nonce',
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'nonce',
|
||||
0,
|
||||
false,
|
||||
999999,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceLengthLessThan(
|
||||
int length, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'nonce',
|
||||
0,
|
||||
true,
|
||||
length,
|
||||
include,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition>
|
||||
nonceLengthGreaterThan(
|
||||
int length, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'nonce',
|
||||
length,
|
||||
include,
|
||||
999999,
|
||||
true,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> nonceLengthBetween(
|
||||
int lower,
|
||||
int upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.listLength(
|
||||
r'nonce',
|
||||
lower,
|
||||
includeLower,
|
||||
upper,
|
||||
includeUpper,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterFilterCondition> serialIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
|
@ -2424,6 +2505,18 @@ extension SparkCoinQuerySortBy on QueryBuilder<SparkCoin, SparkCoin, QSortBy> {
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterSortBy> sortByHeight() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'height', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterSortBy> sortByHeightDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'height', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterSortBy> sortByIsUsed() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'isUsed', Sort.asc);
|
||||
|
@ -2537,6 +2630,18 @@ extension SparkCoinQuerySortThenBy
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterSortBy> thenByHeight() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'height', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterSortBy> thenByHeightDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'height', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QAfterSortBy> thenById() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'id', Sort.asc);
|
||||
|
@ -2658,15 +2763,15 @@ extension SparkCoinQueryWhereDistinct
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QDistinct> distinctByIsUsed() {
|
||||
QueryBuilder<SparkCoin, SparkCoin, QDistinct> distinctByHeight() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'isUsed');
|
||||
return query.addDistinctBy(r'height');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QDistinct> distinctByK() {
|
||||
QueryBuilder<SparkCoin, SparkCoin, QDistinct> distinctByIsUsed() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'k');
|
||||
return query.addDistinctBy(r'isUsed');
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -2684,6 +2789,12 @@ extension SparkCoinQueryWhereDistinct
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QDistinct> distinctByNonce() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'nonce');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, SparkCoin, QDistinct> distinctBySerial() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'serial');
|
||||
|
@ -2759,15 +2870,15 @@ extension SparkCoinQueryProperty
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, bool, QQueryOperations> isUsedProperty() {
|
||||
QueryBuilder<SparkCoin, int?, QQueryOperations> heightProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'isUsed');
|
||||
return query.addPropertyName(r'height');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, List<int>?, QQueryOperations> kProperty() {
|
||||
QueryBuilder<SparkCoin, bool, QQueryOperations> isUsedProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'k');
|
||||
return query.addPropertyName(r'isUsed');
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -2783,6 +2894,12 @@ extension SparkCoinQueryProperty
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, List<int>?, QQueryOperations> nonceProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'nonce');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<SparkCoin, List<int>?, QQueryOperations> serialProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'serial');
|
||||
|
|
|
@ -478,16 +478,18 @@ mixin SparkInterface on Bip39HDWallet, ElectrumXInterface {
|
|||
walletId: walletId,
|
||||
type: coinType,
|
||||
isUsed: spentCoinTags.contains(coin.lTagHash!),
|
||||
nonce: coin.nonceHex?.toUint8ListFromHex,
|
||||
address: coin.address!,
|
||||
txHash: txHash,
|
||||
valueIntString: coin.value!.toString(),
|
||||
lTagHash: coin.lTagHash!,
|
||||
tag: coin.tag,
|
||||
memo: coin.memo,
|
||||
serial: coin.serial,
|
||||
serialContext: coin.serialContext,
|
||||
diversifierIntString: coin.diversifier!.toString(),
|
||||
encryptedDiversifier: coin.encryptedDiversifier,
|
||||
serial: coin.serial,
|
||||
tag: coin.tag,
|
||||
lTagHash: coin.lTagHash!,
|
||||
height: coin.height,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue