edit schema wip

This commit is contained in:
2026-01-08 15:19:08 +02:00
parent ebccac210a
commit 25ad3fefab
18 changed files with 714 additions and 45 deletions
+91
View File
@@ -54,6 +54,8 @@ class FieldController extends Controller
$name = $request->input("name");
$alias = $request->input("alias");
$fieldType = $request->input("fieldType");
$fields = FieldRepo::all();
$newRank = collect($fields)->last()->rank + 1;
$validator = Validator::make($request->all(), [
"name" => "required|string|max:30|min:2",
@@ -77,9 +79,98 @@ class FieldController extends Controller
alias: $alias,
type: $fieldType,
props: $fieldProps,
rank: $newRank,
);
FieldRepo::insert($field);
return response()->json(["field" => $field], 201);
}
public function edit(Request $request)
{
$fieldId = $request->route("id");
$fields = FieldRepo::all();
$field = collect($fields)->firstWhere("id", $fieldId);
if (empty($field)) {
return response()->json(["errors" => ["Field not found"]], 404);
}
$schemas = SchemaRepo::all();
$schema = collect($schemas)->firstWhere("id", $field->schemaId);
return $this->svelte->render(
view: "fieldEdit",
title: "Edit Field",
data: [
"schemas" => $schemas,
"schema" => $schema,
"field" => $field,
],
);
}
public function postUpdate(Request $request)
{
$fieldData = $request->input("field");
$validator = Validator::make($request->all(), [
"field.name" => "required|string|max:30|min:2",
"field.alias" => "required|alpha_dash:ascii|max:30|min:2",
]);
if ($validator->fails()) {
return response()->json(["errors" => $validator->errors()], 422);
}
$field = FieldRepo::findOne(data_get($fieldData, "id"));
if (empty($field)) {
return response()->json(["errors" => ["Field not found"]], 404);
}
$fieldProps = FieldProp::fromArray(
$field->type,
data_get($fieldData, "props"),
);
$field = new Field(
id: $field->id,
schemaId: $field->schemaId,
name: data_get($fieldData, "name"),
alias: data_get($fieldData, "alias"),
type: $field->type,
rank: $field->rank,
props: $fieldProps,
);
FieldRepo::update($field);
return response()->json(["field" => $field], 200);
}
public function postDelete(Request $request)
{
$fieldId = $request->input("fieldId");
$field = FieldRepo::findOne($fieldId);
if (empty($field)) {
return response()->json(["errors" => ["Field not found"]], 404);
}
FieldRepo::delete($fieldId);
return response()->json([], 200);
}
public function postReorder(Request $request)
{
$ids = $request->input("ids");
foreach ($ids as $index => $id) {
$field = FieldRepo::findOne($id);
if ($field) {
$field->rank = $index;
FieldRepo::update($field);
}
}
return response()->json(["ids" => $ids], 200);
}
}