rudimentary export options
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user