diff --git a/packages/cli/bin/deals_recent.dart b/packages/cli/bin/deals_recent.dart index c2a071bf..eac94f1e 100644 --- a/packages/cli/bin/deals_recent.dart +++ b/packages/cli/bin/deals_recent.dart @@ -1,7 +1,6 @@ import 'package:cli/cli.dart'; import 'package:cli/printing.dart'; import 'package:collection/collection.dart'; -import 'package:db/transaction.dart'; void main(List args) async { await runOffline(args, command); @@ -105,7 +104,7 @@ Future command(FileSystem fs, ArgResults argResults) async { final openDeals = >{}; final ignoredTransactions = []; final supportedTypes = {AccountingType.fuel, AccountingType.goods}; - final transactions = await allTransactions(db); + final transactions = await db.allTransactions(); void recordDeal(List openDeal) { final deal = SyntheticDeal(openDeal); diff --git a/packages/cli/bin/earning_per_ship.dart b/packages/cli/bin/earning_per_ship.dart index ed10196c..19c8d80b 100644 --- a/packages/cli/bin/earning_per_ship.dart +++ b/packages/cli/bin/earning_per_ship.dart @@ -4,7 +4,6 @@ import 'package:cli/cache/ship_cache.dart'; import 'package:cli/cli.dart'; import 'package:cli/printing.dart'; import 'package:cli_table/cli_table.dart'; -import 'package:db/transaction.dart'; import 'package:intl/intl.dart'; class TransactionSummary { @@ -53,7 +52,7 @@ Future command(FileSystem fs, ArgResults argResults) async { final db = await defaultDatabase(); - final shipSymbols = (await uniqueShipSymbolsInTransactions(db)).toList() + final shipSymbols = (await db.uniqueShipSymbolsInTransactions()).toList() ..sort(); final behaviorCache = BehaviorCache.load(fs); @@ -77,7 +76,7 @@ Future command(FileSystem fs, ArgResults argResults) async { final frameCreditPerSecondTotals = {}; final startTime = DateTime.timestamp().subtract(lookback); - final transactions = (await transactionsAfter(db, startTime)).where( + final transactions = (await db.transactionsAfter(startTime)).where( (t) => [AccountingType.goods, AccountingType.fuel].contains(t.accounting), ); diff --git a/packages/cli/bin/earning_rate.dart b/packages/cli/bin/earning_rate.dart index d474235f..40369416 100644 --- a/packages/cli/bin/earning_rate.dart +++ b/packages/cli/bin/earning_rate.dart @@ -1,6 +1,5 @@ import 'package:cli/cli.dart'; import 'package:cli/printing.dart'; -import 'package:db/transaction.dart'; DateTime snapToHour(DateTime time) { return DateTime.utc(time.year, time.month, time.day, time.hour); @@ -15,7 +14,7 @@ Future command(FileSystem fs, ArgResults argResults) async { // Credits per hour. final oneDayAgoAsHour = snapToHour(DateTime.timestamp().subtract(const Duration(hours: 24))); - final transactions = await transactionsAfter(db, oneDayAgoAsHour); + final transactions = await db.transactionsAfter(oneDayAgoAsHour); final firstTransactionHour = snapToHour(transactions.first.timestamp); const timeWidth = 5; diff --git a/packages/cli/bin/ramp_delay.dart b/packages/cli/bin/ramp_delay.dart index 8cbb393a..9e2a9727 100644 --- a/packages/cli/bin/ramp_delay.dart +++ b/packages/cli/bin/ramp_delay.dart @@ -1,5 +1,4 @@ import 'package:cli/cli.dart'; -import 'package:db/transaction.dart'; void printRampDelay(Iterable transactions) { // Walk through all transactions until we find a ship purchase. When we do @@ -31,7 +30,7 @@ void printRampDelay(Iterable transactions) { Future command(FileSystem fs, ArgResults argResults) async { final db = await defaultDatabase(); - final transactions = await allTransactions(db); + final transactions = await db.allTransactions(); printRampDelay(transactions); await db.close(); } diff --git a/packages/cli/bin/transactions_capital_totals.dart b/packages/cli/bin/transactions_capital_totals.dart index f9aae799..4c1a6af7 100644 --- a/packages/cli/bin/transactions_capital_totals.dart +++ b/packages/cli/bin/transactions_capital_totals.dart @@ -1,7 +1,6 @@ import 'package:cli/cli.dart'; import 'package:cli/printing.dart'; import 'package:collection/collection.dart'; -import 'package:db/transaction.dart'; String describeTransaction(Transaction t) { return '${t.timestamp} ${t.tradeSymbol} ${t.quantity} ${t.tradeType} ' @@ -11,7 +10,7 @@ String describeTransaction(Transaction t) { Future command(FileSystem fs, ArgResults argResults) async { final db = await defaultDatabase(); final transactions = - await transactionsWithAccountingType(db, AccountingType.capital); + await db.transactionsWithAccountingType(AccountingType.capital); final grouped = >{}; for (final transaction in transactions) { diff --git a/packages/cli/bin/transactions_recent.dart b/packages/cli/bin/transactions_recent.dart index 1a52e537..79847523 100644 --- a/packages/cli/bin/transactions_recent.dart +++ b/packages/cli/bin/transactions_recent.dart @@ -1,5 +1,4 @@ import 'package:cli/cli.dart'; -import 'package:db/transaction.dart'; String describeTransaction(Transaction t) { return '${t.timestamp} ${t.tradeSymbol} ${t.quantity} ${t.tradeType} ' @@ -16,7 +15,7 @@ Future command(FileSystem fs, ArgResults argResults) async { final db = await defaultDatabase(); final startTime = DateTime.timestamp().subtract(lookback); - final transactions = (await transactionsAfter(db, startTime)) + final transactions = (await db.transactionsAfter(startTime)) .where((t) => t.shipSymbol == shipSymbol); for (final transaction in transactions) { logger.info(describeTransaction(transaction)); diff --git a/packages/cli/bin/transactions_reconcile.dart b/packages/cli/bin/transactions_reconcile.dart index 185b760f..f147a534 100644 --- a/packages/cli/bin/transactions_reconcile.dart +++ b/packages/cli/bin/transactions_reconcile.dart @@ -1,6 +1,5 @@ import 'package:cli/cli.dart'; import 'package:cli/printing.dart'; -import 'package:db/transaction.dart'; String describeTransaction(Transaction t) { return '${t.timestamp} ${t.tradeSymbol} ${t.quantity} ${t.tradeType} ' @@ -36,7 +35,7 @@ Future command(FileSystem fs, ArgResults argResults) async { final db = await defaultDatabase(); final startTime = DateTime.timestamp().subtract(lookback); - final transactions = (await transactionsAfter(db, startTime)).toList(); + final transactions = (await db.transactionsAfter(startTime)).toList(); final lastCredits = transactions.last.agentCredits; final firstCredits = transactions.first.agentCredits; diff --git a/packages/cli/bin/transactions_repeats.dart b/packages/cli/bin/transactions_repeats.dart index 1bb39f0e..26f33fe0 100644 --- a/packages/cli/bin/transactions_repeats.dart +++ b/packages/cli/bin/transactions_repeats.dart @@ -1,5 +1,4 @@ import 'package:cli/cli.dart'; -import 'package:db/transaction.dart'; void printDiffs(List data) { final diffs = []; @@ -11,7 +10,7 @@ void printDiffs(List data) { Future command(FileSystem fs, ArgResults argResults) async { final db = await defaultDatabase(); - final transactions = await allTransactions(db); + final transactions = await db.allTransactions(); // final marketPrices = MarketPrices.load(fs); // Walk through all transactions, finding repeats. final transactionSets = >[]; diff --git a/packages/cli/lib/cache/caches.dart b/packages/cli/lib/cache/caches.dart index 26107193..4980a4b2 100644 --- a/packages/cli/lib/cache/caches.dart +++ b/packages/cli/lib/cache/caches.dart @@ -41,7 +41,6 @@ export 'package:cli/cache/waypoint_cache.dart'; export 'package:cli/nav/jump_cache.dart'; export 'package:cli/nav/route.dart'; export 'package:cli/nav/system_connectivity.dart'; -export 'package:db/construction.dart'; export 'package:file/file.dart'; /// Container for all the caches. diff --git a/packages/cli/lib/cache/charting_cache.dart b/packages/cli/lib/cache/charting_cache.dart index 5f2c5223..a84eae6f 100644 --- a/packages/cli/lib/cache/charting_cache.dart +++ b/packages/cli/lib/cache/charting_cache.dart @@ -1,6 +1,6 @@ import 'package:cli/cli.dart'; import 'package:cli/config.dart'; -import 'package:db/chart.dart'; +import 'package:db/src/chart.dart'; /// A snapshot of the charting records. class ChartingSnapshot { diff --git a/packages/cli/lib/net/queue.dart b/packages/cli/lib/net/queue.dart index d656d1dc..041999aa 100644 --- a/packages/cli/lib/net/queue.dart +++ b/packages/cli/lib/net/queue.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:cli/logger.dart'; import 'package:db/db.dart'; -import 'package:db/queue.dart'; +import 'package:db/src/queue.dart'; import 'package:http/http.dart'; import 'package:types/queue.dart'; diff --git a/packages/cli/test/cache/charting_cache_test.dart b/packages/cli/test/cache/charting_cache_test.dart index f7a07f0b..2433f410 100644 --- a/packages/cli/test/cache/charting_cache_test.dart +++ b/packages/cli/test/cache/charting_cache_test.dart @@ -1,5 +1,5 @@ import 'package:cli/cache/charting_cache.dart'; -import 'package:db/chart.dart'; +import 'package:db/src/chart.dart'; import 'package:test/test.dart'; import 'package:types/types.dart'; diff --git a/packages/cli/test/extraction_score_test.dart b/packages/cli/test/extraction_score_test.dart index 0319748f..4ce1b99e 100644 --- a/packages/cli/test/extraction_score_test.dart +++ b/packages/cli/test/extraction_score_test.dart @@ -2,7 +2,7 @@ import 'package:cli/cache/charting_cache.dart'; import 'package:cli/cache/market_cache.dart'; import 'package:cli/cache/systems_cache.dart'; import 'package:cli/extraction_score.dart'; -import 'package:db/chart.dart'; +import 'package:db/src/chart.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; import 'package:types/types.dart'; diff --git a/packages/db/lib/db.dart b/packages/db/lib/db.dart index 3558ad2b..a73d7909 100644 --- a/packages/db/lib/db.dart +++ b/packages/db/lib/db.dart @@ -1,15 +1,15 @@ -import 'package:db/agent.dart'; -import 'package:db/chart.dart'; import 'package:db/config.dart'; -import 'package:db/construction.dart'; -import 'package:db/extraction.dart'; -import 'package:db/faction.dart'; -import 'package:db/market_listing.dart'; -import 'package:db/query.dart'; -import 'package:db/queue.dart'; -import 'package:db/shipyard_listing.dart'; -import 'package:db/survey.dart'; -import 'package:db/transaction.dart'; +import 'package:db/src/agent.dart'; +import 'package:db/src/chart.dart'; +import 'package:db/src/construction.dart'; +import 'package:db/src/extraction.dart'; +import 'package:db/src/faction.dart'; +import 'package:db/src/market_listing.dart'; +import 'package:db/src/query.dart'; +import 'package:db/src/queue.dart'; +import 'package:db/src/shipyard_listing.dart'; +import 'package:db/src/survey.dart'; +import 'package:db/src/transaction.dart'; import 'package:meta/meta.dart'; import 'package:postgres/postgres.dart' as pg; import 'package:types/types.dart'; @@ -306,4 +306,41 @@ class Database { final query = upsertShipyardListingQuery(listing); await insertOne(query); } + + /// Get unique ship symbols from the transaction table. + Future> uniqueShipSymbolsInTransactions() async { + final result = await connection + .execute('SELECT DISTINCT ship_symbol FROM transaction_'); + return result.map((r) => ShipSymbol.fromString(r.first! as String)).toSet(); + } + + /// Get all transactions from the database. + Future> allTransactions() async { + final result = await connection.execute('SELECT * FROM transaction_'); + return result.map((r) => r.toColumnMap()).map(transactionFromColumnMap); + } + + /// Get all transactions matching accountingType from the database. + Future> transactionsWithAccountingType( + AccountingType accountingType, + ) async { + final result = await connection.execute( + 'SELECT * FROM transaction_ WHERE ' + 'accounting = @accounting', + parameters: {'accounting': accountingType.name}, + ); + return result.map((r) => r.toColumnMap()).map(transactionFromColumnMap); + } + + /// Get transactions after a given timestamp. + Future> transactionsAfter( + DateTime timestamp, + ) async { + final result = await connection.execute( + 'SELECT * FROM transaction_ WHERE timestamp > @timestamp ' + 'ORDER BY timestamp', + parameters: {'timestamp': timestamp}, + ); + return result.map((r) => r.toColumnMap()).map(transactionFromColumnMap); + } } diff --git a/packages/db/lib/agent.dart b/packages/db/lib/src/agent.dart similarity index 97% rename from packages/db/lib/agent.dart rename to packages/db/lib/src/agent.dart index 7c2e3098..0665d957 100644 --- a/packages/db/lib/agent.dart +++ b/packages/db/lib/src/agent.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Query to get an agent by symbol. diff --git a/packages/db/lib/behavior.dart b/packages/db/lib/src/behavior.dart similarity index 94% rename from packages/db/lib/behavior.dart rename to packages/db/lib/src/behavior.dart index ffe6b518..37cdcc10 100644 --- a/packages/db/lib/behavior.dart +++ b/packages/db/lib/src/behavior.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Query a ship behavior state by symbol. diff --git a/packages/db/lib/chart.dart b/packages/db/lib/src/chart.dart similarity index 99% rename from packages/db/lib/chart.dart rename to packages/db/lib/src/chart.dart index 6ada7a44..209e5b2a 100644 --- a/packages/db/lib/chart.dart +++ b/packages/db/lib/src/chart.dart @@ -1,5 +1,5 @@ import 'package:collection/collection.dart'; -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:meta/meta.dart'; import 'package:types/types.dart'; diff --git a/packages/db/lib/construction.dart b/packages/db/lib/src/construction.dart similarity index 98% rename from packages/db/lib/construction.dart rename to packages/db/lib/src/construction.dart index 30ecaaf3..8142472e 100644 --- a/packages/db/lib/construction.dart +++ b/packages/db/lib/src/construction.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Convert a row result into a ConstructionRecord. diff --git a/packages/db/lib/extraction.dart b/packages/db/lib/src/extraction.dart similarity index 97% rename from packages/db/lib/extraction.dart rename to packages/db/lib/src/extraction.dart index 012c233d..85492138 100644 --- a/packages/db/lib/extraction.dart +++ b/packages/db/lib/src/extraction.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Query to get all extractions. diff --git a/packages/db/lib/faction.dart b/packages/db/lib/src/faction.dart similarity index 96% rename from packages/db/lib/faction.dart rename to packages/db/lib/src/faction.dart index 4b6023b7..40791a4c 100644 --- a/packages/db/lib/faction.dart +++ b/packages/db/lib/src/faction.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Query all factions. diff --git a/packages/db/lib/market_listing.dart b/packages/db/lib/src/market_listing.dart similarity index 98% rename from packages/db/lib/market_listing.dart rename to packages/db/lib/src/market_listing.dart index ca230779..081f91bc 100644 --- a/packages/db/lib/market_listing.dart +++ b/packages/db/lib/src/market_listing.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Lookup a market listing by WaypointSymbol. diff --git a/packages/db/lib/query.dart b/packages/db/lib/src/query.dart similarity index 100% rename from packages/db/lib/query.dart rename to packages/db/lib/src/query.dart diff --git a/packages/db/lib/queue.dart b/packages/db/lib/src/queue.dart similarity index 98% rename from packages/db/lib/queue.dart rename to packages/db/lib/src/queue.dart index bea88da8..a814c9ff 100644 --- a/packages/db/lib/queue.dart +++ b/packages/db/lib/src/queue.dart @@ -1,6 +1,6 @@ import 'dart:convert'; -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/queue.dart'; /// Request queued for later execution. diff --git a/packages/db/lib/shipyard_listing.dart b/packages/db/lib/src/shipyard_listing.dart similarity index 97% rename from packages/db/lib/shipyard_listing.dart rename to packages/db/lib/src/shipyard_listing.dart index 785ee895..469fc760 100644 --- a/packages/db/lib/shipyard_listing.dart +++ b/packages/db/lib/src/shipyard_listing.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Lookup a shipyard listing by WaypointSymbol. diff --git a/packages/db/lib/survey.dart b/packages/db/lib/src/survey.dart similarity index 98% rename from packages/db/lib/survey.dart rename to packages/db/lib/src/survey.dart index c01283f1..e7b94bf0 100644 --- a/packages/db/lib/survey.dart +++ b/packages/db/lib/src/survey.dart @@ -1,4 +1,4 @@ -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Convert a row result into a survey. diff --git a/packages/db/lib/transaction.dart b/packages/db/lib/src/transaction.dart similarity index 62% rename from packages/db/lib/transaction.dart rename to packages/db/lib/src/transaction.dart index db635868..df59b642 100644 --- a/packages/db/lib/transaction.dart +++ b/packages/db/lib/src/transaction.dart @@ -1,5 +1,4 @@ -import 'package:db/db.dart'; -import 'package:db/query.dart'; +import 'package:db/src/query.dart'; import 'package:types/types.dart'; /// Create the insertion query for a transaction. @@ -55,42 +54,3 @@ Transaction transactionFromColumnMap(Map values) { contractId: values['contract_id'] as String?, ); } - -/// Get unique ship symbols from the transaction table. -Future> uniqueShipSymbolsInTransactions(Database db) async { - final result = await db.connection - .execute('SELECT DISTINCT ship_symbol FROM transaction_'); - return result.map((r) => ShipSymbol.fromString(r.first! as String)).toSet(); -} - -/// Get all transactions from the database. -Future> allTransactions(Database db) async { - final result = await db.connection.execute('SELECT * FROM transaction_'); - return result.map((r) => r.toColumnMap()).map(transactionFromColumnMap); -} - -/// Get all transactions matching accountingType from the database. -Future> transactionsWithAccountingType( - Database db, - AccountingType accountingType, -) async { - final result = await db.connection.execute( - 'SELECT * FROM transaction_ WHERE ' - 'accounting = @accounting', - parameters: {'accounting': accountingType.name}, - ); - return result.map((r) => r.toColumnMap()).map(transactionFromColumnMap); -} - -/// Get transactions after a given timestamp. -Future> transactionsAfter( - Database db, - DateTime timestamp, -) async { - final result = await db.connection.execute( - 'SELECT * FROM transaction_ WHERE timestamp > @timestamp ' - 'ORDER BY timestamp', - parameters: {'timestamp': timestamp}, - ); - return result.map((r) => r.toColumnMap()).map(transactionFromColumnMap); -} diff --git a/packages/db/test/behavior_test.dart b/packages/db/test/behavior_test.dart index 0545f0b8..8d3efb90 100644 --- a/packages/db/test/behavior_test.dart +++ b/packages/db/test/behavior_test.dart @@ -1,4 +1,4 @@ -import 'package:db/behavior.dart'; +import 'package:db/src/behavior.dart'; import 'package:test/test.dart'; import 'package:types/types.dart'; diff --git a/packages/db/test/construction_test.dart b/packages/db/test/construction_test.dart index e4f3ff87..3c409fce 100644 --- a/packages/db/test/construction_test.dart +++ b/packages/db/test/construction_test.dart @@ -1,4 +1,4 @@ -import 'package:db/construction.dart'; +import 'package:db/src/construction.dart'; import 'package:test/test.dart'; import 'package:types/types.dart'; diff --git a/packages/db/test/db_test.dart b/packages/db/test/db_test.dart index 15659cf6..83b24981 100644 --- a/packages/db/test/db_test.dart +++ b/packages/db/test/db_test.dart @@ -1,5 +1,5 @@ import 'package:db/db.dart'; -import 'package:db/transaction.dart'; +import 'package:db/src/transaction.dart'; import 'package:mocktail/mocktail.dart'; import 'package:postgres/postgres.dart' as pg; import 'package:test/test.dart'; diff --git a/packages/db/test/extraction_test.dart b/packages/db/test/extraction_test.dart index 5599c8ce..b517d20e 100644 --- a/packages/db/test/extraction_test.dart +++ b/packages/db/test/extraction_test.dart @@ -1,4 +1,4 @@ -import 'package:db/extraction.dart'; +import 'package:db/src/extraction.dart'; import 'package:test/test.dart'; import 'package:types/types.dart'; diff --git a/packages/db/test/faction_test.dart b/packages/db/test/faction_test.dart index 5ca1cb9d..801055ae 100644 --- a/packages/db/test/faction_test.dart +++ b/packages/db/test/faction_test.dart @@ -1,4 +1,4 @@ -import 'package:db/faction.dart'; +import 'package:db/src/faction.dart'; import 'package:test/test.dart'; import 'package:types/types.dart'; diff --git a/packages/db/test/survey_test.dart b/packages/db/test/survey_test.dart index c74350e4..0f22b436 100644 --- a/packages/db/test/survey_test.dart +++ b/packages/db/test/survey_test.dart @@ -1,4 +1,4 @@ -import 'package:db/survey.dart'; +import 'package:db/src/survey.dart'; import 'package:test/test.dart'; import 'package:types/types.dart'; diff --git a/packages/db/test/transaction_test.dart b/packages/db/test/transaction_test.dart index 753f31c6..70362284 100644 --- a/packages/db/test/transaction_test.dart +++ b/packages/db/test/transaction_test.dart @@ -1,4 +1,4 @@ -import 'package:db/transaction.dart'; +import 'package:db/src/transaction.dart'; import 'package:test/test.dart'; import 'package:types/transaction.dart';