schemas and fields
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,8 @@ class Field
|
||||
{
|
||||
public function __construct(
|
||||
public string $id,
|
||||
public string $label,
|
||||
public string $alias,
|
||||
public string $name,
|
||||
public string $type,
|
||||
) {}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
) {}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user