Dynamodb.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Services\Token;
  3. use App\Models\User;
  4. use App\Services\Aws\Factory;
  5. class Dynamodb extends Base
  6. {
  7. protected $client;
  8. protected $tableName = 'token';
  9. public function __construct()
  10. {
  11. $this->client = Factory::createDynamodb();
  12. $this->tableName = 'token';
  13. }
  14. public function store($token, User $user, $expireTime)
  15. {
  16. $result = $this->client->putItem(array(
  17. 'TableName' => $this->tableName,
  18. 'Item' => array(
  19. 'token' => array('S' => $token),
  20. 'user_id' => array('N' => (string)$user->id),
  21. 'create_time' => array('N' => (string)time()),
  22. 'expire_time' => array('N' => (string)$expireTime)
  23. )
  24. ));
  25. return true;
  26. }
  27. public function delete($token)
  28. {
  29. $this->client->deleteItem(array(
  30. 'TableName' => $this->tableName,
  31. 'Key' => array(
  32. 'token' => array('S' => $token),
  33. )
  34. ));
  35. }
  36. public function get($token)
  37. {
  38. $result = $this->client->getItem(array(
  39. 'ConsistentRead' => true,
  40. 'TableName' => $this->tableName,
  41. 'Key' => array(
  42. 'token' => array('S' => $token),
  43. )
  44. ));
  45. $token = new Token();
  46. $token->token = $result['Item']['token']['S'];
  47. $token->userId = $result['Item']['user_id']['N'];
  48. $token->createTime = $result['Item']['create_time']['N'];
  49. $token->expireTime = $result['Item']['expire_time']['N'];
  50. return $token;
  51. }
  52. }