mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-30 20:22:32 +00:00
43 lines
1.8 KiB
SQL
43 lines
1.8 KiB
SQL
# Updating DB from 69-70 -FunnyMan3595
|
|
# Adds the admin_ranks table
|
|
|
|
# Create the new table.
|
|
CREATE TABLE `admin_ranks` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
|
|
`default_permissions` int(16) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY (`id`),
|
|
KEY `name` (`name`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=99 DEFAULT CHARSET=utf8mb4;
|
|
|
|
# Create official ranks for every existing display rank, with the minimum common permissions.
|
|
INSERT INTO admin_ranks (name, default_permissions)
|
|
SELECT admin_rank, BIT_AND(flags) FROM admin
|
|
# Admins in the "Removed" rank don't actually exist according to the old code, so don't give them a rank. Not having a rank will also stop them from getting extra_permissions later.
|
|
WHERE admin_rank != "Removed"
|
|
GROUP BY admin_rank;
|
|
|
|
# Add new columns to admin table.
|
|
ALTER TABLE admin
|
|
ADD COLUMN `display_rank` varchar(32) COLLATE utf8mb4_unicode_ci,
|
|
ADD COLUMN `permissions_rank` int(11) COMMENT 'Foreign key for admin_ranks.id',
|
|
ADD COLUMN `extra_permissions` int(16) NOT NULL DEFAULT '0',
|
|
ADD COLUMN `removed_permissions` int(16) NOT NULL DEFAULT '0';
|
|
|
|
# Set the rank and any extra_permissions for each admin.
|
|
# There won't be any removed_permissions because we took the minimum common permissions earlier.
|
|
# We also leave display_rank blank, since admin_ranks.name matches their old admin_rank.
|
|
UPDATE admin JOIN admin_ranks ON admin.admin_rank = admin_ranks.name
|
|
SET
|
|
admin.permissions_rank = admin_ranks.id,
|
|
admin.extra_permissions = admin.flags & ~admin_ranks.default_permissions;
|
|
|
|
# Drop the old columns from the admin table.
|
|
ALTER TABLE admin
|
|
DROP COLUMN admin_rank,
|
|
DROP COLUMN level,
|
|
DROP COLUMN flags;
|
|
|
|
# Drop the lastadminrank column from the player table.
|
|
ALTER TABLE player DROP COLUMN lastadminrank;
|