ModelTableConfig.php

PHP

Path: src/Database/ModelTableConfig.php

<?php

namespace mini\Database;

/**
 * Per-table model configuration for VirtualDatabase::registerModel()
 *
 * Stores the model class and optional scope overrides. When a scope is null,
 * VDB calls the model's default method at execution time (lazy evaluation).
 */
final class ModelTableConfig
{
    /**
     * @param class-string<Model> $modelClass The entity class
     * @param Query|null $readable Row-level read scope (null = call $modelClass::query())
     * @param Query|null $updatable Row-level update scope (null = call $modelClass::updatable())
     * @param Query|null $deletable Row-level delete scope (null = call $modelClass::deletable())
     * @param bool|null $allowInsert Insert gate (null = call can(Ability::Create, $modelClass))
     */
    public function __construct(
        public readonly string $modelClass,
        public readonly ?Query $readable = null,
        public readonly ?Query $updatable = null,
        public readonly ?Query $deletable = null,
        public readonly ?bool $allowInsert = null,
    ) {}
}