aboutsummaryrefslogtreecommitdiffhomepage
path: root/Digitigrade/Job
diff options
context:
space:
mode:
authorwinter2024-12-19 22:59:40 +0000
committerwinter2024-12-19 22:59:40 +0000
commitdf051a7524a93f96bfc69924c202a51286517ce2 (patch)
treeae6818812367b642e5359291f04b47a6627c02e8 /Digitigrade/Job
parentf6a55426cac40501aa7f8e88eb7bfd318d7cd170 (diff)
let notes push themselves to interested parties
Diffstat (limited to 'Digitigrade/Job')
-rw-r--r--Digitigrade/Job/PushObject.php30
1 files changed, 30 insertions, 0 deletions
diff --git a/Digitigrade/Job/PushObject.php b/Digitigrade/Job/PushObject.php
new file mode 100644
index 0000000..f5f1430
--- /dev/null
+++ b/Digitigrade/Job/PushObject.php
@@ -0,0 +1,30 @@
+<?php
+namespace Digitigrade\Job;
+
+use Digitigrade\Job;
+use Digitigrade\Logger;
+use Digitigrade\Model\Instance;
+use Digitigrade\Model\PushableModel;
+
+class PushObject extends Job {
+ public string $objectType;
+ public string $objectId;
+ public string $recipientServerHost;
+
+ public function __construct(PushableModel $object, Instance $recipient) {
+ $this->objectType = $object::class;
+ $this->objectId = $object->id;
+ $this->recipientServerHost = $recipient->domain;
+ $this->remainingTries = 8;
+ }
+
+ public function run() {
+ $instance = Instance::findByHostname($this->recipientServerHost);
+ assert($instance != null);
+ $object = $this->objectType::find($this->objectId);
+ assert($object instanceof PushableModel);
+
+ Logger::getInstance()->info("pushing object $object->uri to server $instance->domain");
+ $instance->pushObject($object);
+ }
+} \ No newline at end of file