| 
<?phpnamespace App;
 
 class OpenApiGenerator
 {
 public static function generate(array $tables, SchemaInspector $inspector): array
 {
 $paths = [];
 foreach ($tables as $table) {
 $paths["/index.php?action=list&table=$table"] = [
 'get' => [
 'summary' => "List rows in $table",
 'responses' => [
 '200' => [
 'description' => "List of $table",
 'content' => ['application/json' => []],
 ]
 ]
 ]
 ];
 $paths["/index.php?action=read&table=$table&id={id}"] = [
 'get' => [
 'summary' => "Read row from $table",
 'parameters' => [
 [
 'name' => 'id',
 'in' => 'query',
 'required' => true,
 'schema' => ['type' => 'string']
 ]
 ],
 'responses' => [
 '200' => [
 'description' => "Single $table row",
 'content' => ['application/json' => []],
 ]
 ]
 ]
 ];
 $paths["/index.php?action=create&table=$table"] = [
 'post' => [
 'summary' => "Create row in $table",
 'requestBody' => [
 'required' => true,
 'content' => ['application/x-www-form-urlencoded' => []],
 ],
 'responses' => [
 '200' => [
 'description' => "Created",
 'content' => ['application/json' => []],
 ]
 ]
 ]
 ];
 $paths["/index.php?action=update&table=$table&id={id}"] = [
 'post' => [
 'summary' => "Update row in $table",
 'parameters' => [
 [
 'name' => 'id',
 'in' => 'query',
 'required' => true,
 'schema' => ['type' => 'string']
 ]
 ],
 'requestBody' => [
 'required' => true,
 'content' => ['application/x-www-form-urlencoded' => []],
 ],
 'responses' => [
 '200' => [
 'description' => "Updated",
 'content' => ['application/json' => []],
 ]
 ]
 ]
 ];
 $paths["/index.php?action=delete&table=$table&id={id}"] = [
 'post' => [
 'summary' => "Delete row in $table",
 'parameters' => [
 [
 'name' => 'id',
 'in' => 'query',
 'required' => true,
 'schema' => ['type' => 'string']
 ]
 ],
 'responses' => [
 '200' => [
 'description' => "Deleted",
 'content' => ['application/json' => []],
 ]
 ]
 ]
 ];
 }
 
 return [
 'openapi' => '3.0.0',
 'info' => [
 'title' => 'PHP CRUD API Generator',
 'version' => '1.0.0'
 ],
 'paths' => $paths
 ];
 }
 }
 |