@@ -49,6 +49,36 @@ abstract class _Reader {
4949 return db.select ("$query ;" );
5050 }
5151
52+ static Future <ResultSet > _getSetCoinsAndLatestSetInfoForGroupId (
53+ int groupId, {
54+ required Database db,
55+ }) async {
56+ const query = """
57+ WITH LatestSet AS (
58+ SELECT blockHash, setHash, size
59+ FROM SparkSet
60+ WHERE groupId = ? AND complete = 1
61+ ORDER BY size DESC, id DESC
62+ LIMIT 1
63+ )
64+ SELECT
65+ LatestSet.blockHash,
66+ LatestSet.setHash,
67+ LatestSet.size,
68+ sc.serialized,
69+ sc.txHash,
70+ sc.context,
71+ sc.groupId
72+ FROM LatestSet
73+ JOIN SparkSet AS ss ON ss.groupId = ? AND ss.complete = 1
74+ JOIN SparkSetCoins AS ssc ON ss.id = ssc.setId
75+ JOIN SparkCoin AS sc ON ssc.coinId = sc.id
76+ ORDER BY ss.id ASC, ssc.orderKey DESC, ssc.id ASC;
77+ """ ;
78+
79+ return db.select ("$query ;" , [groupId, groupId]);
80+ }
81+
5282 static Future <ResultSet > _getSetCoinsForGroupIdAndBlockHash (
5383 int groupId,
5484 String blockHash, {
@@ -58,7 +88,9 @@ abstract class _Reader {
5888 WITH TargetBlock AS (
5989 SELECT id
6090 FROM SparkSet
61- WHERE blockHash = ? AND complete = 1
91+ WHERE blockHash = ? AND groupId = ? AND complete = 1
92+ ORDER BY id DESC
93+ LIMIT 1
6294 ),
6395 TargetSets AS (
6496 SELECT id AS setId
@@ -80,7 +112,7 @@ abstract class _Reader {
80112 SparkSetCoins.id ASC;
81113 """ ;
82114
83- return db.select ("$query ;" , [blockHash, groupId]);
115+ return db.select ("$query ;" , [blockHash, groupId, groupId ]);
84116 }
85117
86118 static Future <bool > _checkSetInfoForGroupIdExists (
0 commit comments