. // }}} namespace Plugin\Repeat\Entity; use App\Core\DB\DB; use App\Core\Entity; use App\Entity\Note; /** * Entity for notices * * @category DB * @package GNUsocial * * @author Eliseu Amaro * @copyright 2020-2021 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ class NoteRepeat extends Entity { private int $note_id; private int $actor_id; private int $repeat_of; public function setNoteId(int $note_id): self { $this->note_id = $note_id; return $this; } public function getNoteId(): int { return $this->note_id; } public function setActorId(int $actor_id): self { $this->actor_id = $actor_id; return $this; } public function getActorId(): ?int { return $this->actor_id; } public function setRepeatOf(int $repeat_of): self { $this->repeat_of = $repeat_of; return $this; } public function getRepeatOf(): int { return $this->repeat_of; } public static function getNoteRepeats(Note $note): array { return DB::sql( <<<'EOF' select {select} from note n inner join note_repeat nr on nr.note_id = n.id where repeat_of = :note_id order by n.created DESC EOF, ['note_id' => $note->getId()] ); } public static function schemaDef(): array { return [ 'name' => 'note_repeat', 'fields' => [ 'note_id' => ['type' => 'int', 'not null' => true, 'foreign key' => true, 'target' => 'Note.id', 'multiplicity' => 'one to one', 'description' => 'The id of the repeat itself'], 'actor_id' => ['type' => 'int', 'not null' => true, 'foreign key' => true, 'target' => 'Actor.id', 'multiplicity' => 'one to one', 'description' => 'Who made this repeat'], 'repeat_of' => ['type' => 'int', 'not null' => true, 'foreign key' => true, 'target' => 'Note.id', 'multiplicity' => 'one to one', 'description' => 'Note this is a repeat of'], ], 'primary key' => ['note_id'], 'foreign keys' => [ 'note_id_to_id_fkey' => ['note', ['note_id' => 'id']], 'note_repeat_of_id_fkey' => ['note', ['repeat_of' => 'id']], 'actor_reply_to_id_fkey' => ['actor', ['actor_id' => 'id']], ], 'indexes' => [ 'note_repeat_of_idx' => ['repeat_of'], ], ]; } }