Files
core/hwe/sammo/Auction.php
T
2022-06-09 01:21:21 +09:00

47 lines
1.1 KiB
PHP

<?php
namespace sammo;
use Ds\Map;
use sammo\DTO\AuctionInfo;
class Auction
{
private AuctionInfo $info;
public const LAST_AUCTION_ID_KEY = 'last_auction_id';
static public function genNextAuctionID(): int
{
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$gameStor->invalidateCacheValue(self::LAST_AUCTION_ID_KEY);
$auctionID = ($gameStor->getValue(self::LAST_AUCTION_ID_KEY) ?? 0) + 1;
$gameStor->setValue(self::LAST_AUCTION_ID_KEY, $auctionID);
return $auctionID;
}
static public function openAuction(AuctionInfo $info)
{
$db = DB::db();
$auctionID = $info->id;
$auctionStor = KVStorage::getStorage($db, 'auction');
$auctionStor->setValue("id_{$auctionID}", $info->toArray());
}
public function __construct(private readonly int $auctionID)
{
$db = DB::db();
$auctionStor = KVStorage::getStorage($db, 'auction');
$rawBettingInfo = $auctionStor->getValue("id_{$auctionID}");
if ($rawBettingInfo === null) {
throw new \RuntimeException("해당 경매가 없습니다: {$auctionID}");
}
$this->info = new AuctionInfo($rawBettingInfo);
}
}