packages/ztd-query-postgres/src/Rewrite/Sampling/TableColumns.php
1<?php
2
3declare(strict_types=1);
4
5namespace ZtdQuery\Platform\Postgres\Rewrite\Sampling;
6
7/**
8 * Table columns operations for PostgreSQL sampling.
9 *
10 * @visibility root
11 */
12final class TableColumns
13{
14 /**
15 * @template T
16 * @param array<string, array<string, T>> $tables
17 * @return list<string>
18 */
19 public function columns(string $tableName, array $tables): array
20 {
21 foreach ($tables as $candidate => $context) {
22 if (strcasecmp($candidate, $tableName) !== 0) {
23 continue;
24 }
25 $columns = $context['columns'] ?? null;
26 if (!is_array($columns)) {
27 return [];
28 }
29
30 $names = [];
31 foreach ($columns as $column) {
32 if (is_string($column)) {
33 $names[] = $column;
34 }
35 }
36
37 return $names;
38 }
39
40 return [];
41 }
42}
43