table('ppe_items', [ 'id' => false, 'primary_key' => ['id'], 'collation' => 'utf8mb4_unicode_ci', 'encoding' => 'utf8mb4', ]); $table ->addColumn('id', 'integer', [ 'identity' => true, 'signed' => false, ]) ->addColumn('name', 'string', [ 'limit' => 255, 'null' => false, ]) ->addColumn('description', 'text', [ 'null' => true, 'default' => null, ]) ->addColumn('category', 'string', [ 'limit' => 100, 'null' => true, 'default' => null, 'comment' => 'PPE category, for example Head, Hands, Eyes, Feet, Respiratory', ]) ->addColumn('photo', 'string', [ 'limit' => 255, 'null' => true, 'default' => null, 'comment' => 'PPE image path or filename', ]) ->addColumn('standard_reference', 'string', [ 'limit' => 255, 'null' => true, 'default' => null, 'comment' => 'Reference standard, for example EN ISO 20345', ]) ->addColumn('validity_months', 'integer', [ 'signed' => false, 'null' => true, 'default' => null, 'comment' => 'Default validity in months after assignment', ]) ->addColumn('sort_order', 'integer', [ 'signed' => false, 'null' => false, 'default' => 999, ]) ->addColumn('is_active', 'boolean', [ 'null' => false, 'default' => 1, ]) ->addColumn('created_at', 'timestamp', [ 'null' => true, 'default' => 'CURRENT_TIMESTAMP', ]) ->addColumn('updated_at', 'timestamp', [ 'null' => true, 'default' => 'CURRENT_TIMESTAMP', 'update' => 'CURRENT_TIMESTAMP', ]) ->addIndex(['category'], [ 'name' => 'idx_ppe_items_category', ]) ->addIndex(['is_active'], [ 'name' => 'idx_ppe_items_is_active', ]) ->addIndex(['sort_order'], [ 'name' => 'idx_ppe_items_sort_order', ]) ->create(); } }