schemas and fields

This commit is contained in:
2026-01-07 23:49:55 +02:00
parent 874ddd33e2
commit 53f9548966
17 changed files with 573 additions and 240 deletions
+27
View File
@@ -0,0 +1,27 @@
<?php namespace Lucent\Core\Repository;
use Illuminate\Support\Facades\DB;
use Lucent\Core\Schema\Data\Schema;
use Lucent\Core\Schema\SchemaModule;
class SchemaRepo
{
const TABLE_NAME = "schemas";
/**
* @@return Schema[]
*/
public static function all(): array
{
return DB::table(self::TABLE_NAME)
->orderBy("name")
->get()
->map(SchemaModule::fromDb(...))
->toArray();
}
public static function insert(Schema $schema): void
{
DB::table(self::TABLE_NAME)->insert(SchemaModule::toDb($schema));
}
}
+2 -1
View File
@@ -4,7 +4,8 @@ class Field
{
public function __construct(
public string $id,
public string $label,
public string $alias,
public string $name,
public string $type,
) {}
}
+6 -2
View File
@@ -4,12 +4,16 @@ class Schema
{
/**
* @param string $id
* @param string $label
* @param string $alias
* @param string $name
* @param int $revisions
* @param Field[] $fields
*/
public function __construct(
public string $id,
public string $label,
public string $alias,
public string $name,
public int $revisions,
public array $fields,
) {}
}
+26
View File
@@ -0,0 +1,26 @@
<?php namespace Lucent\Core\Schema;
use Lucent\Core\Schema\Data\Field;
class FieldModule
{
public static function fromArray(array $data): Field
{
return new Field(
id: $data["id"],
alias: $data["alias"],
name: $data["name"],
type: $data["type"],
);
}
public static function toDb(Field $field): array
{
return [
"id" => $field->id,
"alias" => $field->alias,
"name" => $field->name,
"type" => $field->type,
];
}
}
+32 -2
View File
@@ -1,9 +1,39 @@
<?php namespace Lucent\Core\Schema;
use Lucent\Core\Schema\Data\Schema;
use stdClass;
class SchemaModule
{
public function __construct()
public static function fromArray(array $data): Schema
{
// Constructor logic here
return new Schema(
id: $data["id"],
alias: $data["alias"],
name: $data["label"],
revisions: $data["revisions"],
fields: array_map(FieldModule::fromArray(...), $data["fields"]),
);
}
public static function fromDb(stdClass $data): Schema
{
return new Schema(
id: data_get($data, "id"),
alias: data_get($data, "alias"),
name: data_get($data, "name"),
revisions: data_get($data, "revisions"),
fields: [],
);
}
public static function toDb(Schema $schema): array
{
return [
"id" => $schema->id,
"alias" => $schema->alias,
"name" => $schema->name,
"revisions" => $schema->revisions,
];
}
}