···2828 `play` text NOT NULL,
2929 `state` text NOT NULL,
3030 `parentId` integer,
3131+ `platformId` text,
3132 `compacted` text,
3233 CONSTRAINT `fk_plays_componentId_components_id_fk` FOREIGN KEY (`componentId`) REFERENCES `components`(`id`) ON UPDATE CASCADE ON DELETE CASCADE,
3334 CONSTRAINT `fk_plays_parentId_plays_id_fk` FOREIGN KEY (`parentId`) REFERENCES `plays`(`id`) ON UPDATE CASCADE ON DELETE SET NULL
···5455CREATE UNIQUE INDEX `play_uid_idx` ON `plays` (`uid`);--> statement-breakpoint
5556CREATE INDEX `play_playedAt_idx` ON `plays` (`playedAt`);--> statement-breakpoint
5657CREATE INDEX `play_seenAt_idx` ON `plays` (`seenAt`);--> statement-breakpoint
5858+CREATE INDEX `play_platform_idx` ON `plays` (`platformId`);--> statement-breakpoint
5759CREATE INDEX `play_queue_state_id_idx` ON `play_queue_states` (`playId`);
···368368 }
369369 return [false, `${stPrefix} ${EXPECTED_NON_DISCOVERED_REASON}`]
370370 } else {
371371- const discoveredPlays = this.getRecentlyDiscoveredPlaysByPlatform(genGroupId(candidate));
371371+ const discoveredPlays = await this.getRecentlyDiscoveredPlaysByPlatform(genGroupId(candidate));
372372 if (discoveredPlays.length === 0 || !playObjDataMatch(discoveredPlays[0], candidate)) {
373373 // if most recent stateful play is not this track we'll add it
374374 return [true,`${stPrefix} added after ${thresholdResultSummary(thresholdResults)}. Matched other recent play but could not determine time frame due to missing duration. Allowed due to not being last played track.`];