custom block explorer isar model/schema

This commit is contained in:
julian 2023-05-04 14:33:19 -06:00
parent e75c74b3c4
commit e3c0f58abc
2 changed files with 56 additions and 0 deletions

View file

@ -2,6 +2,7 @@ import 'package:decimal/decimal.dart';
import 'package:flutter_native_splash/cli_commands.dart';
import 'package:isar/isar.dart';
import 'package:stackwallet/exceptions/main_db/main_db_exception.dart';
import 'package:stackwallet/models/isar/models/block_explorer.dart';
import 'package:stackwallet/models/isar/models/isar_models.dart';
import 'package:stackwallet/utilities/amount/amount.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
@ -33,6 +34,7 @@ class MainDB {
AddressSchema,
AddressLabelSchema,
EthContractSchema,
TransactionBlockExplorerSchema,
],
directory: (await StackFileSystem.applicationIsarDirectory()).path,
// inspector: kDebugMode,
@ -43,6 +45,25 @@ class MainDB {
return true;
}
// tx block explorers
TransactionBlockExplorer? getTransactionBlockExplorer({required Coin coin}) {
return isar.transactionBlockExplorers
.where()
.tickerEqualTo(coin.ticker)
.findFirstSync();
}
Future<int> putTransactionBlockExplorer(
TransactionBlockExplorer explorer) async {
try {
return await isar.writeTxn(() async {
return await isar.transactionBlockExplorers.put(explorer);
});
} catch (e) {
throw MainDBException("failed putTransactionBlockExplorer: $explorer", e);
}
}
// addresses
QueryBuilder<Address, Address, QAfterWhereClause> getAddresses(
String walletId) =>

View file

@ -0,0 +1,35 @@
import 'package:isar/isar.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
part 'block_explorer.g.dart';
@collection
class TransactionBlockExplorer {
TransactionBlockExplorer({
required this.ticker,
required this.url,
});
Id id = Isar.autoIncrement;
@Index(unique: true, replace: true)
late final String ticker;
late final String url;
@ignore
Coin? get coin {
try {
return coinFromTickerCaseInsensitive(ticker);
} catch (_) {
return null;
}
}
Uri? getUrlFor({required String txid}) => Uri.tryParse(
url.replaceFirst(
"%5BTXID%5D",
txid,
),
);
}