Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
heyjorgedev committed Jul 12, 2024
1 parent e38c0d2 commit 9b70e92
Show file tree
Hide file tree
Showing 15 changed files with 250 additions and 4 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"php": "^8.1"
},
"require-dev": {
"guzzlehttp/guzzle": "^7.8.1",
"pestphp/pest": "^2.20",
"laravel/pint": "^1.0",
"spatie/ray": "^1.28"
Expand Down
28 changes: 26 additions & 2 deletions src/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,31 @@

namespace HeyJorgeDev\QStash;

class Client
use HeyJorgeDev\QStash\Contracts\ClientInterface;
use HeyJorgeDev\QStash\Contracts\Resources\MessageInterface;
use HeyJorgeDev\QStash\Contracts\Resources\QueueInterface;
use HeyJorgeDev\QStash\Contracts\Resources\ScheduleInterface;
use HeyJorgeDev\QStash\Contracts\TransporterInterface;
use HeyJorgeDev\QStash\Resources\MessageResource;
use HeyJorgeDev\QStash\Resources\QueueResource;
use HeyJorgeDev\QStash\Resources\ScheduleResource;

class Client implements ClientInterface
{
public function __construct(string $token) {}
public function __construct(private readonly TransporterInterface $transporter) {}

public function queues(): QueueInterface
{
return new QueueResource($this->transporter);
}

public function schedules(): ScheduleInterface
{
return new ScheduleResource($this->transporter);
}

public function messages(): MessageInterface
{
return new MessageResource($this->transporter);
}
}
16 changes: 16 additions & 0 deletions src/Contracts/ClientInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace HeyJorgeDev\QStash\Contracts;

use HeyJorgeDev\QStash\Contracts\Resources\MessageInterface;
use HeyJorgeDev\QStash\Contracts\Resources\QueueInterface;
use HeyJorgeDev\QStash\Contracts\Resources\ScheduleInterface;

interface ClientInterface
{
public function queues(): QueueInterface;

public function schedules(): ScheduleInterface;

public function messages(): MessageInterface;
}
8 changes: 8 additions & 0 deletions src/Contracts/ReceiverInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

namespace HeyJorgeDev\QStash\Contracts;

interface ReceiverInterface
{
public function verify(): bool;
}
21 changes: 21 additions & 0 deletions src/Contracts/Resources/MessageInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace HeyJorgeDev\QStash\Contracts\Resources;

interface MessageInterface
{
public function publish();

public function enqueue();

public function batch();

public function get(string $messageId);

public function cancel(string $messageId);

/**
* @param array<string> $messageIds
*/
public function bulkCancel(array $messageIds);
}
12 changes: 12 additions & 0 deletions src/Contracts/Resources/QueueInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace HeyJorgeDev\QStash\Contracts\Resources;

interface QueueInterface
{
public function list();

public function get(string $queueName);

public function delete(string $queueName);
}
14 changes: 14 additions & 0 deletions src/Contracts/Resources/ScheduleInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace HeyJorgeDev\QStash\Contracts\Resources;

interface ScheduleInterface
{
public function list();

public function get(string $scheduleName);

public function delete(string $scheduleName);

// public function create(string $scheduleName, string $scheduleTime);
}
5 changes: 5 additions & 0 deletions src/Contracts/TransporterInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

namespace HeyJorgeDev\QStash\Contracts;

interface TransporterInterface {}
25 changes: 25 additions & 0 deletions src/Factory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace HeyJorgeDev\QStash;

use HeyJorgeDev\QStash\Transporters\HttpTransporter;
use Psr\Http\Client\ClientInterface as HttpClientInterface;

class Factory
{
private ?string $apiKey = null;

private ?HttpClientInterface $httpClient = null;

public function withApiKey(string $apiKey): Factory
{
$this->apiKey = $apiKey;

return $this;
}

public function make(): Client
{
return new Client(new HttpTransporter());
}
}
11 changes: 9 additions & 2 deletions src/QStash.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@

class QStash
{
public static function client(string $token): Client
public static function client(string $apiKey): Client
{
return new Client($token);
return self::factory()
->withApiKey($apiKey)
->make();
}

public static function factory(): Factory
{
return new Factory();
}
}
13 changes: 13 additions & 0 deletions src/Receiver.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace HeyJorgeDev\QStash;

use HeyJorgeDev\QStash\Contracts\ReceiverInterface;

class Receiver implements ReceiverInterface
{
public function verify(): bool
{
return false;
}
}
41 changes: 41 additions & 0 deletions src/Resources/MessageResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace HeyJorgeDev\QStash\Resources;

use HeyJorgeDev\QStash\Contracts\Resources\MessageInterface;
use HeyJorgeDev\QStash\Contracts\TransporterInterface;

class MessageResource implements MessageInterface
{
public function __construct(private readonly TransporterInterface $transporter) {}

public function publish()
{
// TODO: Implement publish() method.
}

public function enqueue()
{
// TODO: Implement enqueue() method.
}

public function batch()
{
// TODO: Implement batch() method.
}

public function get(string $messageId)
{
// TODO: Implement get() method.
}

public function cancel(string $messageId)
{
// TODO: Implement cancel() method.
}

public function bulkCancel(array $messageIds)
{
// TODO: Implement bulkCancel() method.
}
}
26 changes: 26 additions & 0 deletions src/Resources/QueueResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace HeyJorgeDev\QStash\Resources;

use HeyJorgeDev\QStash\Contracts\Resources\QueueInterface;
use HeyJorgeDev\QStash\Contracts\TransporterInterface;

class QueueResource implements QueueInterface
{
public function __construct(private readonly TransporterInterface $transporter) {}

public function list()
{
// TODO: Implement list() method.
}

public function get(string $queueName)
{
// TODO: Implement get() method.
}

public function delete(string $queueName)
{
// TODO: Implement delete() method.
}
}
26 changes: 26 additions & 0 deletions src/Resources/ScheduleResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace HeyJorgeDev\QStash\Resources;

use HeyJorgeDev\QStash\Contracts\Resources\ScheduleInterface;
use HeyJorgeDev\QStash\Contracts\TransporterInterface;

class ScheduleResource implements ScheduleInterface
{
public function __construct(private readonly TransporterInterface $transporter) {}

public function list()
{
// TODO: Implement list() method.
}

public function get(string $scheduleName)
{
// TODO: Implement get() method.
}

public function delete(string $scheduleName)
{
// TODO: Implement delete() method.
}
}
7 changes: 7 additions & 0 deletions src/Transporters/HttpTransporter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

namespace HeyJorgeDev\QStash\Transporters;

use HeyJorgeDev\QStash\Contracts\TransporterInterface;

class HttpTransporter implements TransporterInterface {}

0 comments on commit 9b70e92

Please sign in to comment.