mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-17 01:37:54 +00:00
89 lines
2.2 KiB
Dart
89 lines
2.2 KiB
Dart
import 'package:isar/isar.dart';
|
|
import '../../db/isar/main_db.dart';
|
|
import '../../dto/ordinals/inscription_data.dart';
|
|
import 'models/isar_models.dart';
|
|
|
|
part 'ordinal.g.dart';
|
|
|
|
@collection
|
|
class Ordinal {
|
|
Id id = Isar.autoIncrement;
|
|
|
|
final String walletId;
|
|
|
|
@Index(unique: true, replace: true, composite: [
|
|
CompositeIndex("utxoTXID"),
|
|
CompositeIndex("utxoVOUT"),
|
|
])
|
|
final String inscriptionId;
|
|
|
|
final int inscriptionNumber;
|
|
|
|
final String content;
|
|
|
|
// following two are used to look up the UTXO object in isar combined w/ walletId
|
|
final String utxoTXID;
|
|
final int utxoVOUT;
|
|
|
|
Ordinal({
|
|
required this.walletId,
|
|
required this.inscriptionId,
|
|
required this.inscriptionNumber,
|
|
required this.content,
|
|
required this.utxoTXID,
|
|
required this.utxoVOUT,
|
|
});
|
|
|
|
factory Ordinal.fromInscriptionData(InscriptionData data, String walletId) {
|
|
return Ordinal(
|
|
walletId: walletId,
|
|
inscriptionId: data.inscriptionId,
|
|
inscriptionNumber: data.inscriptionNumber,
|
|
content: data.content,
|
|
utxoTXID: data.output.split(':')[
|
|
0], // "output": "062f32e21aa04246b8873b5d9a929576addd0339881e1ea478b406795d6b6c47:0"
|
|
utxoVOUT: int.parse(data.output.split(':')[1]),
|
|
);
|
|
}
|
|
|
|
Ordinal copyWith({
|
|
String? walletId,
|
|
String? inscriptionId,
|
|
int? inscriptionNumber,
|
|
String? content,
|
|
String? utxoTXID,
|
|
int? utxoVOUT,
|
|
}) {
|
|
return Ordinal(
|
|
walletId: walletId ?? this.walletId,
|
|
inscriptionId: inscriptionId ?? this.inscriptionId,
|
|
inscriptionNumber: inscriptionNumber ?? this.inscriptionNumber,
|
|
content: content ?? this.content,
|
|
utxoTXID: utxoTXID ?? this.utxoTXID,
|
|
utxoVOUT: utxoVOUT ?? this.utxoVOUT,
|
|
);
|
|
}
|
|
|
|
UTXO? getUTXO(MainDB db) {
|
|
return db.isar.utxos
|
|
.where()
|
|
.walletIdEqualTo(walletId)
|
|
.filter()
|
|
.txidEqualTo(utxoTXID)
|
|
.and()
|
|
.voutEqualTo(utxoVOUT)
|
|
.findFirstSync();
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return 'Ordinal {'
|
|
' walletId: $walletId,'
|
|
' inscriptionId: $inscriptionId,'
|
|
' inscriptionNumber: $inscriptionNumber,'
|
|
' content: $content,'
|
|
' utxoTXID: $utxoTXID,'
|
|
' utxoVOUT: $utxoVOUT'
|
|
' }';
|
|
}
|
|
}
|