| | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\managers\CustomTable; |
| | | use LogicException; |
| | | use Throwable; |
| | | |
| | | class Storage |
| | | { |
| | |
| | | public function __construct() |
| | | { |
| | | $this->defineTables(); |
| | | $this->cache = Cache::for('queue', DAY_IN_SECONDS)->user(); |
| | | $this->cache = Cache::for('queue', null, DAY_IN_SECONDS)->user(); |
| | | } |
| | | |
| | | public function hasProcessingOperations(): bool |
| | |
| | | |
| | | public function insert(Operation $op): bool |
| | | { |
| | | $result = $this->table->insert([ |
| | | 'id' => $op->id, |
| | | 'type' => $op->type, |
| | | 'user_id' => $op->userId, |
| | | $existing = $this->find($op->id); |
| | | if ($existing && in_array($existing->state, ['completed', 'processing'] )) { |
| | | $op->id = Queue::generateId($op->userId); |
| | | } |
| | | $result = $this->table->findOrCreate([ |
| | | 'id' => $op->id, |
| | | 'type' => $op->type, |
| | | 'user_id' => $op->userId, |
| | | ],[ |
| | | 'request_data' => json_encode($op->requestData), |
| | | 'total_items' => $op->totalItems, |
| | | 'processed_items' => $op->processedItems, |
| | |
| | | $result = $callback(); |
| | | $this->table->commit(); |
| | | return $result; |
| | | } catch (\Throwable $e) { |
| | | } catch (Throwable $e) { |
| | | $this->table->rollback(); |
| | | error_log('[Storage] Transaction rolled back: ' . $e->getMessage()); |
| | | throw $e; |
| | |
| | | } |
| | | |
| | | /** |
| | | * @throws \Throwable |
| | | * @throws Throwable |
| | | */ |
| | | public function replaceDependency(string $fromId, string $toId): int |
| | | { |