Skip to content

tw.database

Cote : Server

Gestion de tables et colonnes MySQL via oxmysql. Le module charge oxmysql automatiquement — n'incluez pas @oxmysql/lib/MySQL.lua dans votre fxmanifest et ne declarez pas oxmysql comme dependance.

Fonctions

tw.database.table_exists(table_name)

Verifie si une table existe dans la base de donnees.

ParametreTypeDescription
table_namestringNom de la table a verifier

Retour : boolean

Alias : tw.database.doesTableExist(table_name)


tw.database.ensure_table(table_name, definition)

Cree une table si elle n'existe pas deja.

ParametreTypeDescription
table_namestringNom de la table
definitionstringDefinitions des colonnes SQL (tout ce qui se trouve entre les parentheses de CREATE TABLE)

Retour : booleantrue si la table a ete creee ou existait deja.

Alias : tw.database.addTable(table_name, definition)


tw.database.ensure_column(table_name, column_name, definition)

Ajoute une colonne a une table existante si elle n'existe pas deja.

ParametreTypeDescription
table_namestringNom de la table
column_namestringNom de la colonne a ajouter
definitionstringDefinition SQL de la colonne (ex: 'VARCHAR(255) NOT NULL DEFAULT ""')

Retour : boolean

Alias : tw.database.addColumn(table_name, column_name, definition)


tw.database.ensure_trigger(trigger_name, definition)

Cree un trigger s'il n'existe pas deja.

ParametreTypeDescription
trigger_namestringNom du trigger
definitionstringDefinition SQL complete du trigger

Retour : boolean

Alias : tw.database.addTrigger(trigger_name, definition)

Exemples

Configuration de table et colonne au demarrage

lua
tw.require("database")

tw.ready(function()
    -- Creer la table
    tw.database.ensure_table('twinded_collect', [[
        `id` INT NOT NULL AUTO_INCREMENT,
        `charidentifier` INT NOT NULL,
        `item` VARCHAR(100) NOT NULL,
        `amount` INT NOT NULL DEFAULT 0,
        `last_collect` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`id`)
    ]])

    -- Ajouter une colonne a une table existante (sans risque si deja presente)
    tw.database.ensure_column('twinded_collect', 'zone', 'VARCHAR(50) DEFAULT NULL')
end)

Requetes SQL directes

Apres le chargement de tw.database, vous avez acces aux fonctions standard d'oxmysql :

lua
-- Selectionner plusieurs lignes
local rows = MySQL.query.await('SELECT * FROM twinded_collect WHERE charidentifier = ?', { charId })

-- Selectionner une seule ligne
local row = MySQL.single.await('SELECT * FROM twinded_collect WHERE id = ?', { id })

-- Mise a jour
MySQL.update.await('UPDATE twinded_collect SET amount = ? WHERE id = ?', { newAmount, id })

-- Insertion
MySQL.insert.await('INSERT INTO twinded_collect (charidentifier, item, amount) VALUES (?, ?, ?)', { charId, "apple", 5 })

Notes

  • Appelez toujours tw.require("database") avant d'utiliser ce module.
  • N'ajoutez pas @oxmysql/lib/MySQL.lua a votre fxmanifest — tw.database s'en charge.
  • Ne declarez pas oxmysql dans les dependances de votre script — twinded_libs le gere.
  • Utilisez ensure_table et ensure_column dans tw.ready() pour que la base de donnees soit configuree avant toute requete.

Premium RedM Scripts — Multi-Framework