Skip to content

Commit 3c96380

Browse files
committed
fix(API): take over UUID when importing a scheme
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
1 parent 9dfc340 commit 3c96380

3 files changed

Lines changed: 13 additions & 2 deletions

File tree

lib/Controller/ApiTablesController.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use OCA\Tables\Service\ColumnService;
2323
use OCA\Tables\Service\TableService;
2424
use OCA\Tables\Service\ViewService;
25+
use OCA\Tables\Vendor\Symfony\Component\Uid\Uuid;
2526
use OCP\App\IAppManager;
2627
use OCP\AppFramework\Http;
2728
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
@@ -153,6 +154,9 @@ public function createFromScheme(string $title, string $emoji, string $descripti
153154
$table = $this->service->create($title, 'custom', $emoji, $description);
154155
$colMap = [];
155156
foreach ($columns as $column) {
157+
if (isset($column['uuid']) && !Uuid::isValid($column['uuid'])) {
158+
throw new \InvalidArgumentException('Invalid UUID provided');
159+
}
156160
$col = $this->columnService->create(
157161
$this->userId,
158162
$table->getId(),
@@ -182,7 +186,8 @@ public function createFromScheme(string $title, string $emoji, string $descripti
182186
usergroupSelectGroups: $column['usergroupSelectGroups'],
183187
usergroupSelectTeams: $column['usergroupSelectTeams'],
184188
showUserStatus: $column['showUserStatus'],
185-
customSettings: empty($column['customSettings']) ? null : json_encode($column['customSettings'])
189+
customSettings: empty($column['customSettings']) ? null : json_encode($column['customSettings']),
190+
uuid: $column['uuid'] ?? null,
186191
)
187192
);
188193
$colMap[$column['id']] = $col->getId();

lib/Db/Column.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ private function applyUuid(string $uuid): void {
242242

243243
public static function fromDto(ColumnDto $data): self {
244244
$column = new self();
245-
$column->assignUuid();
245+
$column->setOrAssignUuid($data->getUuid());
246246
$column->setTitle($data->getTitle());
247247
$column->setType($data->getType());
248248
$column->setSubtype($data->getSubtype() ?? '');

lib/Dto/Column.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public function __construct(
3434
private ?bool $usergroupSelectTeams = null,
3535
private ?bool $showUserStatus = null,
3636
private ?string $customSettings = null,
37+
private ?string $uuid = null,
3738
) {
3839
}
3940

@@ -69,9 +70,14 @@ public static function createFromArray(array $data): self {
6970
usergroupSelectTeams: $data['usergroupSelectTeams'] ?? null,
7071
showUserStatus: $data['showUserStatus'] ?? null,
7172
customSettings: $customSettings,
73+
uuid: $data['uuid'] ?? null,
7274
);
7375
}
7476

77+
public function getUuid(): ?string {
78+
return $this->uuid;
79+
}
80+
7581
public function getType(): ?string {
7682
return $this->type;
7783
}

0 commit comments

Comments
 (0)