Skip to content

BetterLife-GG/oxmysql

This branch is 1 commit ahead of, 192 commits behind overextended/oxmysql:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8e128a0 · Nov 21, 2022
Jul 28, 2022
Oct 12, 2022
Sep 21, 2022
Sep 21, 2022
May 2, 2022
Aug 24, 2022
Sep 17, 2021
Dec 24, 2021
Jul 6, 2022
Jul 10, 2022
Sep 21, 2022
Jan 4, 2022

Repository files navigation

Introduction

Oxmysql is an alternative to the unmaintained mysql-async/ghmattimysql resources, utilising node-mysql2 rather than mysqljs.

As of v1.9.0 the preferred method of utilising oxmysql is via lib/MySQL, which can be loaded by adding @oxmysql/lib/MySQL.lua to your resource manifests. This resource should be 100% backwards compatible with mysql-async functionality on top of providing newer export wrappers and functionality.

Refer to issue #77 for information on replacing your queries from older versions of oxmysql or ghmattimysql.

Features

  • Support for URI connection strings and semicolon separated values
  • Asynchronous queries utilising mysql2/promises connection pool
  • Javascript async_retval exports supports promises across resources and runtimes
  • Support for placeholder values (named and unnamed) to improve query speed and increase security against SQL injection
  • Improved error checking when placeholders and parameters do not match
  • Lua promises in lib/MySQL.lua files for improved performance when awaiting a response
  • Support mysql-async syntax while providing newer (more accurate) names

Usage

-- Lua
MySQL.query('SELECT * from users WHERE identifier = ?', {identifier}, function(result)
    -- callback response
    -- same as MySQL.Async.fetchAll
end)
CreateThread(function()
    local result = MySQL.query.await('SELECT * from users WHERE identifier = ?', {identifier})
    -- await a promise to resolve
    -- same as MySQL.Sync.fetchAll
end)
// JS
exports.oxmysql.query('SELECT * from users WHERE identifier = ?', [identifier], (result) => {
  // callback response
})(async () => {
  const result = await exports.oxmysql.query_async('SELECT * from users WHERE identifier = ?', [identifier]);
  // await a promise to resolve
})();
exports.oxmysql.query_async('SELECT * from users WHERE identifier = ?', [identifier]).then((result) => {
  // utilise .then to resolve a promise like a callback
});

For more information regarding the use of queries, refer to the documentation linked above.

Placeholders

This allows queries to be properly prepared and escaped; the following lines are equivalent.

"SELECT group FROM users WHERE identifier = ?", {identifier}
"SELECT group FROM users WHERE identifier = :identifier", {identifier = identifier}
"SELECT group FROM users WHERE identifier = @identifier", {['@identifier'] = identifier}

Named placeholders are deprecated and should be avoided as much as possible.







Discord


Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 83.3%
  • Lua 12.8%
  • JavaScript 1.4%
  • HTML 1.3%
  • CSS 1.2%