mysimulation/server/FSO.Server.Database/DatabaseScripts/changes/0006_outfits.sql
Tony Bark 22191ce648 Removed NioTSO client and server
- NioTSO client isn't needed because we're using RayLib
- Added FreeSO's API server to handle most backend operations
2024-05-01 02:55:43 -04:00

47 lines
No EOL
2.3 KiB
SQL
Executable file

CREATE TABLE IF NOT EXISTS `fso_outfits` (
`outfit_id` int(11) NOT NULL AUTO_INCREMENT,
`avatar_owner` int(10) unsigned DEFAULT NULL,
`object_owner` int(11) unsigned DEFAULT NULL,
`asset_id` bigint(20) unsigned DEFAULT NULL,
`sale_price` int(11) NOT NULL,
`purchase_price` int(11) NOT NULL,
`outfit_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'See VMPersonSuits',
`outfit_source` enum('cas','rack') NOT NULL DEFAULT 'cas',
PRIMARY KEY (`outfit_id`),
KEY `FK_fso_outfits_fso_avatars` (`avatar_owner`),
KEY `FK_fso_outfits_fso_objects` (`object_owner`),
CONSTRAINT `FK_fso_outfits_fso_avatars` FOREIGN KEY (`avatar_owner`) REFERENCES `fso_avatars` (`avatar_id`) ON DELETE CASCADE,
CONSTRAINT `FK_fso_outfits_fso_objects` FOREIGN KEY (`object_owner`) REFERENCES `fso_objects` (`object_id`) ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
CREATE TRIGGER `fso_outfits_before_insert` BEFORE INSERT ON `fso_outfits` FOR EACH ROW BEGIN
IF NEW.object_owner IS NOT NULL THEN
IF (SELECT COUNT(*) FROM fso_outfits o WHERE NEW.object_owner = o.object_owner) >= 20 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot have more than 20 outfits in a rack.';
END IF;
END IF;
END;
CREATE TRIGGER `fso_outfits_before_update` BEFORE UPDATE ON `fso_outfits` FOR EACH ROW BEGIN
IF NEW.avatar_owner IS NOT NULL THEN
IF (SELECT COUNT(*) FROM fso_outfits o WHERE NEW.avatar_owner = o.avatar_owner AND o.outfit_type = NEW.outfit_type) >= 5 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot have more than 5 outfits per category in backpack.';
END IF;
END IF;
END;
-- Migrate existing daywear --
INSERT INTO fso_outfits (avatar_owner, asset_id, sale_price, purchase_price, outfit_type, outfit_source)
SELECT avatar_id, body, 0, 0, 0, 'cas' FROM fso_avatars;
-- Give everyone default sleepswear --
INSERT INTO fso_outfits (avatar_owner, asset_id, sale_price, purchase_price, outfit_type, outfit_source)
SELECT avatar_id, if(gender = 'male', CAST(0x5440000000D as UNSIGNED), CAST(0x5150000000D as UNSIGNED)), 0, 0, 5, 'cas' FROM fso_avatars;
-- Give everyone default swimwear --
INSERT INTO fso_outfits (avatar_owner, asset_id, sale_price, purchase_price, outfit_type, outfit_source)
SELECT avatar_id, if(gender = 'male', CAST(0x5470000000D as UNSIGNED), CAST(0x620000000D as UNSIGNED)), 0, 0, 2, 'cas' FROM fso_avatars;