OrderbookModel.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace Models;
  3. class OrderbookModel
  4. {
  5. private \PDO $pdo;
  6. public function __construct()
  7. {
  8. if (isset($GLOBALS['pdo']) && $GLOBALS['pdo'] instanceof \PDO) {
  9. $this->pdo = $GLOBALS['pdo'];
  10. return;
  11. }
  12. throw new \RuntimeException('Global PDO connection not initialized');
  13. }
  14. /**
  15. * @param array{
  16. * orderbook_flag:string,
  17. * orderbook_ts:int,
  18. * orderbook_is_token:bool,
  19. * orderbook_amount:string,
  20. * status_id:int,
  21. * user_id:int,
  22. * wallet_id:int,
  23. * token_id:int,
  24. * currency_id:?int,
  25. * chain_id:int
  26. * } $data
  27. */
  28. public function create(array $data): array
  29. {
  30. $stmt = $this->pdo->prepare(
  31. 'INSERT INTO "orderbook" (
  32. orderbook_flag,
  33. orderbook_ts,
  34. orderbook_is_token,
  35. orderbook_amount,
  36. status_id,
  37. user_id,
  38. wallet_id,
  39. token_id,
  40. currency_id,
  41. chain_id
  42. ) VALUES (
  43. :orderbook_flag,
  44. :orderbook_ts,
  45. :orderbook_is_token,
  46. :orderbook_amount,
  47. :status_id,
  48. :user_id,
  49. :wallet_id,
  50. :token_id,
  51. :currency_id,
  52. :chain_id
  53. ) RETURNING orderbook_id'
  54. );
  55. $stmt->execute([
  56. 'orderbook_flag' => $data['orderbook_flag'],
  57. 'orderbook_ts' => $data['orderbook_ts'],
  58. 'orderbook_is_token' => $data['orderbook_is_token'],
  59. 'orderbook_amount' => $data['orderbook_amount'],
  60. 'status_id' => $data['status_id'],
  61. 'user_id' => $data['user_id'],
  62. 'wallet_id' => $data['wallet_id'],
  63. 'token_id' => $data['token_id'],
  64. 'currency_id' => $data['currency_id'],
  65. 'chain_id' => $data['chain_id'],
  66. ]);
  67. $orderbookId = (int)$stmt->fetchColumn();
  68. return [
  69. 'orderbook_id' => $orderbookId,
  70. 'orderbook_ts' => $data['orderbook_ts'],
  71. ];
  72. }
  73. }