renzuzu / renzu_shops

Fivem Advanced Shops with stocks and player owned shops using ox_inventory , ox_lib. Item metadata supports and item customisation.
GNU General Public License v3.0
80 stars 38 forks source link

error, does not create database #138

Open pallop opened 1 year ago

pallop commented 1 year ago

i get that error and i dont know how to solve it. can anyone help me?

Im using qb-core and all the dependences needed.

[  script:renzu_shops] SCRIPT ERROR: [string "local dbdata = {['financedata'] = {['columns'..."]:201: bad argument #1 to 'for iterator' (table expected, got nil)
[  script:renzu_shops] > [global chunk] (ocal dbdata = {['financedata'] = {['columns'] = '`identifier`,`max`,`financed`',['values'] = '?,?,?'},['renzu_stores'] = {['columns'] = '`shop`,`owner`,`money`,`items`,`employee`,`cashier`,`customitems`,`job`',['values'] = '?,?,?,?,?,?,?,?'},['movableshops'] = {['columns'] = '`identifier`,`owner`,`money`,`items`,`plate`,`type`,`shopname`',['values'] = '?,?,?,?,?,?,?'},}
[  script:renzu_shops] 
[  script:renzu_shops] local db = setmetatable({},{
[  script:renzu_shops]  __call = function(self)
[  script:renzu_shops] 
[  script:renzu_shops]      self.insert = function(name, data)
[  script:renzu_shops]          local str = 'INSERT INTO %s (%s) VALUES(%s)'
[  script:renzu_shops]          return MySQL.insert.await(str:format(name,dbdata[name].columns,dbdata[name].values),data)
[  script:renzu_shops]      end
[  script:renzu_shops] 
[  script:renzu_shops]      self.update = function(name, column, where, update, data)
[  script:renzu_shops]          local str = 'UPDATE %s SET %s = ? WHERE %s = ?'
[  script:renzu_shops]          return MySQL.query(str:format(name,column,where),{data,update})
[  script:renzu_shops]      end
[  script:renzu_shops] 
[  script:renzu_shops]      self.delete = function(name, where, update)
[  script:renzu_shops]          local str = 'DELETE FROM %s WHERE %s = ?'
[  script:renzu_shops]          return MySQL.query(str:format(name,where),{update})
[  script:renzu_shops]      end
[  script:renzu_shops] 
[  script:renzu_shops]      self.save = function(data)
[  script:renzu_shops]          Citizen.CreateThreadNow(function()
[  script:renzu_shops]              for shopname,v in pairs(data) do
[  script:renzu_shops]                  local select = MySQL.query.await('SELECT * FROM `renzu_stores` WHERE `shop` = ?', {shopname})
[  script:renzu_shops]                  if select then
[  script:renzu_shops]                      for k,v in pairs(v) do
[  script:renzu_shops]                          if type(v) == 'table' then
[  script:renzu_shops]                              self.update('renzu_stores',k,'shop',shopname,json.encode(v))
[  script:renzu_shops]                          else
[  script:renzu_shops]                              self.update('renzu_stores',k,'shop',shopname,v)
[  script:renzu_shops]                          end
[  script:renzu_shops]                      end
[  script:renzu_shops]                  else
[  script:renzu_shops]                      self.insert('renzu_stores',{
[  script:renzu_shops]                          shopname,
[  script:renzu_shops]                          v.owner,
[  script:renzu_shops]                          json.encode(v['money'] or {}),
[  script:renzu_shops]                          json.encode(v['items'] or {}),
[  script:renzu_shops]                          json.encode(v['employee'] or {}),
[  script:renzu_shops]                          json.encode(v['cashier'] or {}),
[  script:renzu_shops]                          json.encode(v['customitems'] or {}),
[  script:renzu_shops]                          v['job'],
[  script:renzu_shops]                      })
[  script:renzu_shops]                  end
[  script:renzu_shops]              end
[  script:renzu_shops]          end)
[  script:renzu_shops]      end
[  script:renzu_shops]      return self
[  script:renzu_shops]  end
[  script:renzu_shops] })
[  script:renzu_shops] local Sql = db()
[  script:renzu_shops] 
[  script:renzu_shops] local success, result = pcall(MySQL.scalar.await, 'SELECT 1 FROM renzu_stores')
[  script:renzu_shops] 
[  script:renzu_shops] if not success then
[  script:renzu_shops]  MySQL.query([[CREATE TABLE `renzu_stores` (
[  script:renzu_shops]      `id` int NOT NULL AUTO_INCREMENT KEY,
[  script:renzu_shops]      `shop` varchar(60) DEFAULT NULL,
[  script:renzu_shops]      `owner` varchar(64) DEFAULT NULL,
[  script:renzu_shops]      `money` longtext DEFAULT NULL,
[  script:renzu_shops]      `items` longtext DEFAULT NULL,
[  script:renzu_shops]      `employee` longtext DEFAULT NULL,
[  script:renzu_shops]      `cashier` longtext DEFAULT NULL,
[  script:renzu_shops]      `customitems` longtext DEFAULT NULL,
[  script:renzu_shops]      `job` varchar(64) DEFAULT NULL
[  script:renzu_shops]  )]])
[  script:renzu_shops] end
[  script:renzu_shops] local success, result = pcall(MySQL.scalar.await, 'SELECT 1 FROM movableshops')
[  script:renzu_shops] 
[  script:renzu_shops] if not success then
[  script:renzu_shops]  MySQL.query([[CREATE TABLE `movableshops` (
[  script:renzu_shops]      `identifier` varchar(64) DEFAULT NULL,
[  script:renzu_shops]      `owner` varchar(64) DEFAULT NULL,
[  script:renzu_shops]      `money` longtext DEFAULT NULL,
[  script:renzu_shops]      `items` longtext DEFAULT NULL,
[  script:renzu_shops]      `plate` varchar(64) DEFAULT NULL,
[  script:renzu_shops]      `type` varchar(64) DEFAULT NULL,
[  script:renzu_shops]      `shopname` varchar(64) DEFAULT NULL,
[  script:renzu_shops]      UNIQUE KEY `identifier` (`identifier`)
[  script:renzu_shops]  )]])
[  script:renzu_shops] end
[  script:renzu_shops] 
[  script:renzu_shops] local success, result = pcall(MySQL.scalar.await, 'SELECT 1 FROM financedata')
[  script:renzu_shops] 
[  script:renzu_shops] if not success then
[  script:renzu_shops]  MySQL.query([[CREATE TABLE `financedata` (
[  script:renzu_shops]      `identifier` varchar(64) DEFAULT NULL,
[  script:renzu_shops]      `max` INT(64) DEFAULT NULL,
[  script:renzu_shops]      `financed` longtext DEFAULT NULL,
[  script:renzu_shops]      UNIQUE KEY `identifier` (`identifier`)
[  script:renzu_shops]  )]])
[  script:renzu_shops] end
[  script:renzu_shops] 
[  script:renzu_shops] local success, result = pcall(MySQL.scalar.await, 'ALTER TABLE `movableshops` MODIFY COLUMN `identifier` VARCHAR(100)')
[  script:renzu_shops] 
[  script:renzu_shops] local convert = function()
[  script:renzu_shops]  if GetResourceKvpString('renzu_stores') then
[  script:renzu_shops]      for k,v in pairs(json.decode(GetResourceKvpString('renzu_stores'))) do
[  script:renzu_shops]          local columns = {}
[  script:renzu_shops]          columns['shop'] = k
[  script:renzu_shops]          local data = {}
[  script:renzu_shops]          for k,v in pairs(v) do
[  script:renzu_shops]              columns[k] = v
[  script:renzu_shops]          end
[  script:renzu_shops]          Sql.insert('renzu_stores',{
[  script:renzu_shops]              columns['shop'],
[  script:renzu_shops]              columns['owner'],
[  script:renzu_shops]              json.encode(columns['money'] or {}),
[  script:renzu_shops]              json.encode(columns['items'] or {}),
[  script:renzu_shops]              json.encode(columns['employee'] or {}),
[  script:renzu_shops]              json.encode(columns['cashier'] or {}),
[  script:renzu_shops]              json.encode(columns['customitems'] or {}),
[  script:renzu_shops]              columns['job'],
[  script:renzu_shops]          })
[  script:renzu_shops]      end
[  script:renzu_shops]  end
[  script:renzu_shops] 
[  script:renzu_shops]  if GetResourceKvpString('movableshops') then
[  script:renzu_shops]      for k,v in pairs(json.decode(GetResourceKvpString('movableshops'))) do
[  script:renzu_shops]          local columns = {}
[  script:renzu_shops]          columns['shopidentifier'] = k
[  script:renzu_shops]          local data = {}
[  script:renzu_shops]          for k,v in pairs(v) do
[  script:renzu_shops]              columns[k] = v
[  script:renzu_shops]          end
[  script:renzu_shops]          Sql.insert('movableshops',{
[  script:renzu_shops]              columns['shopidentifier'],
[  script:renzu_shops]              columns['identifier'],
[  script:renzu_shops]              json.encode(columns['money'] or {}),
[  script:renzu_shops]              json.encode(columns['items'] or {}),
[  script:renzu_shops]              columns['plate'],
[  script:renzu_shops]              columns['type'],
[  script:renzu_shops]              columns['shopname'],
[  script:renzu_shops]          })
[  script:renzu_shops]      end
[  script:renzu_shops]  end
[  script:renzu_shops]  if GetResourceKvpString('financedata') then
[  script:renzu_shops]      for k,v in pairs(json.decode(GetResourceKvpString('financedata'))) do
[  script:renzu_shops]          local columns = {}
[  script:renzu_shops]          columns['identifier'] = k
[  script:renzu_shops]          local data = {}
[  script:renzu_shops]          for k,v in pairs(v) do
[  script:renzu_shops]              columns[k] = v
[  script:renzu_shops]          end
[  script:renzu_shops]          Sql.insert('financedata',{
[  script:renzu_shops]              columns['identifier'],
[  script:renzu_shops]              tonumber(columns['max']),
[  script:renzu_shops]              json.encode(columns['financed'] or {}),
[  script:renzu_shops]          })
[  script:renzu_shops]      end
[  script:renzu_shops]  end
[  script:renzu_shops] end
[  script:renzu_shops] --DeleteResourceKvp('renzu_stores_convert')
[  script:renzu_shops] if not GetResourceKvpString('renzu_stores_convert') then
[  script:renzu_shops]  convert()
[  script:renzu_shops]  SetResourceKvp('renzu_stores_convert', 'true')
[  script:renzu_shops] end
[  script:renzu_shops] 
[  script:renzu_shops] local Stores = {}
[  script:renzu_shops] for k,v in pairs(MySQL.query.await('SELECT * FROM renzu_stores', {  }) or {}) do
[  script:renzu_shops]  Stores[v.shop] = {}
[  script:renzu_shops]  for column,data in pairs(v) do
[  script:renzu_shops]      if string.find(data, '{') then
[  script:renzu_shops]          Stores[v.shop][column] = json.decode(data)
[  script:renzu_shops]      elseif data == '[]' then
[  script:renzu_shops]          Stores[v.shop][column] = {}
[  script:renzu_shops]      else
[  script:renzu_shops]          Stores[v.shop][column] = data
[  script:renzu_shops]      end
[  script:renzu_shops]  end
[  script:renzu_shops] end
[  script:renzu_shops] 
[  script:renzu_shops] local Movable = {}
[  script:renzu_shops] for k,v in pairs(MySQL.query.await('SELECT * FROM movableshops', {  }) or {}) do
[  script:renzu_shops]  Movable[v.identifier] = {}
[  script:renzu_shops]  for column,data in pairs(v) do
[  script:renzu_shops]      if string.find(data, '{') then
[  script:renzu_shops]          Movable[v.identifier][column] = json.decode(data)
[  script:renzu_shops]      elseif data == '[]' then
[  script:renzu_shops]          Movable[v.identifier][column] = {}
[  script:renzu_shops]      else
[  script:renzu_shops]          Movable[v.identifier][column] = data
[  script:renzu_shops]      end
[  script:renzu_shops]  end
[  script:renzu_shops] end
[  script:renzu_shops] 
[  script:renzu_shops] local Financed = {}
[  script:renzu_shops] for k,v in pairs(MySQL.query.await('SELECT * FROM financedata', {  }) or {}) do
[  script:renzu_shops]  Financed[v.identifier] = {}
[  script:renzu_shops]  for column,data in pairs(v) do
[  script:renzu_shops]      if string.find(data, '{') then
[  script:renzu_shops]          Financed[v.identifier][column] = json.decode(data)
[  script:renzu_shops]      elseif data == '[]' then
[  script:renzu_shops]          Financed[v.identifier][column] = {}
[  script:renzu_shops]      else
[  script:renzu_shops]          Financed[v.identifier][column] = data
[  script:renzu_shops]      end
[  script:renzu_shops]  end
[  script:renzu_shops] end
[  script:renzu_shops] 
[  script:renzu_shops] for k,v in pairs(shared.OwnedShops) do
[  script:renzu_shops]  local str = 'Stores_%s'
[  script:renzu_shops]  for k,v in pairs(v) do
[  script:renzu_shops]      GlobalState[str:format(v.label)] = nil
[  script:renzu_shops]  end
[  script:renzu_shops] end
[  script:renzu_shops] AddStateBagChangeHandler("Stores", "global", function(bagName, key, value)
[  script:renzu_shops]  Wait(0)
[  script:renzu_shops]  if not value then return end
[  script:renzu_shops]  for shop,data in pairs(value) do -- Split datas to dedicated bags to prevent byte size limits
[  script:renzu_shops]      local str = 'Stores_%s'
[  script:renzu_shops]      GlobalState[str:format(shop)] = data
[  script:renzu_shops]  end
[  script:renzu_shops] end)
[  script:renzu_shops] 
[  script:renzu_shops] GlobalState.Shipping = json.decode(GetResourceKvpString('shippingcompany') or '[]') or {}
[  script:renzu_shops] GlobalState.Stores = Stores
[  script:renzu_shops] GlobalState.MovableShops = Movable
[  script:renzu_shops] GlobalState.FinanceData = Financed
[  script:renzu_shops] GlobalState.JobShop = {}
[  script:renzu_shops] return Sql:201)
[  script:renzu_shops] > fn (@renzu_shops/server/main.lua:41)
[  script:renzu_shops] > <unknown> (@oxmysql/dist/build.js:21810)
[  script:renzu_shops] > processTicksAndRejections (node:internal/process/task_queues:96)