DbMasterData
in package
Class DbMasterData
This class provides methods for interacting with database metadata and performing operations on tables and their records. It includes functionality for retrieving table metadata, column names, and data items, as well as handling relationships between tables and enforcing column-specific rules.
Table of Contents
Properties
- $config : Config
- $mySql : MySql
- $defaultColumns : array<string|int, mixed>
- $defaultColumnsRules : array<string|int, mixed>
- $defaultReadonlyColumns : array<string|int, mixed>
- $factColumns : array<string|int, mixed>
- $HTML_MYSQL_TYPE_RULES : array<string|int, mixed>
Methods
- __construct() : mixed
- getIdByCode() : array{id: int}|null
- Get `id` of item by Code Value - Returns the first matching row's `id`, or null if code is null or not found.
- getItemByIdAppAdmin() : array<string|int, mixed>
- getRules() : array<string, string>
- Builds per-column validation rules for a table using INFORMATION_SCHEMA and local mappings.
- getTableAppAdmin() : array<string|int, mixed>
- getTablesAppAdmin() : array<string|int, mixed>
- getUniqueKeyColumns() : array<string|int, mixed>
- refreshGroupedLinkedTablesModel() : mixed
- save() : array<string|int, mixed>
- findFreeNTupleStrings() : array<int, string>
- Finds free (unused) N-tuple strings by subtracting the used set from all possible combinations.
- getAllowedTables() : array<string|int, mixed>
- getCodeIdPairs() : mixed
- getColumnNames() : array<string|int, mixed>
- getForeignKeysStructure() : array<string|int, mixed>
- getLinkedTablesModel() : array<string|int, mixed>
- getPrimaryKeyColumn() : string
- getReadonlyFields() : array<string|int, mixed>
- getUsedAndFreeCodes() : mixed
- isColumnNullable() : bool
- Checks whether a given column in the configured MySQL schema is nullable.
- makeUniqueNTupleStrings() : array<string|int, mixed>
- sanitizeSqlIdentifier() : string
- Validates a SQL identifier (table/column) against a conservative pattern.
Properties
$config
protected
Config
$config
$mySql
protected
MySql
$mySql
$defaultColumns
private
array<string|int, mixed>
$defaultColumns
= ['id', 'sort_order', 'status', 'createddatetime', 'modifieddatetime', 'createdby', 'modifiedby']
$defaultColumnsRules
private
array<string|int, mixed>
$defaultColumnsRules
= [
'id' => 'int|default:-1',
//if missing, then no error error from Validator (required but passed as empty string (null->empty conversion by Validator))
'table_name_code' => 'string|required|default:to be set by additional logic and table code_range',
// Rest is done by logic in methods
'sort_order' => 'int|nullable',
'status' => 'string|required|in:active,test,do not display,under development,to be deleted,deactivated',
'createddatetime' => 'string|default:to be set by system or pass through',
//|date:Y-m-d H:i:s
'modifieddatetime' => 'string|default:to be set by system or pass through',
//|date:Y-m-d H:i:s
'createdby' => 'string|default:to be set by system or pass through',
'modifiedby' => 'string|default:to be set by system or pass through',
]
$defaultReadonlyColumns
private
array<string|int, mixed>
$defaultReadonlyColumns
= [
//'id',
'createddatetime',
'modifieddatetime',
'createdby',
'modifiedby',
]
$factColumns
private
array<string|int, mixed>
$factColumns
= ['qty', 'amount_cur', 'amount_pct', 'amount_text']
$HTML_MYSQL_TYPE_RULES
private
array<string|int, mixed>
$HTML_MYSQL_TYPE_RULES
= ['bigint' => 'int', 'int' => 'int', 'float' => 'float', 'varchar' => 'string', 'text' => 'string', 'tinyint' => 'bool', 'datetime' => 'string']
Methods
__construct()
public
__construct(MySql $mySql, Config $config) : mixed
Parameters
getIdByCode()
Get `id` of item by Code Value - Returns the first matching row's `id`, or null if code is null or not found.
public
getIdByCode(array{foreign_table_name: non-empty-string, column_name: non-empty-string, code_value: scalar|null} $data) : array{id: int}|null
Parameters
- $data : array{foreign_table_name: non-empty-string, column_name: non-empty-string, code_value: scalar|null}
Tags
Return values
array{id: int}|null —Returns ['id' =>
getItemByIdAppAdmin()
public
getItemByIdAppAdmin(array<string|int, mixed> $data) : array<string|int, mixed>
Parameters
- $data : array<string|int, mixed>
Return values
array<string|int, mixed>getRules()
Builds per-column validation rules for a table using INFORMATION_SCHEMA and local mappings.
public
getRules(non-empty-string $tableName) : array<string, string>
Validatopn Rules are according to convention of DataValidator.php
Workflow:
- Reads COLUMN_NAME/DATA_TYPE/CHARACTER_MAXIMUM_LENGTH/IS_NULLABLE from INFORMATION_SCHEMA.
- Seeds rules from $this->defaultColumnsRules (incl. "