Blame view

app/Repositories/CounterRepository.php 670 Bytes
e77200db5   nologostudio.ru   Initial commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  <?php
  
  namespace FootyRoom\Repositories;
  
  use FootyRoom\Support\MongoClient;
  
  class CounterRepository
  {
      /** @var \FootyRoom\Support\MongoClient */
      protected $mongo;
  
      public function __construct(MongoClient $mongo)
      {
          $this->mongo = $mongo->footyroom;
      }
  
      public function getNextId(string $name): int
      {
          $counter = $this->mongo->counters->findOneAndUpdate(
              ['_id' => $name],
              ['$inc' => ['id' => 1]],
              [
                  'upsert' => true,
                  'returnDocument' => \MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_AFTER
              ]
          );
  
          return $counter->id;
      }
  }