rudimentary export options

This commit is contained in:
2018-07-29 20:19:19 +02:00
parent 3bf9b68503
commit 1037f438ce
15 changed files with 522 additions and 103 deletions
+34 -1
View File
@@ -6,10 +6,14 @@ use App\Models\Revision;
use App\Models\Row;
use App\Models\Table;
use App\Models\User;
use App\Utils\Column;
use App\Tables\Column;
use App\Tables\CStructArrayExporter;
use App\Tables\CsvExporter;
use App\Tables\JsonExporter;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use MightyPork\Exceptions\NotApplicableException;
use MightyPork\Utils\Utils;
class TableController extends Controller
{
@@ -258,4 +262,33 @@ class TableController extends Controller
}
}
}
public function export(Request $request, User $user, string $table)
{
/** @var Table $tableModel */
$tableModel = $user->tables()->where('name', $table)->first();
if ($tableModel === null) abort(404, "No such table.");
$exporter = null;
switch ($request->get('format')) {
case 'json':
$exporter = new JsonExporter($tableModel);
break;
case 'csv':
$exporter = new CsvExporter($tableModel);
break;
case 'c':
$exporter = new CStructArrayExporter($tableModel);
break;
default:
abort(400, "Unspecified or unknown format.");
}
$dl = Utils::parseBool($request->get('dl', false));
$exporter->exportToBrowser($dl);
}
}