added distinct selector for ClaimId when selecting claims to prevent duplicates (due to joins which should be fixed) from showing
This commit is contained in:
parent
7a84b50254
commit
6c2e6727a8
2 changed files with 7 additions and 2 deletions
|
@ -201,6 +201,7 @@ CREATE TABLE `Claims`
|
||||||
PRIMARY KEY `PK_Claim` (`Id`),
|
PRIMARY KEY `PK_Claim` (`Id`),
|
||||||
FOREIGN KEY `FK_ClaimTransaction` (`TransactionHash`) REFERENCES `Transactions` (`Hash`),
|
FOREIGN KEY `FK_ClaimTransaction` (`TransactionHash`) REFERENCES `Transactions` (`Hash`),
|
||||||
FOREIGN KEY `FK_ClaimPublisher` (`PublisherId`) REFERENCES `Claims` (`ClaimId`),
|
FOREIGN KEY `FK_ClaimPublisher` (`PublisherId`) REFERENCES `Claims` (`ClaimId`),
|
||||||
|
UNIQUE KEY `Idx_ClaimUnique` (`TransactionHash`, `Vout`, `ClaimId`),
|
||||||
CONSTRAINT `Cnt_ClaimCertificate` CHECK(`Certificate` IS NULL OR JSON_VALID(`Certificate`)), -- certificate type
|
CONSTRAINT `Cnt_ClaimCertificate` CHECK(`Certificate` IS NULL OR JSON_VALID(`Certificate`)), -- certificate type
|
||||||
INDEX `Idx_Claim` (`ClaimId`),
|
INDEX `Idx_Claim` (`ClaimId`),
|
||||||
INDEX `Idx_ClaimTransactionTime` (`TransactionTime`),
|
INDEX `Idx_ClaimTransactionTime` (`TransactionTime`),
|
||||||
|
@ -230,3 +231,5 @@ CREATE TABLE `PriceHistory`
|
||||||
PRIMARY KEY `PK_PriceHistory` (`Id`),
|
PRIMARY KEY `PK_PriceHistory` (`Id`),
|
||||||
UNIQUE KEY `Idx_PriceHistoryCreated` (`Created`)
|
UNIQUE KEY `Idx_PriceHistoryCreated` (`Created`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
|
||||||
|
|
||||||
|
ALTER TABLE Claims ADD UNIQUE KEY `Idx_ClaimUnique` (`TransactionHash`, `Vout`, `ClaimId`);
|
|
@ -100,7 +100,9 @@ class MainController extends AppController {
|
||||||
|
|
||||||
// recent claims
|
// recent claims
|
||||||
$claims = $this->Claims->find()->select(['TransactionHash', 'Name', 'Vout', 'ClaimId', 'ClaimType', 'Author', 'Title', 'Description', 'ContentType',
|
$claims = $this->Claims->find()->select(['TransactionHash', 'Name', 'Vout', 'ClaimId', 'ClaimType', 'Author', 'Title', 'Description', 'ContentType',
|
||||||
'IsNSFW', 'Language', 'ThumbnailUrl', 'Created'])->contain(['Publisher' => ['fields' => ['Name']]])->order(['Claims.Created' => 'DESC'])->limit(5)->toArray();
|
'IsNSFW', 'Language', 'ThumbnailUrl', 'Created'])->
|
||||||
|
distinct(['Claims.ClaimId'])->
|
||||||
|
contain(['Publisher' => ['fields' => ['Name']]])->order(['Claims.Created' => 'DESC'])->limit(5)->toArray();
|
||||||
|
|
||||||
$this->set('recentBlocks', $blocks);
|
$this->set('recentBlocks', $blocks);
|
||||||
$this->set('recentClaims', $claims);
|
$this->set('recentClaims', $claims);
|
||||||
|
@ -137,7 +139,7 @@ class MainController extends AppController {
|
||||||
}
|
}
|
||||||
|
|
||||||
$offset = ($page - 1) * $pageLimit;
|
$offset = ($page - 1) * $pageLimit;
|
||||||
$claims = $this->Claims->find()->contain(['Stream', 'Publisher' => ['fields' => ['Name']]])->order(['Claims.Created' => 'DESC'])->offset($offset)->limit($pageLimit)->toArray();
|
$claims = $this->Claims->find()->distinct(['Claims.ClaimId'])->contain(['Stream', 'Publisher' => ['fields' => ['Name']]])->order(['Claims.Created' => 'DESC'])->offset($offset)->limit($pageLimit)->toArray();
|
||||||
for ($i = 0; $i < count($claims); $i++) {
|
for ($i = 0; $i < count($claims); $i++) {
|
||||||
if ($canConvert && $claims[$i]->Fee > 0 && $claims[$i]->FeeCurrency == 'USD') {
|
if ($canConvert && $claims[$i]->Fee > 0 && $claims[$i]->FeeCurrency == 'USD') {
|
||||||
$claims[$i]->Price = $claims[$i]->Fee / $priceInfo->price;
|
$claims[$i]->Price = $claims[$i]->Fee / $priceInfo->price;
|
||||||
|
|
Loading…
Reference in a new issue