routes.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <?php
  2. declare(strict_types=1);
  3. use FastRoute\RouteCollector;
  4. use PhpMyAdmin\Controllers\BrowseForeignersController;
  5. use PhpMyAdmin\Controllers\ChangeLogController;
  6. use PhpMyAdmin\Controllers\CheckRelationsController;
  7. use PhpMyAdmin\Controllers\ColumnController;
  8. use PhpMyAdmin\Controllers\ConfigController;
  9. use PhpMyAdmin\Controllers\Database\CentralColumnsController;
  10. use PhpMyAdmin\Controllers\Database\DataDictionaryController;
  11. use PhpMyAdmin\Controllers\Database\DesignerController;
  12. use PhpMyAdmin\Controllers\Database\EventsController;
  13. use PhpMyAdmin\Controllers\Database\ExportController as DatabaseExportController;
  14. use PhpMyAdmin\Controllers\Database\ImportController as DatabaseImportController;
  15. use PhpMyAdmin\Controllers\Database\MultiTableQueryController;
  16. use PhpMyAdmin\Controllers\Database\OperationsController;
  17. use PhpMyAdmin\Controllers\Database\QueryByExampleController;
  18. use PhpMyAdmin\Controllers\Database\RoutinesController;
  19. use PhpMyAdmin\Controllers\Database\SearchController;
  20. use PhpMyAdmin\Controllers\Database\SqlAutoCompleteController;
  21. use PhpMyAdmin\Controllers\Database\SqlController as DatabaseSqlController;
  22. use PhpMyAdmin\Controllers\Database\SqlFormatController;
  23. use PhpMyAdmin\Controllers\Database\StructureController;
  24. use PhpMyAdmin\Controllers\Database\TrackingController;
  25. use PhpMyAdmin\Controllers\Database\TriggersController;
  26. use PhpMyAdmin\Controllers\DatabaseController;
  27. use PhpMyAdmin\Controllers\ErrorReportController;
  28. use PhpMyAdmin\Controllers\ExportController;
  29. use PhpMyAdmin\Controllers\ExportTemplateController;
  30. use PhpMyAdmin\Controllers\GisDataEditorController;
  31. use PhpMyAdmin\Controllers\HomeController;
  32. use PhpMyAdmin\Controllers\ImportController;
  33. use PhpMyAdmin\Controllers\ImportStatusController;
  34. use PhpMyAdmin\Controllers\LicenseController;
  35. use PhpMyAdmin\Controllers\LintController;
  36. use PhpMyAdmin\Controllers\LogoutController;
  37. use PhpMyAdmin\Controllers\NavigationController;
  38. use PhpMyAdmin\Controllers\NormalizationController;
  39. use PhpMyAdmin\Controllers\PhpInfoController;
  40. use PhpMyAdmin\Controllers\Preferences\ExportController as PreferencesExportController;
  41. use PhpMyAdmin\Controllers\Preferences\FeaturesController;
  42. use PhpMyAdmin\Controllers\Preferences\ImportController as PreferencesImportController;
  43. use PhpMyAdmin\Controllers\Preferences\MainPanelController;
  44. use PhpMyAdmin\Controllers\Preferences\ManageController;
  45. use PhpMyAdmin\Controllers\Preferences\NavigationController as PreferencesNavigationController;
  46. use PhpMyAdmin\Controllers\Preferences\SqlController as PreferencesSqlController;
  47. use PhpMyAdmin\Controllers\Preferences\TwoFactorController;
  48. use PhpMyAdmin\Controllers\SchemaExportController;
  49. use PhpMyAdmin\Controllers\Server\BinlogController;
  50. use PhpMyAdmin\Controllers\Server\CollationsController;
  51. use PhpMyAdmin\Controllers\Server\DatabasesController;
  52. use PhpMyAdmin\Controllers\Server\EnginesController;
  53. use PhpMyAdmin\Controllers\Server\ExportController as ServerExportController;
  54. use PhpMyAdmin\Controllers\Server\ImportController as ServerImportController;
  55. use PhpMyAdmin\Controllers\Server\PluginsController;
  56. use PhpMyAdmin\Controllers\Server\PrivilegesController;
  57. use PhpMyAdmin\Controllers\Server\ReplicationController;
  58. use PhpMyAdmin\Controllers\Server\SqlController as ServerSqlController;
  59. use PhpMyAdmin\Controllers\Server\Status\AdvisorController;
  60. use PhpMyAdmin\Controllers\Server\Status\MonitorController;
  61. use PhpMyAdmin\Controllers\Server\Status\ProcessesController;
  62. use PhpMyAdmin\Controllers\Server\Status\QueriesController;
  63. use PhpMyAdmin\Controllers\Server\Status\StatusController;
  64. use PhpMyAdmin\Controllers\Server\Status\VariablesController as StatusVariables;
  65. use PhpMyAdmin\Controllers\Server\UserGroupsController;
  66. use PhpMyAdmin\Controllers\Server\VariablesController;
  67. use PhpMyAdmin\Controllers\SqlController;
  68. use PhpMyAdmin\Controllers\Table\AddFieldController;
  69. use PhpMyAdmin\Controllers\Table\ChangeController;
  70. use PhpMyAdmin\Controllers\Table\ChartController;
  71. use PhpMyAdmin\Controllers\Table\CreateController;
  72. use PhpMyAdmin\Controllers\Table\DeleteController;
  73. use PhpMyAdmin\Controllers\Table\ExportController as TableExportController;
  74. use PhpMyAdmin\Controllers\Table\FindReplaceController;
  75. use PhpMyAdmin\Controllers\Table\GetFieldController;
  76. use PhpMyAdmin\Controllers\Table\GisVisualizationController;
  77. use PhpMyAdmin\Controllers\Table\ImportController as TableImportController;
  78. use PhpMyAdmin\Controllers\Table\IndexesController;
  79. use PhpMyAdmin\Controllers\Table\MaintenanceController;
  80. use PhpMyAdmin\Controllers\Table\OperationsController as TableOperationsController;
  81. use PhpMyAdmin\Controllers\Table\PartitionController;
  82. use PhpMyAdmin\Controllers\Table\RecentFavoriteController;
  83. use PhpMyAdmin\Controllers\Table\RelationController;
  84. use PhpMyAdmin\Controllers\Table\ReplaceController;
  85. use PhpMyAdmin\Controllers\Table\SearchController as TableSearchController;
  86. use PhpMyAdmin\Controllers\Table\SqlController as TableSqlController;
  87. use PhpMyAdmin\Controllers\Table\StructureController as TableStructureController;
  88. use PhpMyAdmin\Controllers\Table\TrackingController as TableTrackingController;
  89. use PhpMyAdmin\Controllers\Table\TriggersController as TableTriggersController;
  90. use PhpMyAdmin\Controllers\Table\ZoomSearchController;
  91. use PhpMyAdmin\Controllers\TableController;
  92. use PhpMyAdmin\Controllers\ThemesController;
  93. use PhpMyAdmin\Controllers\TransformationOverviewController;
  94. use PhpMyAdmin\Controllers\TransformationWrapperController;
  95. use PhpMyAdmin\Controllers\UserPasswordController;
  96. use PhpMyAdmin\Controllers\VersionCheckController;
  97. use PhpMyAdmin\Controllers\ViewCreateController;
  98. use PhpMyAdmin\Controllers\ViewOperationsController;
  99. if (! defined('PHPMYADMIN')) {
  100. exit;
  101. }
  102. return static function (RouteCollector $routes): void {
  103. $routes->addGroup('', static function (RouteCollector $routes): void {
  104. $routes->addRoute(['GET', 'POST'], '[/]', [HomeController::class, 'index']);
  105. $routes->post('/set-theme', [HomeController::class, 'setTheme']);
  106. $routes->post('/collation-connection', [HomeController::class, 'setCollationConnection']);
  107. $routes->addRoute(['GET', 'POST'], '/recent-table', [HomeController::class, 'reloadRecentTablesList']);
  108. $routes->addRoute(['GET', 'POST'], '/git-revision', [HomeController::class, 'gitRevision']);
  109. });
  110. $routes->addRoute(['GET', 'POST'], '/browse-foreigners', [BrowseForeignersController::class, 'index']);
  111. $routes->get('/changelog', [ChangeLogController::class, 'index']);
  112. $routes->addRoute(['GET', 'POST'], '/check-relations', [CheckRelationsController::class, 'index']);
  113. $routes->post('/columns', [ColumnController::class, 'all']);
  114. $routes->addGroup('/config', static function (RouteCollector $routes): void {
  115. $routes->post('/get', [ConfigController::class, 'get']);
  116. $routes->post('/set', [ConfigController::class, 'set']);
  117. });
  118. $routes->addGroup('/database', static function (RouteCollector $routes): void {
  119. $routes->addGroup('/central-columns', static function (RouteCollector $routes): void {
  120. $routes->addRoute(['GET', 'POST'], '', [CentralColumnsController::class, 'index']);
  121. $routes->post('/populate', [CentralColumnsController::class, 'populateColumns']);
  122. });
  123. $routes->get('/data-dictionary', [DataDictionaryController::class, 'index']);
  124. $routes->addRoute(['GET', 'POST'], '/designer', [DesignerController::class, 'index']);
  125. $routes->addRoute(['GET', 'POST'], '/events', [EventsController::class, 'index']);
  126. $routes->addRoute(['GET', 'POST'], '/export', [DatabaseExportController::class, 'index']);
  127. $routes->addRoute(['GET', 'POST'], '/import', [DatabaseImportController::class, 'index']);
  128. $routes->addGroup('/multi-table-query', static function (RouteCollector $routes): void {
  129. $routes->get('', [MultiTableQueryController::class, 'index']);
  130. $routes->get('/tables', [MultiTableQueryController::class, 'table']);
  131. $routes->post('/query', [MultiTableQueryController::class, 'displayResults']);
  132. });
  133. $routes->addGroup('/operations', static function (RouteCollector $routes): void {
  134. $routes->addRoute(['GET', 'POST'], '', [OperationsController::class, 'index']);
  135. $routes->post('/collation', [OperationsController::class, 'collation']);
  136. });
  137. $routes->addRoute(['GET', 'POST'], '/qbe', [QueryByExampleController::class, 'index']);
  138. $routes->addRoute(['GET', 'POST'], '/routines', [RoutinesController::class, 'index']);
  139. $routes->addRoute(['GET', 'POST'], '/search', [SearchController::class, 'index']);
  140. $routes->addGroup('/sql', static function (RouteCollector $routes): void {
  141. $routes->addRoute(['GET', 'POST'], '', [DatabaseSqlController::class, 'index']);
  142. $routes->post('/autocomplete', [SqlAutoCompleteController::class, 'index']);
  143. $routes->post('/format', [SqlFormatController::class, 'index']);
  144. });
  145. $routes->addGroup('/structure', static function (RouteCollector $routes): void {
  146. $routes->addRoute(['GET', 'POST'], '', [StructureController::class, 'index']);
  147. $routes->post('/add-prefix', [StructureController::class, 'addPrefix']);
  148. $routes->post('/add-prefix-table', [StructureController::class, 'addPrefixTable']);
  149. $routes->post('/central-columns-add', [StructureController::class, 'centralColumnsAdd']);
  150. $routes->post('/central-columns-make-consistent', [
  151. StructureController::class,
  152. 'centralColumnsMakeConsistent',
  153. ]);
  154. $routes->post('/central-columns-remove', [StructureController::class, 'centralColumnsRemove']);
  155. $routes->post('/change-prefix-form', [StructureController::class, 'changePrefixForm']);
  156. $routes->post('/copy-form', [StructureController::class, 'copyForm']);
  157. $routes->post('/copy-table', [StructureController::class, 'copyTable']);
  158. $routes->post('/copy-table-with-prefix', [StructureController::class, 'copyTableWithPrefix']);
  159. $routes->post('/drop-form', [StructureController::class, 'dropForm']);
  160. $routes->post('/drop-table', [StructureController::class, 'dropTable']);
  161. $routes->post('/empty-form', [StructureController::class, 'emptyForm']);
  162. $routes->post('/empty-table', [StructureController::class, 'emptyTable']);
  163. $routes->addRoute(['GET', 'POST'], '/favorite-table', [
  164. StructureController::class,
  165. 'addRemoveFavoriteTablesAction',
  166. ]);
  167. $routes->addRoute(['GET', 'POST'], '/real-row-count', [
  168. StructureController::class,
  169. 'handleRealRowCountRequestAction',
  170. ]);
  171. $routes->post('/replace-prefix', [StructureController::class, 'replacePrefix']);
  172. $routes->post('/show-create', [StructureController::class, 'showCreate']);
  173. });
  174. $routes->addRoute(['GET', 'POST'], '/tracking', [TrackingController::class, 'index']);
  175. $routes->addRoute(['GET', 'POST'], '/triggers', [TriggersController::class, 'index']);
  176. });
  177. $routes->post('/databases', [DatabaseController::class, 'all']);
  178. $routes->addRoute(['GET', 'POST'], '/error-report', [ErrorReportController::class, 'index']);
  179. $routes->addGroup('/export', static function (RouteCollector $routes): void {
  180. $routes->addRoute(['GET', 'POST'], '', [ExportController::class, 'index']);
  181. $routes->get('/check-time-out', [ExportController::class, 'checkTimeOut']);
  182. $routes->post('/tables', [DatabaseExportController::class, 'tables']);
  183. $routes->addGroup('/template', static function (RouteCollector $routes): void {
  184. $routes->post('/create', [ExportTemplateController::class, 'create']);
  185. $routes->post('/delete', [ExportTemplateController::class, 'delete']);
  186. $routes->post('/load', [ExportTemplateController::class, 'load']);
  187. $routes->post('/update', [ExportTemplateController::class, 'update']);
  188. });
  189. });
  190. $routes->addRoute(['GET', 'POST'], '/gis-data-editor', [GisDataEditorController::class, 'index']);
  191. $routes->addRoute(['GET', 'POST'], '/import', [ImportController::class, 'index']);
  192. $routes->addRoute(['GET', 'POST'], '/import-status', [ImportStatusController::class, 'index']);
  193. $routes->get('/license', [LicenseController::class, 'index']);
  194. $routes->addRoute(['GET', 'POST'], '/lint', [LintController::class, 'index']);
  195. $routes->addRoute(['GET', 'POST'], '/logout', [LogoutController::class, 'index']);
  196. $routes->addRoute(['GET', 'POST'], '/navigation', [NavigationController::class, 'index']);
  197. $routes->addRoute(['GET', 'POST'], '/normalization', [NormalizationController::class, 'index']);
  198. $routes->get('/phpinfo', [PhpInfoController::class, 'index']);
  199. $routes->addGroup('/preferences', static function (RouteCollector $routes): void {
  200. $routes->addRoute(['GET', 'POST'], '/export', [PreferencesExportController::class, 'index']);
  201. $routes->addRoute(['GET', 'POST'], '/features', [FeaturesController::class, 'index']);
  202. $routes->addRoute(['GET', 'POST'], '/import', [PreferencesImportController::class, 'index']);
  203. $routes->addRoute(['GET', 'POST'], '/main-panel', [MainPanelController::class, 'index']);
  204. $routes->addRoute(['GET', 'POST'], '/manage', [ManageController::class, 'index']);
  205. $routes->addRoute(['GET', 'POST'], '/navigation', [PreferencesNavigationController::class, 'index']);
  206. $routes->addRoute(['GET', 'POST'], '/sql', [PreferencesSqlController::class, 'index']);
  207. $routes->addRoute(['GET', 'POST'], '/two-factor', [TwoFactorController::class, 'index']);
  208. });
  209. $routes->addRoute(['GET', 'POST'], '/schema-export', [SchemaExportController::class, 'index']);
  210. $routes->addGroup('/server', static function (RouteCollector $routes): void {
  211. $routes->addRoute(['GET', 'POST'], '/binlog', [BinlogController::class, 'index']);
  212. $routes->get('/collations', [CollationsController::class, 'index']);
  213. $routes->addGroup('/databases', static function (RouteCollector $routes): void {
  214. $routes->addRoute(['GET', 'POST'], '', [DatabasesController::class, 'index']);
  215. $routes->post('/create', [DatabasesController::class, 'create']);
  216. $routes->post('/destroy', [DatabasesController::class, 'destroy']);
  217. });
  218. $routes->addGroup('/engines', static function (RouteCollector $routes): void {
  219. $routes->get('', [EnginesController::class, 'index']);
  220. $routes->get('/{engine}[/{page}]', [EnginesController::class, 'show']);
  221. });
  222. $routes->addRoute(['GET', 'POST'], '/export', [ServerExportController::class, 'index']);
  223. $routes->addRoute(['GET', 'POST'], '/import', [ServerImportController::class, 'index']);
  224. $routes->get('/plugins', [PluginsController::class, 'index']);
  225. $routes->addRoute(['GET', 'POST'], '/privileges', [PrivilegesController::class, 'index']);
  226. $routes->addRoute(['GET', 'POST'], '/replication', [ReplicationController::class, 'index']);
  227. $routes->addRoute(['GET', 'POST'], '/sql', [ServerSqlController::class, 'index']);
  228. $routes->addGroup('/status', static function (RouteCollector $routes): void {
  229. $routes->get('', [StatusController::class, 'index']);
  230. $routes->get('/advisor', [AdvisorController::class, 'index']);
  231. $routes->addGroup('/monitor', static function (RouteCollector $routes): void {
  232. $routes->get('', [MonitorController::class, 'index']);
  233. $routes->post('/chart', [MonitorController::class, 'chartingData']);
  234. $routes->post('/slow-log', [MonitorController::class, 'logDataTypeSlow']);
  235. $routes->post('/general-log', [MonitorController::class, 'logDataTypeGeneral']);
  236. $routes->post('/log-vars', [MonitorController::class, 'loggingVars']);
  237. $routes->post('/query', [MonitorController::class, 'queryAnalyzer']);
  238. });
  239. $routes->addGroup('/processes', static function (RouteCollector $routes): void {
  240. $routes->addRoute(['GET', 'POST'], '', [ProcessesController::class, 'index']);
  241. $routes->post('/refresh', [ProcessesController::class, 'refresh']);
  242. $routes->post('/kill/{id:\d+}', [ProcessesController::class, 'kill']);
  243. });
  244. $routes->get('/queries', [QueriesController::class, 'index']);
  245. $routes->addRoute(['GET', 'POST'], '/variables', [StatusVariables::class, 'index']);
  246. });
  247. $routes->addRoute(['GET', 'POST'], '/user-groups', [UserGroupsController::class, 'index']);
  248. $routes->addGroup('/variables', static function (RouteCollector $routes): void {
  249. $routes->get('', [VariablesController::class, 'index']);
  250. $routes->get('/get/{name}', [VariablesController::class, 'getValue']);
  251. $routes->post('/set/{name}', [VariablesController::class, 'setValue']);
  252. });
  253. });
  254. $routes->addGroup('/sql', static function (RouteCollector $routes): void {
  255. $routes->addRoute(['GET', 'POST'], '', [SqlController::class, 'index']);
  256. $routes->post('/get-relational-values', [SqlController::class, 'getRelationalValues']);
  257. $routes->post('/get-enum-values', [SqlController::class, 'getEnumValues']);
  258. $routes->post('/get-set-values', [SqlController::class, 'getSetValues']);
  259. $routes->get('/get-default-fk-check-value', [SqlController::class, 'getDefaultForeignKeyCheckValue']);
  260. $routes->post('/set-column-preferences', [SqlController::class, 'setColumnOrderOrVisibility']);
  261. });
  262. $routes->addGroup('/table', static function (RouteCollector $routes): void {
  263. $routes->addRoute(['GET', 'POST'], '/add-field', [AddFieldController::class, 'index']);
  264. $routes->addGroup('/change', static function (RouteCollector $routes): void {
  265. $routes->addRoute(['GET', 'POST'], '', [ChangeController::class, 'index']);
  266. $routes->post('/rows', [ChangeController::class, 'rows']);
  267. });
  268. $routes->addRoute(['GET', 'POST'], '/chart', [ChartController::class, 'index']);
  269. $routes->addRoute(['GET', 'POST'], '/create', [CreateController::class, 'index']);
  270. $routes->addGroup('/delete', static function (RouteCollector $routes): void {
  271. $routes->post('/confirm', [DeleteController::class, 'confirm']);
  272. $routes->post('/rows', [DeleteController::class, 'rows']);
  273. });
  274. $routes->addGroup('/export', static function (RouteCollector $routes): void {
  275. $routes->addRoute(['GET', 'POST'], '', [TableExportController::class, 'index']);
  276. $routes->post('/rows', [TableExportController::class, 'rows']);
  277. });
  278. $routes->addRoute(['GET', 'POST'], '/find-replace', [FindReplaceController::class, 'index']);
  279. $routes->addRoute(['GET', 'POST'], '/get-field', [GetFieldController::class, 'index']);
  280. $routes->addRoute(['GET', 'POST'], '/gis-visualization', [GisVisualizationController::class, 'index']);
  281. $routes->addRoute(['GET', 'POST'], '/import', [TableImportController::class, 'index']);
  282. $routes->addRoute(['GET', 'POST'], '/indexes', [IndexesController::class, 'index']);
  283. $routes->addRoute(['GET', 'POST'], '/indexes/rename', [IndexesController::class, 'indexRename']);
  284. $routes->addGroup('/maintenance', static function (RouteCollector $routes): void {
  285. $routes->post('/analyze', [MaintenanceController::class, 'analyze']);
  286. $routes->post('/check', [MaintenanceController::class, 'check']);
  287. $routes->post('/checksum', [MaintenanceController::class, 'checksum']);
  288. $routes->post('/optimize', [MaintenanceController::class, 'optimize']);
  289. $routes->post('/repair', [MaintenanceController::class, 'repair']);
  290. });
  291. $routes->addGroup('/partition', static function (RouteCollector $routes): void {
  292. $routes->post('/analyze', [PartitionController::class, 'analyze']);
  293. $routes->post('/check', [PartitionController::class, 'check']);
  294. $routes->post('/drop', [PartitionController::class, 'drop']);
  295. $routes->post('/optimize', [PartitionController::class, 'optimize']);
  296. $routes->post('/rebuild', [PartitionController::class, 'rebuild']);
  297. $routes->post('/repair', [PartitionController::class, 'repair']);
  298. $routes->post('/truncate', [PartitionController::class, 'truncate']);
  299. });
  300. $routes->addRoute(['GET', 'POST'], '/operations', [TableOperationsController::class, 'index']);
  301. $routes->addRoute(['GET', 'POST'], '/recent-favorite', [RecentFavoriteController::class, 'index']);
  302. $routes->addRoute(['GET', 'POST'], '/relation', [RelationController::class, 'index']);
  303. $routes->addRoute(['GET', 'POST'], '/replace', [ReplaceController::class, 'index']);
  304. $routes->addRoute(['GET', 'POST'], '/search', [TableSearchController::class, 'index']);
  305. $routes->addRoute(['GET', 'POST'], '/sql', [TableSqlController::class, 'index']);
  306. $routes->addGroup('/structure', static function (RouteCollector $routes): void {
  307. $routes->addRoute(['GET', 'POST'], '', [TableStructureController::class, 'index']);
  308. $routes->post('/add-key', [TableStructureController::class, 'addKey']);
  309. $routes->post('/browse', [TableStructureController::class, 'browse']);
  310. $routes->post('/central-columns-add', [TableStructureController::class, 'addToCentralColumns']);
  311. $routes->post('/central-columns-remove', [TableStructureController::class, 'removeFromCentralColumns']);
  312. $routes->addRoute(['GET', 'POST'], '/change', [TableStructureController::class, 'change']);
  313. $routes->post('/drop', [TableStructureController::class, 'drop']);
  314. $routes->post('/drop-confirm', [TableStructureController::class, 'dropConfirm']);
  315. $routes->post('/fulltext', [TableStructureController::class, 'fulltext']);
  316. $routes->post('/index', [TableStructureController::class, 'addIndex']);
  317. $routes->post('/move-columns', [TableStructureController::class, 'moveColumns']);
  318. $routes->post('/partitioning', [TableStructureController::class, 'partitioning']);
  319. $routes->post('/primary', [TableStructureController::class, 'primary']);
  320. $routes->post('/reserved-word-check', [TableStructureController::class, 'reservedWordCheck']);
  321. $routes->post('/save', [TableStructureController::class, 'save']);
  322. $routes->post('/spatial', [TableStructureController::class, 'spatial']);
  323. $routes->post('/unique', [TableStructureController::class, 'unique']);
  324. });
  325. $routes->addRoute(['GET', 'POST'], '/tracking', [TableTrackingController::class, 'index']);
  326. $routes->addRoute(['GET', 'POST'], '/triggers', [TableTriggersController::class, 'index']);
  327. $routes->addRoute(['GET', 'POST'], '/zoom-search', [ZoomSearchController::class, 'index']);
  328. });
  329. $routes->post('/tables', [TableController::class, 'all']);
  330. $routes->get('/themes', [ThemesController::class, 'index']);
  331. $routes->addGroup('/transformation', static function (RouteCollector $routes): void {
  332. $routes->addRoute(['GET', 'POST'], '/overview', [TransformationOverviewController::class, 'index']);
  333. $routes->addRoute(['GET', 'POST'], '/wrapper', [TransformationWrapperController::class, 'index']);
  334. });
  335. $routes->addRoute(['GET', 'POST'], '/user-password', [UserPasswordController::class, 'index']);
  336. $routes->addRoute(['GET', 'POST'], '/version-check', [VersionCheckController::class, 'index']);
  337. $routes->addGroup('/view', static function (RouteCollector $routes): void {
  338. $routes->addRoute(['GET', 'POST'], '/create', [ViewCreateController::class, 'index']);
  339. $routes->addRoute(['GET', 'POST'], '/operations', [ViewOperationsController::class, 'index']);
  340. });
  341. };