3 namespace BookStack\Sorting;
5 use BookStack\Activity\Models\Loggable;
6 use BookStack\Entities\Models\Book;
8 use Illuminate\Database\Eloquent\Model;
9 use Illuminate\Database\Eloquent\Relations\HasMany;
13 * @property string $name
14 * @property string $sequence
15 * @property Carbon $created_at
16 * @property Carbon $updated_at
18 class SortSet extends Model implements Loggable
21 * @return SortSetOperation[]
23 public function getOperations(): array
25 return SortSetOperation::fromSequence($this->sequence);
29 * @param SortSetOperation[] $options
31 public function setOperations(array $options): void
33 $values = array_map(fn (SortSetOperation $opt) => $opt->value, $options);
34 $this->sequence = implode(',', $values);
37 public function logDescriptor(): string
39 return "({$this->id}) {$this->name}";
42 public function getUrl(): string
44 return url("/settings/sorting/sets/{$this->id}");
47 public function books(): HasMany
49 return $this->hasMany(Book::class);