178 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 
 | |
| if (GetResourceState("oxmysql") == "missing") then return end
 | |
| 
 | |
| local tableName, colName = nil, nil
 | |
| local function GetOwnedVehiclesTableName()
 | |
| 	if (tableName ~= nil) then
 | |
| 		return tableName
 | |
| 	end
 | |
| 
 | |
| 	tableName = (GetResourceState("es_extended") ~= "missing") and "owned_vehicles" or "player_vehicles"
 | |
| 	return tableName
 | |
| end
 | |
| local function GetStoredColumnName()
 | |
| 	if (colName ~= nil) then
 | |
| 		return colName
 | |
| 	end
 | |
| 
 | |
| 	colName = (GetResourceState("es_extended") ~= "missing") and "stored" or "state"
 | |
| 	return colName
 | |
| end
 | |
| 
 | |
| local oxmysql = exports["oxmysql"]
 | |
| 
 | |
| local function DoesColumnExist(colName)
 | |
| 	return oxmysql:scalar_async([[
 | |
| 		SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`COLUMNS`
 | |
| 			WHERE `TABLE_SCHEMA` = DATABASE() AND `TABLE_NAME` = ? AND `COLUMN_NAME` = ?;
 | |
| 	]], { "vehicle_parking", colName }) > 0
 | |
| end
 | |
| 
 | |
| Storage.Create = function()
 | |
| 	oxmysql:update_async([[
 | |
| 		CREATE TABLE IF NOT EXISTS `vehicle_parking` (
 | |
| 			`id` varchar(16) NOT NULL,
 | |
| 			`model` int(11) NOT NULL,
 | |
| 			`type` varchar(16) NOT NULL,
 | |
| 			`status` text NOT NULL,
 | |
| 			`tuning` text NOT NULL,
 | |
| 			`extraValues` text NOT NULL DEFAULT '[]',
 | |
| 			`stateBags` longtext NOT NULL DEFAULT '[]',
 | |
| 			`bucket` int(11) NOT NULL DEFAULT '0',
 | |
| 			`posX` float NOT NULL,
 | |
| 			`posY` float NOT NULL,
 | |
| 			`posZ` float NOT NULL,
 | |
| 			`rotX` float NOT NULL,
 | |
| 			`rotY` float NOT NULL,
 | |
| 			`rotZ` float NOT NULL,
 | |
| 			`lastUpdate` int(11) NOT NULL DEFAULT '0',
 | |
| 			`initialPlayer` varchar(50),
 | |
| 			`lastPlayer` varchar(50),
 | |
| 			PRIMARY KEY (`id`)
 | |
| 		);
 | |
| 	]])
 | |
| 
 | |
| 	-- v3 backwards compatibility
 | |
| 	if (not DoesColumnExist("bucket")) then
 | |
| 		oxmysql:update_async([[
 | |
| 			ALTER TABLE `vehicle_parking`
 | |
| 				ADD COLUMN `bucket` INT(11) NOT NULL DEFAULT 0 AFTER `stateBags`;
 | |
| 		]])
 | |
| 	end
 | |
| 	if (not DoesColumnExist("initialPlayer")) then
 | |
| 		oxmysql:update_async([[
 | |
| 			ALTER TABLE `vehicle_parking`
 | |
| 				ADD COLUMN `initialPlayer` varchar(50) AFTER `lastUpdate`;
 | |
| 		]])
 | |
| 	end
 | |
| 	if (not DoesColumnExist("lastPlayer")) then
 | |
| 		oxmysql:update_async([[
 | |
| 			ALTER TABLE `vehicle_parking`
 | |
| 				ADD COLUMN `lastPlayer` varchar(50) AFTER `initialPlayer`;
 | |
| 		]])
 | |
| 	end
 | |
| 	if (not DoesColumnExist("extraValues")) then
 | |
| 		oxmysql:update_async([[
 | |
| 			ALTER TABLE `vehicle_parking`
 | |
| 				ADD COLUMN `extraValues` TEXT NOT NULL DEFAULT '[]' AFTER `tuning`;
 | |
| 		]])
 | |
| 	end
 | |
| 	oxmysql:update_async([[
 | |
| 		ALTER TABLE `vehicle_parking`
 | |
| 			MODIFY COLUMN `stateBags` longtext NOT NULL DEFAULT '[]';
 | |
| 	]])
 | |
| end
 | |
| 
 | |
| Storage.GetAllVehicles = function()
 | |
| 	return oxmysql:query_async([[
 | |
| 		SELECT `id`, `model`, `type`, `status`, `tuning`, `extraValues`, `stateBags`, `bucket`, `posX`, `posY`, `posZ`, `rotX`, `rotY`, `rotZ`, `lastUpdate`, `initialPlayer`, `lastPlayer`
 | |
| 			FROM `vehicle_parking`;
 | |
| 	]])
 | |
| end
 | |
| 
 | |
| Storage.DeleteById = function(id)
 | |
| 	oxmysql:update([[
 | |
| 		DELETE FROM `vehicle_parking`
 | |
| 			WHERE `id` = ?;
 | |
| 	]], { id })
 | |
| end
 | |
| 
 | |
| Storage.DeleteByIds = function(formattedIds)
 | |
| 	oxmysql:update(([[
 | |
| 		DELETE FROM `vehicle_parking`
 | |
| 			WHERE `id` IN (%s);
 | |
| 	]]):format(formattedIds))
 | |
| end
 | |
| 
 | |
| Storage.StoreVehicleInGarage = function(params)
 | |
| 	oxmysql:update(([[
 | |
| 		UPDATE `%s` SET `%s` = 1
 | |
| 			WHERE `plate` = ? OR `plate` = ?;
 | |
| 	]]):format(GetOwnedVehiclesTableName(), GetStoredColumnName()), params)
 | |
| end
 | |
| 
 | |
| Storage.InsertVehicle = function(params)
 | |
| 	oxmysql:insert([[
 | |
| 		INSERT INTO `vehicle_parking` (`id`, `model`, `type`, `status`, `tuning`, `extraValues`, `stateBags`, `bucket`, `posX`, `posY`, `posZ`, `rotX`, `rotY`, `rotZ`, `lastUpdate`, `initialPlayer`, `lastPlayer`)
 | |
| 			VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
 | |
| 	]], params)
 | |
| end
 | |
| 
 | |
| Storage.UpdateVehicle = function(params)
 | |
| 	oxmysql:update([[
 | |
| 		UPDATE `vehicle_parking`
 | |
| 			SET `status` = ?, `tuning` = ?, `extraValues` = ?,
 | |
| 				`stateBags` = ?,
 | |
| 				`bucket` = ?,
 | |
| 				`posX` = ?, `posY` = ?, `posZ` = ?,
 | |
| 				`rotX` = ?, `rotY` = ?, `rotZ` = ?,
 | |
| 				`lastUpdate` = ?,
 | |
| 				`lastPlayer` = ?
 | |
| 			WHERE `id` = ?;
 | |
| 	]], params)
 | |
| end
 | |
| 
 | |
| Storage.UpdateBucket = function(bucket, id)
 | |
| 	oxmysql:update([[
 | |
| 		UPDATE `vehicle_parking`
 | |
| 			SET `bucket` = ?
 | |
| 			WHERE `id` = ?;
 | |
| 	]], { bucket, id })
 | |
| end
 | |
| 
 | |
| Storage.UpdateStatus = function(status, id)
 | |
| 	oxmysql:update([[
 | |
| 		UPDATE `vehicle_parking`
 | |
| 			SET `status` = ?
 | |
| 			WHERE `id` = ?;
 | |
| 	]], { status, id })
 | |
| end
 | |
| 
 | |
| Storage.UpdatePosition = function(position, rotation, id)
 | |
| 	oxmysql:update([[
 | |
| 		UPDATE `vehicle_parking`
 | |
| 			SET `posX` = ?, `posY` = ?, `posZ` = ?,
 | |
| 				`rotX` = ?, `rotY` = ?, `rotZ` = ?,
 | |
| 			WHERE `id` = ?;
 | |
| 	]], { position.x, position.y, position.z, rotation.x, rotation.y, rotation.z, id })
 | |
| end
 | |
| 
 | |
| Storage.UpdateStateBags = function(params)
 | |
| 	oxmysql:update([[
 | |
| 		UPDATE `vehicle_parking`
 | |
| 			SET `stateBags` = ?
 | |
| 			WHERE `id` = ?;
 | |
| 	]], params)
 | |
| end
 | |
| 
 | |
| Storage.IsVehicleOwned = function(params)
 | |
| 	return oxmysql:scalar_async(([[
 | |
| 		SELECT `plate`
 | |
| 			FROM `%s`
 | |
| 			WHERE `plate` = ? OR `plate` = ?;
 | |
| 	]]):format(GetOwnedVehiclesTableName()), params)
 | |
| end
 | |
| 
 | |
| Storage.DeleteAllVehicles = function()
 | |
| 	oxmysql:update("DELETE FROM `vehicle_parking`;")
 | |
| end
 | 
