schemas and fields
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace Lucent\Http\Controller;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Lucent\Account\AccountService;
|
||||
use Lucent\Account\AuthService;
|
||||
use Lucent\Core\Repository\SchemaRepo;
|
||||
use Lucent\Core\Schema\Data\Schema;
|
||||
use Lucent\Id\Id;
|
||||
use Lucent\Svelte\Svelte;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class SchemaController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private readonly AuthService $authService,
|
||||
private readonly AccountService $accountService,
|
||||
private readonly Svelte $svelte,
|
||||
) {}
|
||||
|
||||
public function home()
|
||||
{
|
||||
$schemas = SchemaRepo::all();
|
||||
|
||||
return $this->svelte->render(
|
||||
view: "schemas",
|
||||
title: "Schemas",
|
||||
data: [
|
||||
"schemas" => $schemas,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
public function postCreate(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
"name" => "required|string|max:30|min:2|",
|
||||
"alias" => "required|alpha_dash:ascii|max:30|min:2|",
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return response()->json(["errors" => $validator->errors()], 422);
|
||||
}
|
||||
|
||||
$schema = new Schema(
|
||||
id: Id::new(),
|
||||
alias: $request->input("alias"),
|
||||
name: $request->input("name"),
|
||||
revisions: 0,
|
||||
fields: [],
|
||||
);
|
||||
|
||||
SchemaRepo::insert($schema);
|
||||
|
||||
return response()->json(
|
||||
["message" => "Schema created successfully"],
|
||||
201,
|
||||
);
|
||||
}
|
||||
}
|
||||
+119
-76
@@ -10,91 +10,134 @@ use Lucent\Http\Controller\HomeController;
|
||||
use Lucent\Http\Controller\MemberController;
|
||||
use Lucent\Http\Controller\RecordController;
|
||||
use Lucent\Http\Controller\RevisionController;
|
||||
use Lucent\Http\Controller\SchemaController;
|
||||
use Lucent\Http\Controller\SetupController;
|
||||
|
||||
Route::get("/lucent/setup", [SetupController::class, "setup"]);
|
||||
Route::get("/lfs-{disk}/{any}", [FileController::class, "fromDisk"])->where(
|
||||
"any",
|
||||
".*",
|
||||
);
|
||||
|
||||
Route::get('/lucent/setup', [SetupController::class, 'setup']);
|
||||
Route::get('/lfs-{disk}/{any}', [FileController::class, 'fromDisk'])->where('any', '.*');
|
||||
Route::group(
|
||||
[
|
||||
"middleware" => ["web"],
|
||||
"prefix" => "lucent",
|
||||
],
|
||||
function () {
|
||||
Route::middleware(["lucent.guest"])->group(function () {
|
||||
Route::get("/", [AuthController::class, "login"]);
|
||||
|
||||
Route::get("/register", [AuthController::class, "register"]);
|
||||
Route::post("/register", [AuthController::class, "postRegister"]);
|
||||
Route::get("/login", [AuthController::class, "login"]);
|
||||
Route::post("/login", [AuthController::class, "postLogin"]);
|
||||
Route::get("/verify", [AuthController::class, "verify"]);
|
||||
Route::post("/verify", [AuthController::class, "postVerify"]);
|
||||
});
|
||||
|
||||
Route::group([
|
||||
'middleware' => ['web'],
|
||||
'prefix' => "lucent"
|
||||
], function () {
|
||||
Route::middleware("lucent.auth")->group(function () {
|
||||
Route::get("/logout", [AuthController::class, "logout"]);
|
||||
Route::get("/profile", [AccountController::class, "profile"]);
|
||||
Route::post("/account/update-name", [
|
||||
AccountController::class,
|
||||
"updateName",
|
||||
]);
|
||||
Route::post("/account/update-email", [
|
||||
AccountController::class,
|
||||
"updateEmail",
|
||||
]);
|
||||
Route::get("/command-report/{signature}", [
|
||||
BuildController::class,
|
||||
"report",
|
||||
]);
|
||||
Route::get("/command-report-source/{signature}", [
|
||||
BuildController::class,
|
||||
"reportSource",
|
||||
]);
|
||||
Route::post("/command/{signature}", [
|
||||
BuildController::class,
|
||||
"build",
|
||||
]);
|
||||
Route::get("/schemas", [SchemaController::class, "home"]);
|
||||
Route::post("/schemas", [SchemaController::class, "postCreate"]);
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::get("/members/", [MemberController::class, "index"]);
|
||||
Route::post("/members/invite", [MemberController::class, "invite"]);
|
||||
Route::post("/members/update", [MemberController::class, "update"]);
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])
|
||||
->prefix("/records")
|
||||
->group(function () {
|
||||
Route::get("/new", [RecordController::class, "new"]);
|
||||
Route::get("/newInline", [
|
||||
RecordController::class,
|
||||
"newInline",
|
||||
]);
|
||||
Route::get("/suggestions", [
|
||||
RecordController::class,
|
||||
"suggestions",
|
||||
]);
|
||||
Route::get("/{rid}", [RecordController::class, "edit"]);
|
||||
Route::post("/clone/{rid}", [RecordController::class, "clone"]);
|
||||
// Route::get('/editInline/{rid}', [RecordController::class, 'editInline']);
|
||||
Route::get("/{rid}/parents", [
|
||||
RecordController::class,
|
||||
"parents",
|
||||
]);
|
||||
Route::post("/", [RecordController::class, "save"]);
|
||||
Route::post("/status/{status}", [
|
||||
RecordController::class,
|
||||
"status",
|
||||
]);
|
||||
Route::post("/delete", [RecordController::class, "delete"]);
|
||||
Route::post("/{rid}/rollback/{version}", [
|
||||
RecordController::class,
|
||||
"rollback",
|
||||
]);
|
||||
});
|
||||
|
||||
Route::middleware(['lucent.guest'])->group(function () {
|
||||
Route::get('/', [AuthController::class, 'login']);
|
||||
Route::middleware(["lucent.auth"])
|
||||
->prefix("/edges")
|
||||
->group(function () {
|
||||
Route::post("/insert-many", [
|
||||
EdgeController::class,
|
||||
"insertMany",
|
||||
]);
|
||||
});
|
||||
|
||||
Route::get('/register', [AuthController::class, 'register']);
|
||||
Route::post('/register', [AuthController::class, 'postRegister']);
|
||||
Route::get('/login', [AuthController::class, 'login']);
|
||||
Route::post('/login', [AuthController::class, 'postLogin']);
|
||||
Route::get('/verify', [AuthController::class, 'verify']);
|
||||
Route::post('/verify', [AuthController::class, 'postVerify']);
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::get("/records/{rid}/revisions", [
|
||||
RevisionController::class,
|
||||
"index",
|
||||
]);
|
||||
});
|
||||
|
||||
});
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::get("/", [HomeController::class, "home"]);
|
||||
Route::get("/home/records", [HomeController::class, "records"]);
|
||||
});
|
||||
|
||||
Route::middleware('lucent.auth')->group(function () {
|
||||
Route::get('/logout', [AuthController::class, 'logout']);
|
||||
Route::get('/profile', [AccountController::class, 'profile']);
|
||||
Route::post('/account/update-name', [AccountController::class, 'updateName']);
|
||||
Route::post('/account/update-email', [AccountController::class, 'updateEmail']);
|
||||
Route::get('/command-report/{signature}', [BuildController::class, 'report']);
|
||||
Route::get('/command-report-source/{signature}', [BuildController::class, 'reportSource']);
|
||||
Route::post('/command/{signature}', [BuildController::class, 'build']);
|
||||
});
|
||||
|
||||
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::get('/members/', [MemberController::class, 'index']);
|
||||
Route::post('/members/invite', [MemberController::class, 'invite']);
|
||||
Route::post('/members/update', [MemberController::class, 'update']);
|
||||
});
|
||||
|
||||
|
||||
Route::middleware(["lucent.auth"])->prefix("/records")->group(function () {
|
||||
|
||||
Route::get('/new', [RecordController::class, 'new']);
|
||||
Route::get('/newInline', [RecordController::class, 'newInline']);
|
||||
Route::get('/suggestions', [RecordController::class, 'suggestions']);
|
||||
Route::get('/{rid}', [RecordController::class, 'edit']);
|
||||
Route::post('/clone/{rid}', [RecordController::class, 'clone']);
|
||||
// Route::get('/editInline/{rid}', [RecordController::class, 'editInline']);
|
||||
Route::get('/{rid}/parents', [RecordController::class, 'parents']);
|
||||
Route::post('/', [RecordController::class, 'save']);
|
||||
Route::post('/status/{status}', [RecordController::class, 'status']);
|
||||
Route::post('/delete', [RecordController::class, 'delete']);
|
||||
Route::post('/{rid}/rollback/{version}', [RecordController::class, 'rollback']);
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])->prefix("/edges")->group(function () {
|
||||
Route::post('/insert-many', [EdgeController::class, 'insertMany']);
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::get('/records/{rid}/revisions', [RevisionController::class, 'index']);
|
||||
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::get('/', [HomeController::class, 'home']);
|
||||
Route::get('/home/records', [HomeController::class, 'records']);
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])->prefix("/content")->group(function () {
|
||||
Route::get('/{schemaName}', [RecordController::class, 'index']);
|
||||
Route::get('/{schemaName}/csv', [RecordController::class, 'exportCSV']);
|
||||
Route::get('/{schemaName}/emptyTrash', [RecordController::class, 'emptyTrash']);
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::post('/files/upload', [FileController::class, 'upload']);
|
||||
Route::get('/files/download', [FileController::class, 'download']);
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
Route::middleware(["lucent.auth"])
|
||||
->prefix("/content")
|
||||
->group(function () {
|
||||
Route::get("/{schemaName}", [RecordController::class, "index"]);
|
||||
Route::get("/{schemaName}/csv", [
|
||||
RecordController::class,
|
||||
"exportCSV",
|
||||
]);
|
||||
Route::get("/{schemaName}/emptyTrash", [
|
||||
RecordController::class,
|
||||
"emptyTrash",
|
||||
]);
|
||||
});
|
||||
|
||||
Route::middleware(["lucent.auth"])->group(function () {
|
||||
Route::post("/files/upload", [FileController::class, "upload"]);
|
||||
Route::get("/files/download", [FileController::class, "download"]);
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user