Skip to content

Commit d4e63de

Browse files
committed
add: backwards compatibility.
1 parent 3f98807 commit d4e63de

11 files changed

Lines changed: 106 additions & 28 deletions

File tree

src/Migration/Destinations/Appwrite.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ public static function getSupportedResources(): array
114114
Resource::TYPE_INDEX,
115115
Resource::TYPE_ROW,
116116

117+
// legacy
118+
Resource::TYPE_DOCUMENT,
119+
Resource::TYPE_ATTRIBUTE,
120+
Resource::TYPE_COLLECTION,
121+
117122
// Storage
118123
Resource::TYPE_BUCKET,
119124
Resource::TYPE_FILE,
@@ -272,10 +277,12 @@ public function importDatabaseResource(Resource $resource, bool $isLast): Resour
272277
$success = $this->createDatabase($resource);
273278
break;
274279
case Resource::TYPE_TABLE:
280+
case Resource::TYPE_COLLECTION:
275281
/** @var Table $resource */
276282
$success = $this->createTable($resource);
277283
break;
278284
case Resource::TYPE_COLUMN:
285+
case Resource::TYPE_ATTRIBUTE:
279286
/** @var Column $resource */
280287
$success = $this->createColumn($resource);
281288
break;
@@ -284,6 +291,7 @@ public function importDatabaseResource(Resource $resource, bool $isLast): Resour
284291
$success = $this->createIndex($resource);
285292
break;
286293
case Resource::TYPE_ROW:
294+
case Resource::TYPE_DOCUMENT:
287295
/** @var Row $resource */
288296
$success = $this->createRow($resource, $isLast);
289297
break;

src/Migration/Destinations/Local.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ public static function getSupportedResources(): array
5757
Resource::TYPE_INDEX,
5858
Resource::TYPE_ROW,
5959

60+
// legacy
61+
Resource::TYPE_DOCUMENT,
62+
Resource::TYPE_ATTRIBUTE,
63+
Resource::TYPE_COLLECTION,
64+
6065
// Storage
6166
Resource::TYPE_BUCKET,
6267
Resource::TYPE_FILE,

src/Migration/Resource.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ abstract class Resource implements \JsonSerializable
5454

5555
public const TYPE_ENVIRONMENT_VARIABLE = 'environment-variable';
5656

57+
// legacy terminologies
58+
public const TYPE_DOCUMENT = 'document';
59+
public const TYPE_ATTRIBUTE = 'attribute';
60+
public const TYPE_COLLECTION = 'collection';
61+
62+
private const TYPE_COMPATIBILITY_MAP = [
63+
Resource::TYPE_ROW => Resource::TYPE_DOCUMENT,
64+
Resource::TYPE_COLUMN => Resource::TYPE_ATTRIBUTE,
65+
Resource::TYPE_TABLE => Resource::TYPE_COLLECTION,
66+
];
67+
5768
public const ALL_RESOURCES = [
5869
self::TYPE_COLUMN,
5970
self::TYPE_BUCKET,
@@ -69,6 +80,11 @@ abstract class Resource implements \JsonSerializable
6980
self::TYPE_ENVIRONMENT_VARIABLE,
7081
self::TYPE_TEAM,
7182
self::TYPE_MEMBERSHIP,
83+
84+
// legacy
85+
self::TYPE_DOCUMENT,
86+
self::TYPE_ATTRIBUTE,
87+
self::TYPE_COLLECTION,
7288
];
7389

7490
protected string $id = '';
@@ -93,6 +109,21 @@ abstract public static function getName(): string;
93109

94110
abstract public function getGroup(): string;
95111

112+
public static function isSupported(string|array $types, array $resources): bool
113+
{
114+
$allTypes = [];
115+
$types = (array) $types;
116+
117+
foreach ($types as $type) {
118+
$allTypes[] = $type;
119+
if (isset(self::TYPE_COMPATIBILITY_MAP[$type])) {
120+
$allTypes[] = self::TYPE_COMPATIBILITY_MAP[$type];
121+
}
122+
}
123+
124+
return (bool) \array_intersect($resources, $allTypes);
125+
}
126+
96127
public function getId(): string
97128
{
98129
return $this->id;

src/Migration/Sources/Appwrite.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@ public static function getSupportedResources(): array
122122
Resource::TYPE_INDEX,
123123
Resource::TYPE_ROW,
124124

125+
// legacy
126+
Resource::TYPE_DOCUMENT,
127+
Resource::TYPE_ATTRIBUTE,
128+
Resource::TYPE_COLLECTION,
129+
125130
// Storage
126131
Resource::TYPE_BUCKET,
127132
Resource::TYPE_FILE,
@@ -541,7 +546,7 @@ protected function exportGroupDatabases(int $batchSize, array $resources): void
541546
}
542547

543548
try {
544-
if (\in_array(Resource::TYPE_TABLE, $resources)) {
549+
if (Resource::isSupported(Resource::TYPE_TABLE, $resources)) {
545550
$this->exportTables($batchSize);
546551
}
547552
} catch (\Throwable $e) {
@@ -559,7 +564,7 @@ protected function exportGroupDatabases(int $batchSize, array $resources): void
559564
}
560565

561566
try {
562-
if (\in_array(Resource::TYPE_COLUMN, $resources)) {
567+
if (Resource::isSupported(Resource::TYPE_COLUMN, $resources)) {
563568
$this->exportColumns($batchSize);
564569
}
565570
} catch (\Throwable $e) {
@@ -595,7 +600,7 @@ protected function exportGroupDatabases(int $batchSize, array $resources): void
595600
}
596601

597602
try {
598-
if (\in_array(Resource::TYPE_ROW, $resources)) {
603+
if (Resource::isSupported(Resource::TYPE_ROW, $resources)) {
599604
$this->exportRows($batchSize);
600605
}
601606
} catch (\Throwable $e) {
@@ -720,6 +725,7 @@ private function exportTables(int $batchSize): void
720725
private function exportColumns(int $batchSize): void
721726
{
722727
$tables = $this->cache->get(Table::getName());
728+
723729
/** @var Table[] $tables */
724730
foreach ($tables as $table) {
725731
$lastColumn = null;

src/Migration/Sources/Appwrite/Reader/API.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function report(array $resources, array &$report): mixed
3535
Resource::TYPE_INDEX
3636
];
3737

38-
if (empty(array_intersect($resources, $relevantResources))) {
38+
if (!Resource::isSupported($relevantResources, $resources)) {
3939
return null;
4040
}
4141

@@ -65,18 +65,15 @@ public function report(array $resources, array &$report): mixed
6565
$tablesResponse = $this->database->listCollections($databaseId);
6666
$tables = $tablesResponse['collections'];
6767

68-
if (in_array(Resource::TYPE_TABLE, $resources)) {
68+
if (Resource::isSupported(Resource::TYPE_TABLE, $resources)) {
6969
$report[Resource::TYPE_TABLE] += $tablesResponse['total'];
7070
}
7171

72-
if (in_array(Resource::TYPE_ROW, $resources) ||
73-
in_array(Resource::TYPE_COLUMN, $resources) ||
74-
in_array(Resource::TYPE_INDEX, $resources)) {
75-
72+
if (Resource::isSupported([Resource::TYPE_ROW, Resource::TYPE_COLUMN, Resource::TYPE_INDEX], $resources)) {
7673
foreach ($tables as $table) {
7774
$tableId = $table['$id'];
7875

79-
if (in_array(Resource::TYPE_ROW, $resources)) {
76+
if (Resource::isSupported(Resource::TYPE_ROW, $resources)) {
8077
/* $rowsResponse = $this->tables->listRows(...) */
8178
$rowsResponse = $this->database->listDocuments(
8279
$databaseId,
@@ -86,7 +83,7 @@ public function report(array $resources, array &$report): mixed
8683
$report[Resource::TYPE_ROW] += $rowsResponse['total'];
8784
}
8885

89-
if (in_array(Resource::TYPE_COLUMN, $resources)) {
86+
if (Resource::isSupported(Resource::TYPE_COLUMN, $resources)) {
9087
/* $columnsResponse = $this->tables->listColumns(...); */
9188
$columnsResponse = $this->database->listAttributes($databaseId, $tableId);
9289
$report[Resource::TYPE_COLUMN] += $columnsResponse['total'];

src/Migration/Sources/Appwrite/Reader/Database.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ public function report(array $resources, array &$report): mixed
3131
Resource::TYPE_TABLE,
3232
Resource::TYPE_ROW,
3333
Resource::TYPE_COLUMN,
34-
Resource::TYPE_INDEX
34+
Resource::TYPE_INDEX,
35+
36+
// legacy
37+
Resource::TYPE_DOCUMENT,
38+
Resource::TYPE_ATTRIBUTE,
39+
Resource::TYPE_COLLECTION,
3540
];
3641

3742
if (empty(array_intersect($resources, $relevantResources))) {
@@ -61,11 +66,11 @@ public function report(array $resources, array &$report): mixed
6166
$databaseSequence = $database->getSequence();
6267
$tableId = "database_{$databaseSequence}";
6368

64-
if (in_array(Resource::TYPE_TABLE, $resources)) {
69+
if (Resource::isSupported(Resource::TYPE_TABLE, $resources)) {
6570
$report[Resource::TYPE_TABLE] += $this->countResources($tableId);
6671
}
6772

68-
if (!array_intersect($resources, [Resource::TYPE_ROW, Resource::TYPE_COLUMN, Resource::TYPE_INDEX])) {
73+
if (!Resource::isSupported([Resource::TYPE_ROW, Resource::TYPE_COLUMN, Resource::TYPE_INDEX], $resources)) {
6974
continue;
7075
}
7176

@@ -85,7 +90,7 @@ public function report(array $resources, array &$report): mixed
8590
foreach ($tables as $table) {
8691
$tableSequence = $table->getSequence();
8792

88-
if (in_array(Resource::TYPE_ROW, $resources)) {
93+
if (Resource::isSupported(Resource::TYPE_ROW, $resources)) {
8994
$rowTableId = "database_{$databaseSequence}_collection_{$tableSequence}";
9095
$report[Resource::TYPE_ROW] += $this->countResources($rowTableId);
9196
}
@@ -95,7 +100,7 @@ public function report(array $resources, array &$report): mixed
95100
Query::equal('collectionInternalId', [$tableSequence]),
96101
];
97102

98-
if (in_array(Resource::TYPE_COLUMN, $resources)) {
103+
if (Resource::isSupported(Resource::TYPE_COLUMN, $resources)) {
99104
$report[Resource::TYPE_COLUMN] += $this->countResources('attributes', $commonQueries);
100105
}
101106

src/Migration/Sources/Firebase.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,11 @@ public static function getSupportedResources(): array
130130
Resource::TYPE_COLUMN,
131131
Resource::TYPE_ROW,
132132

133+
// legacy
134+
Resource::TYPE_DOCUMENT,
135+
Resource::TYPE_ATTRIBUTE,
136+
Resource::TYPE_COLLECTION,
137+
133138
// Storage
134139
Resource::TYPE_BUCKET,
135140
Resource::TYPE_FILE,
@@ -295,8 +300,9 @@ protected function exportGroupDatabases(int $batchSize, array $resources): void
295300
}
296301

297302
try {
298-
if (\in_array(Resource::TYPE_TABLE, $resources)) {
299-
$this->exportDB($batchSize, in_array(Resource::TYPE_ROW, $resources), $database);
303+
if (Resource::isSupported(Resource::TYPE_TABLE, $resources)) {
304+
$hasInResources = Resource::isSupported(Resource::TYPE_ROW, $resources);
305+
$this->exportDB($batchSize, $hasInResources, $database);
300306
}
301307
} catch (\Throwable $e) {
302308
$this->addError(

src/Migration/Sources/NHost.php

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ public static function getSupportedResources(): array
8989
Resource::TYPE_INDEX,
9090
Resource::TYPE_ROW,
9191

92+
// LEGACY
93+
Resource::TYPE_DOCUMENT,
94+
Resource::TYPE_ATTRIBUTE,
95+
Resource::TYPE_COLLECTION,
96+
9297
// Storage
9398
Resource::TYPE_BUCKET,
9499
Resource::TYPE_FILE,
@@ -130,7 +135,7 @@ public function report(array $resources = []): array
130135
$report[Resource::TYPE_DATABASE] = 1;
131136
}
132137

133-
if (\in_array(Resource::TYPE_TABLE, $resources)) {
138+
if (Resource::isSupported(Resource::TYPE_TABLE, $resources)) {
134139
$statement = $db->prepare('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = \'public\'');
135140
$statement->execute();
136141

@@ -141,7 +146,7 @@ public function report(array $resources = []): array
141146
$report[Resource::TYPE_TABLE] = $statement->fetchColumn();
142147
}
143148

144-
if (\in_array(Resource::TYPE_COLUMN, $resources)) {
149+
if (Resource::isSupported(Resource::TYPE_COLUMN, $resources)) {
145150
$statement = $db->prepare('SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = \'public\'');
146151
$statement->execute();
147152

@@ -163,7 +168,7 @@ public function report(array $resources = []): array
163168
$report[Resource::TYPE_INDEX] = $statement->fetchColumn();
164169
}
165170

166-
if (\in_array(Resource::TYPE_ROW, $resources)) {
171+
if (Resource::isSupported(Resource::TYPE_ROW, $resources)) {
167172
$statement = $db->prepare('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = \'public\'');
168173
$statement->execute();
169174

@@ -295,7 +300,7 @@ protected function exportGroupDatabases(int $batchSize, array $resources): void
295300
}
296301

297302
try {
298-
if (\in_array(Resource::TYPE_TABLE, $resources)) {
303+
if (Resource::isSupported(Resource::TYPE_TABLE, $resources)) {
299304
$this->exportTables($batchSize);
300305
}
301306
} catch (\Throwable $e) {
@@ -311,7 +316,7 @@ protected function exportGroupDatabases(int $batchSize, array $resources): void
311316
}
312317

313318
try {
314-
if (\in_array(Resource::TYPE_COLUMN, $resources)) {
319+
if (Resource::isSupported(Resource::TYPE_COLUMN, $resources)) {
315320
$this->exportColumns($batchSize);
316321
}
317322
} catch (\Throwable $e) {
@@ -327,7 +332,7 @@ protected function exportGroupDatabases(int $batchSize, array $resources): void
327332
}
328333

329334
try {
330-
if (\in_array(Resource::TYPE_ROW, $resources)) {
335+
if (Resource::isSupported(Resource::TYPE_ROW, $resources)) {
331336
$this->exportRows($batchSize);
332337
}
333338
} catch (\Throwable $e) {

src/Migration/Sources/Supabase.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ public function report(array $resources = []): array
264264
$report[Resource::TYPE_DATABASE] = 1;
265265
}
266266

267-
if (\in_array(Resource::TYPE_TABLE, $resources)) {
267+
if (Resource::isSupported(Resource::TYPE_TABLE, $resources)) {
268268
$statement = $this->pdo->prepare('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = \'public\'');
269269
$statement->execute();
270270

@@ -275,7 +275,7 @@ public function report(array $resources = []): array
275275
$report[Resource::TYPE_TABLE] = $statement->fetchColumn();
276276
}
277277

278-
if (\in_array(Resource::TYPE_COLUMN, $resources)) {
278+
if (Resource::isSupported(Resource::TYPE_COLUMN, $resources)) {
279279
$statement = $this->pdo->prepare('SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = \'public\'');
280280
$statement->execute();
281281

@@ -297,7 +297,7 @@ public function report(array $resources = []): array
297297
$report[Resource::TYPE_INDEX] = $statement->fetchColumn();
298298
}
299299

300-
if (\in_array(Resource::TYPE_ROW, $resources)) {
300+
if (Resource::isSupported(Resource::TYPE_ROW, $resources)) {
301301
$statement = $this->pdo->prepare('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = \'public\'');
302302
$statement->execute();
303303

src/Migration/Transfer.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ class Transfer
3939
Resource::TYPE_TABLE,
4040
Resource::TYPE_INDEX,
4141
Resource::TYPE_COLUMN,
42-
Resource::TYPE_ROW
42+
Resource::TYPE_ROW,
43+
44+
// legacy
45+
Resource::TYPE_DOCUMENT,
46+
Resource::TYPE_ATTRIBUTE,
47+
Resource::TYPE_COLLECTION,
4348
];
4449

4550
public const GROUP_SETTINGS_RESOURCES = [];
@@ -58,6 +63,11 @@ class Transfer
5863
Resource::TYPE_INDEX,
5964
Resource::TYPE_COLUMN,
6065
Resource::TYPE_ROW,
66+
67+
// legacy
68+
Resource::TYPE_DOCUMENT,
69+
Resource::TYPE_ATTRIBUTE,
70+
Resource::TYPE_COLLECTION,
6171
];
6272

6373
public const ROOT_RESOURCES = [

0 commit comments

Comments
 (0)