61 lines
2.7 KiB
PHP
61 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Database\Migrations;
|
|
|
|
use CodeIgniter\Database\Migration;
|
|
|
|
class AddInviteFieldsToOrganizationUsers extends Migration
|
|
{
|
|
public function up()
|
|
{
|
|
// Добавление полей для системы приглашений
|
|
$fields = [
|
|
'invite_token' => [
|
|
'type' => 'VARCHAR',
|
|
'constraint' => 64,
|
|
'null' => true,
|
|
'after' => 'role',
|
|
'comment' => 'Токен для принятия приглашения',
|
|
],
|
|
'invited_by' => [
|
|
'type' => 'INT',
|
|
'unsigned' => true,
|
|
'null' => true,
|
|
'after' => 'invite_token',
|
|
'comment' => 'ID пользователя, который отправил приглашение',
|
|
],
|
|
'invited_at' => [
|
|
'type' => 'DATETIME',
|
|
'null' => true,
|
|
'after' => 'invited_by',
|
|
'comment' => 'Дата отправки приглашения',
|
|
],
|
|
'status' => [
|
|
'type' => 'ENUM',
|
|
'values' => ['active', 'pending', 'blocked'],
|
|
'default' => 'pending',
|
|
'after' => 'invited_at',
|
|
'comment' => 'Статус участия в организации',
|
|
],
|
|
];
|
|
|
|
$this->db->simpleQuery("ALTER TABLE organization_users ADD COLUMN status ENUM('active', 'pending', 'blocked') DEFAULT 'pending' AFTER invited_at");
|
|
$this->db->simpleQuery("ALTER TABLE organization_users ADD COLUMN invite_token VARCHAR(64) NULL AFTER role");
|
|
$this->db->simpleQuery("ALTER TABLE organization_users ADD COLUMN invited_by INT UNSIGNED NULL AFTER invite_token");
|
|
$this->db->simpleQuery("ALTER TABLE organization_users ADD COLUMN invited_at DATETIME NULL AFTER invited_by");
|
|
|
|
// Индекс для быстрого поиска по токену
|
|
$this->db->simpleQuery("CREATE INDEX idx_org_users_token ON organization_users(invite_token)");
|
|
}
|
|
|
|
public function down()
|
|
{
|
|
// Удаление полей и индекса при откате миграции
|
|
$this->db->simpleQuery("DROP INDEX idx_org_users_token ON organization_users");
|
|
$this->db->simpleQuery("ALTER TABLE organization_users DROP COLUMN invited_at");
|
|
$this->db->simpleQuery("ALTER TABLE organization_users DROP COLUMN invited_by");
|
|
$this->db->simpleQuery("ALTER TABLE organization_users DROP COLUMN invite_token");
|
|
$this->db->simpleQuery("ALTER TABLE organization_users DROP COLUMN status");
|
|
}
|
|
}
|