diff --git a/config/autoload/doctrine.global.php b/config/autoload/doctrine.global.php index 0324fb96..7e70205a 100644 --- a/config/autoload/doctrine.global.php +++ b/config/autoload/doctrine.global.php @@ -10,6 +10,7 @@ use Ramsey\Uuid\Doctrine\UuidBinaryType; use Ramsey\Uuid\Doctrine\UuidType; use Roave\PsrContainerDoctrine\EntityManagerFactory; +use Frontend\Admin\Entity\EnumAdminStatus; return [ 'dependencies' => [ @@ -43,6 +44,7 @@ UuidType::NAME => UuidType::class, UuidBinaryType::NAME => UuidBinaryType::class, UuidBinaryOrderedTimeType::NAME => UuidBinaryOrderedTimeType::class, + EnumAdminStatus::NAME => EnumAdminStatus::class, ], 'cache' => [ PhpFileCache::class => [ diff --git a/data/doctrine/migrations/Version20231211222316.php b/data/doctrine/migrations/Version20240112105344.php similarity index 89% rename from data/doctrine/migrations/Version20231211222316.php rename to data/doctrine/migrations/Version20240112105344.php index fcdef4b6..9d1ea117 100644 --- a/data/doctrine/migrations/Version20231211222316.php +++ b/data/doctrine/migrations/Version20240112105344.php @@ -10,7 +10,7 @@ /** * Auto-generated Migration: Please modify to your needs! */ -final class Version20231211222316 extends AbstractMigration +final class Version20240112105344 extends AbstractMigration { public function getDescription(): string { @@ -20,7 +20,7 @@ public function getDescription(): string public function up(Schema $schema): void { // this up() migration is auto-generated, please modify it to your needs - $this->addSql('CREATE TABLE admin (uuid BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid_binary_ordered_time)\', identity VARCHAR(100) NOT NULL, firstName VARCHAR(255) NOT NULL, lastName VARCHAR(255) NOT NULL, password VARCHAR(100) NOT NULL, status ENUM(\'pending\', \'active\'), created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_880E0D766A95E9C4 (identity), PRIMARY KEY(uuid)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('CREATE TABLE admin (uuid BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid_binary_ordered_time)\', identity VARCHAR(100) NOT NULL, firstName VARCHAR(255) NOT NULL, lastName VARCHAR(255) NOT NULL, password VARCHAR(100) NOT NULL, status ENUM(active, pending, deleted) DEFAULT \'active\' DEFAULT \'active\' NOT NULL COMMENT \'(DC2Type:admin-enum-status)\', created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_880E0D766A95E9C4 (identity), PRIMARY KEY(uuid)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); $this->addSql('CREATE TABLE admin_roles (userUuid BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid_binary_ordered_time)\', roleUuid BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid_binary_ordered_time)\', INDEX IDX_1614D53DD73087E9 (userUuid), INDEX IDX_1614D53D88446210 (roleUuid), PRIMARY KEY(userUuid, roleUuid)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); $this->addSql('CREATE TABLE admin_login (uuid BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid_binary_ordered_time)\', adminIp VARCHAR(50) DEFAULT NULL, country VARCHAR(50) DEFAULT NULL, continent VARCHAR(50) DEFAULT NULL, organization VARCHAR(50) DEFAULT NULL, deviceType VARCHAR(20) DEFAULT NULL, deviceBrand VARCHAR(20) DEFAULT NULL, deviceModel VARCHAR(40) DEFAULT NULL, isMobile ENUM(\'yes\', \'no\'), osName VARCHAR(20) DEFAULT NULL, osVersion VARCHAR(20) DEFAULT NULL, osPlatform VARCHAR(20) DEFAULT NULL, clientType VARCHAR(20) DEFAULT NULL, clientName VARCHAR(40) DEFAULT NULL, clientEngine VARCHAR(20) DEFAULT NULL, clientVersion VARCHAR(20) DEFAULT NULL, loginStatus ENUM(\'success\', \'fail\'), identity VARCHAR(100) DEFAULT NULL, created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', PRIMARY KEY(uuid)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); $this->addSql('CREATE TABLE admin_role (uuid BINARY(16) NOT NULL COMMENT \'(DC2Type:uuid_binary_ordered_time)\', name VARCHAR(30) NOT NULL, created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_7770088A5E237E06 (name), PRIMARY KEY(uuid)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); diff --git a/src/Admin/src/Entity/Admin.php b/src/Admin/src/Entity/Admin.php index 94aaaab0..39961242 100644 --- a/src/Admin/src/Entity/Admin.php +++ b/src/Admin/src/Entity/Admin.php @@ -20,9 +20,11 @@ class Admin extends AbstractEntity implements AdminInterface { public const STATUS_ACTIVE = 'active'; public const STATUS_INACTIVE = 'pending'; + public const STATUS_DELETED = 'deleted'; public const STATUSES = [ self::STATUS_ACTIVE, self::STATUS_INACTIVE, + self::STATUS_DELETED ]; #[ORM\Column(name: "identity", type: "string", length: 100, unique: true, nullable: false)] @@ -39,10 +41,10 @@ class Admin extends AbstractEntity implements AdminInterface #[ORM\Column( name: "status", - type: "string", + type: "admin-enum-status", length: 20, nullable: false, - columnDefinition: "ENUM('pending', 'active')" + options: ["values" => self::STATUSES, "default" => self::STATUS_ACTIVE] )] protected string $status = self::STATUS_ACTIVE; diff --git a/src/Admin/src/Entity/EnumAdminStatus.php b/src/Admin/src/Entity/EnumAdminStatus.php new file mode 100644 index 00000000..c89795f4 --- /dev/null +++ b/src/Admin/src/Entity/EnumAdminStatus.php @@ -0,0 +1,32 @@ +