diff --git a/hwe/sammo/Auction.php b/hwe/sammo/Auction.php index 78169f1e..a5282512 100644 --- a/hwe/sammo/Auction.php +++ b/hwe/sammo/Auction.php @@ -41,6 +41,6 @@ class Auction if ($rawBettingInfo === null) { throw new \RuntimeException("해당 경매가 없습니다: {$auctionID}"); } - $this->info = new AuctionInfo($rawBettingInfo); + $this->info = AuctionInfo::fromArray($rawBettingInfo); } } diff --git a/hwe/sammo/DTO/AuctionBidItem.php b/hwe/sammo/DTO/AuctionBidItem.php index 185cc37a..296a2df7 100644 --- a/hwe/sammo/DTO/AuctionBidItem.php +++ b/hwe/sammo/DTO/AuctionBidItem.php @@ -2,37 +2,25 @@ namespace sammo\DTO; -use sammo\Json; -use Spatie\DataTransferObject\DataTransferObject; -use Spatie\DataTransferObject\Attributes\MapFrom; -use Spatie\DataTransferObject\Attributes\MapTo; +use sammo\DTO\Attr\JsonString; +use sammo\DTO\Attr\RawName; -class AuctionBidItem extends DataTransferObject{ - public int $id; - #[MapFrom('auction_id')] - #[MapTo('auction_id')] - public int $auctionID; - public ?int $owner; +class AuctionBidItem extends DTO +{ + public function __construct( + public int $id, + #[RawName('auction_id')] + public int $auctionID, + public ?int $owner, - #[MapFrom('general_id')] - #[MapTo('general_id')] - public int $generalID; + #[RawName('general_id')] + public int $generalID, - public int $amount; + public int $amount, - public string $date; - public AuctionBidItemData $data; - - public static function parse(array $data): self - { - $data['data'] = Json::decode($data['data']); - return new self($data); + public string $date, + #[JsonString] + public AuctionBidItemData $data, + ) { } - - public function toArray(): array - { - $result = parent::toArray(); - $result['data'] = Json::encode($this->data); - return $result; - } -} \ No newline at end of file +} diff --git a/hwe/sammo/DTO/AuctionBidItemData.php b/hwe/sammo/DTO/AuctionBidItemData.php index 5d065ddb..86f7e9d3 100644 --- a/hwe/sammo/DTO/AuctionBidItemData.php +++ b/hwe/sammo/DTO/AuctionBidItemData.php @@ -2,9 +2,11 @@ namespace sammo\DTO; -use Spatie\DataTransferObject\DataTransferObject; - -class AuctionBidItemData extends DataTransferObject{ - public string $ownerName; - public string $generalName; -} \ No newline at end of file +class AuctionBidItemData extends DTO +{ + public function __construct( + public string $ownerName, + public string $generalName, + ) { + } +} diff --git a/hwe/sammo/DTO/AuctionInfo.php b/hwe/sammo/DTO/AuctionInfo.php index 7f2b5ff5..d1b86113 100644 --- a/hwe/sammo/DTO/AuctionInfo.php +++ b/hwe/sammo/DTO/AuctionInfo.php @@ -2,27 +2,19 @@ namespace sammo\DTO; -use Spatie\DataTransferObject\Attributes\CastWith; -use Spatie\DataTransferObject\Attributes\Strict; -use Spatie\DataTransferObject\DataTransferObject; - use sammo\Enums\ResourceType; -use sammo\DTO\Caster\BackedEnumCaster; -//https://json2dto.atymic.dev/ - - - -#[Strict] -class AuctionInfo extends DataTransferObject +class AuctionInfo extends DTO { - public int $id; - public int $openerName; - public int $openerGeneralID; - public string $type; - public bool $finished; - #[CastWith(BackedEnumCaster::class)] - public ResourceType $reqResource; - public string $openDate; - public string $closeDate; + public function __construct( + public int $id, + public int $openerName, + public int $openerGeneralID, + public string $type, + public bool $finished, + public ResourceType $reqResource, + public string $openDate, + public string $closeDate, + ) { + } } diff --git a/hwe/sammo/DTO/Caster/BackedEnumCaster.php b/hwe/sammo/DTO/Caster/BackedEnumCaster.php deleted file mode 100644 index d8c9b04e..00000000 --- a/hwe/sammo/DTO/Caster/BackedEnumCaster.php +++ /dev/null @@ -1,27 +0,0 @@ -backedEnumFrom = $reflector->getMethod('from'); - } - - public function cast(mixed $value): \BackedEnum - { - if(!is_string($value) && !is_int($value)){ - throw new \Exception('BackedEnumCaster only accepts string|int'); - } - - return $this->backedEnumFrom->invoke(null, $value); - } -} \ No newline at end of file