first commit
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
ALTER TABLE `devx_characters`
|
||||
ADD COLUMN IF NOT EXISTS `phone_number` VARCHAR(16) NULL AFTER `model`;
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS `uq_devx_character_phone`
|
||||
ON `devx_characters` (`phone_number`);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_bans` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`license` VARCHAR(80) NOT NULL,
|
||||
`player_name` VARCHAR(96) NULL,
|
||||
`reason` VARCHAR(255) NOT NULL,
|
||||
`banned_by` VARCHAR(96) NOT NULL,
|
||||
`expires_at` DATETIME NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`revoked_at` DATETIME NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_devx_bans_license` (`license`),
|
||||
KEY `idx_devx_bans_active` (`license`, `revoked_at`, `expires_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_heist_progress` (
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`drill_done` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`card_done` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`vehicle_done` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`character_id`),
|
||||
CONSTRAINT `fk_devx_heist_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_casino_daily` (
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`last_spin` DATETIME NULL,
|
||||
`total_spins` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`character_id`),
|
||||
CONSTRAINT `fk_devx_casino_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DevX RP v0.4.0
|
||||
-- Keine neue Tabelle erforderlich.
|
||||
-- devx_housing synchronisiert die zusätzlichen Apartmentdatensätze beim Start.
|
||||
@@ -0,0 +1,38 @@
|
||||
-- DevX RP v0.4.1 migration. Resources also create these structures at runtime.
|
||||
SET @has_contact_type := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'devx_phone_contacts' AND COLUMN_NAME = 'contact_type'
|
||||
);
|
||||
SET @sql_contact_type := IF(@has_contact_type = 0,
|
||||
"ALTER TABLE devx_phone_contacts ADD COLUMN contact_type VARCHAR(32) NOT NULL DEFAULT 'player' AFTER phone_number",
|
||||
'SELECT 1');
|
||||
PREPARE stmt_contact_type FROM @sql_contact_type; EXECUTE stmt_contact_type; DEALLOCATE PREPARE stmt_contact_type;
|
||||
|
||||
SET @has_metadata := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'devx_phone_contacts' AND COLUMN_NAME = 'metadata'
|
||||
);
|
||||
SET @sql_metadata := IF(@has_metadata = 0,
|
||||
'ALTER TABLE devx_phone_contacts ADD COLUMN metadata LONGTEXT NULL AFTER contact_type',
|
||||
'SELECT 1');
|
||||
PREPARE stmt_metadata FROM @sql_metadata; EXECUTE stmt_metadata; DEALLOCATE PREPARE stmt_metadata;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS devx_casino_wallets (
|
||||
character_id BIGINT UNSIGNED NOT NULL,
|
||||
chips BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (character_id),
|
||||
CONSTRAINT fk_devx_casino_wallet_character FOREIGN KEY (character_id)
|
||||
REFERENCES devx_characters (id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS devx_club_relations (
|
||||
character_id BIGINT UNSIGNED NOT NULL,
|
||||
relation_key VARCHAR(32) NOT NULL,
|
||||
satisfaction TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
contact_unlocked TINYINT(1) NOT NULL DEFAULT 0,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (character_id, relation_key),
|
||||
CONSTRAINT fk_devx_club_character FOREIGN KEY (character_id)
|
||||
REFERENCES devx_characters (id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,7 @@
|
||||
-- DevX RP v0.4.3
|
||||
-- Entfernt ausschließlich Apartment-Eigentümer, deren Charakter fehlt oder
|
||||
-- bereits gelöscht wurde. Aktive Charaktere und deren Apartments bleiben erhalten.
|
||||
DELETE po
|
||||
FROM devx_property_owners po
|
||||
LEFT JOIN devx_characters c ON c.id = po.character_id
|
||||
WHERE c.id IS NULL OR c.deleted_at IS NOT NULL;
|
||||
+159
@@ -0,0 +1,159 @@
|
||||
SET NAMES utf8mb4;
|
||||
SET time_zone = '+00:00';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_characters` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`owner_license` VARCHAR(80) NOT NULL,
|
||||
`slot` TINYINT UNSIGNED NOT NULL,
|
||||
`first_name` VARCHAR(32) NOT NULL,
|
||||
`last_name` VARCHAR(32) NOT NULL,
|
||||
`date_of_birth` DATE NOT NULL,
|
||||
`sex` ENUM('m','f','x') NOT NULL DEFAULT 'x',
|
||||
`model` VARCHAR(64) NOT NULL DEFAULT 'mp_m_freemode_01',
|
||||
`phone_number` VARCHAR(16) NULL,
|
||||
`cash` BIGINT NOT NULL DEFAULT 150,
|
||||
`position` LONGTEXT NULL,
|
||||
`metadata` LONGTEXT NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted_at` TIMESTAMP NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uq_devx_character_slot` (`owner_license`, `slot`),
|
||||
UNIQUE KEY `uq_devx_character_phone` (`phone_number`),
|
||||
KEY `idx_devx_character_owner` (`owner_license`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_bank_accounts` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`account_number` VARCHAR(24) NOT NULL,
|
||||
`account_name` VARCHAR(80) NOT NULL,
|
||||
`account_type` ENUM('personal','business','government') NOT NULL DEFAULT 'personal',
|
||||
`balance` BIGINT NOT NULL DEFAULT 500,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uq_devx_account_number` (`account_number`),
|
||||
KEY `idx_devx_account_character` (`character_id`),
|
||||
CONSTRAINT `fk_devx_account_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_bank_transactions` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`account_id` BIGINT UNSIGNED NOT NULL,
|
||||
`direction` ENUM('credit','debit') NOT NULL,
|
||||
`amount` BIGINT UNSIGNED NOT NULL,
|
||||
`balance_after` BIGINT NOT NULL,
|
||||
`counterparty` VARCHAR(80) NULL,
|
||||
`reference` VARCHAR(140) NOT NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_devx_transaction_account_date` (`account_id`, `created_at`),
|
||||
CONSTRAINT `fk_devx_transaction_account`
|
||||
FOREIGN KEY (`account_id`) REFERENCES `devx_bank_accounts` (`id`)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_properties` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`property_key` VARCHAR(64) NOT NULL,
|
||||
`label` VARCHAR(80) NOT NULL,
|
||||
`price` BIGINT UNSIGNED NOT NULL,
|
||||
`property_type` ENUM('apartment','house','business') NOT NULL DEFAULT 'apartment',
|
||||
`entry_data` LONGTEXT NOT NULL,
|
||||
`interior_data` LONGTEXT NOT NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uq_devx_property_key` (`property_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_property_owners` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`property_id` BIGINT UNSIGNED NOT NULL,
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`purchase_price` BIGINT UNSIGNED NOT NULL,
|
||||
`purchased_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uq_devx_property_owner_property` (`property_id`),
|
||||
KEY `idx_devx_property_owner_character` (`character_id`),
|
||||
CONSTRAINT `fk_devx_owner_property`
|
||||
FOREIGN KEY (`property_id`) REFERENCES `devx_properties` (`id`)
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_devx_owner_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_phone_contacts` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`contact_name` VARCHAR(64) NOT NULL,
|
||||
`phone_number` VARCHAR(24) NOT NULL,
|
||||
`contact_type` VARCHAR(32) NOT NULL DEFAULT 'player',
|
||||
`metadata` LONGTEXT NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_devx_phone_contact_character` (`character_id`),
|
||||
CONSTRAINT `fk_devx_contact_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_bans` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`license` VARCHAR(80) NOT NULL,
|
||||
`player_name` VARCHAR(96) NULL,
|
||||
`reason` VARCHAR(255) NOT NULL,
|
||||
`banned_by` VARCHAR(96) NOT NULL,
|
||||
`expires_at` DATETIME NULL,
|
||||
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`revoked_at` DATETIME NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_devx_bans_license` (`license`),
|
||||
KEY `idx_devx_bans_active` (`license`, `revoked_at`, `expires_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_heist_progress` (
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`drill_done` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`card_done` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`vehicle_done` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`character_id`),
|
||||
CONSTRAINT `fk_devx_heist_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_casino_daily` (
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`last_spin` DATETIME NULL,
|
||||
`total_spins` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`character_id`),
|
||||
CONSTRAINT `fk_devx_casino_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_casino_wallets` (
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`chips` BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`character_id`),
|
||||
CONSTRAINT `fk_devx_casino_wallet_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `devx_club_relations` (
|
||||
`character_id` BIGINT UNSIGNED NOT NULL,
|
||||
`relation_key` VARCHAR(32) NOT NULL,
|
||||
`satisfaction` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`contact_unlocked` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`character_id`, `relation_key`),
|
||||
CONSTRAINT `fk_devx_club_character`
|
||||
FOREIGN KEY (`character_id`) REFERENCES `devx_characters` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
Reference in New Issue
Block a user