MORM_DB is a Lua ORM (Object Relational Mapping) library developed for MTASA (Multi Theft Auto: San Andreas) to simplify database operations.
- Object-oriented database operation interface -Support automatic migration of database structure
- Support transaction processing
- Support chain calls
- Supports synchronous and asynchronous queries
- Rich data type support
- Complete error handling and data validation
Copy the classlib.lua file to your MTASA server resource directory and add the corresponding reference in meta.xml.
class "account" {
uid = "uint32",
username = "char[32]",
password = "char[256]",
constructor = function(self, data)
if type(data) ~= "table" then return end
for k, v in pairs(data) do
self[k] = v
end
end
}db = morm:Open("sqlite", "test.db")db:Create(account):Query()local newAccount = account{
uid = 1,
username = "testuser",
password = "testpass"
}
db:Create(newAccount):Query()-- Query all data
db:Select("*"):From("account"):Query()
--Conditional query
db:Select("*"):From("account"):Where("uid", 1):Query()
-- Sort and limit the number of results
db:Select("*"):From("account"):OrderBy("uid", "DESC"):Limit(10):Query()local acc = account{
uid = 1
}
acc.username = "newusername"
db:Update(acc):Query()-- Delete table
db:Delete("account"):Query()db:BeginTransaction()
-- Perform multiple operations
db:Create(account1):Query()
db:Create(account2):Query()
-- Submit transaction
db:Commit()Open(dbType, ...): Open database connection
Create(...): Create a table or insert dataAutoMigrate(...): Automatically migrate database structureDelete(tableName): delete tableDrop(tableName, columnName): delete table or columnChange(tableName, columnName, newDefinition): Modify column name and definitionAdd(tableName, columnName, columnDefinition): Add columnModify(tableName, columnName, newDefinition): Modify column definitionAlert(tableName, columnName, newDefinition): Modify column definition (alias)
Select(selectColumn): Add SELECT clauseFrom(fromTable): Add FROM clauseWhere(columnName, value): Add WHERE clauseOrderBy(columnName, order): Add ORDER BY clauseLimit(limit, offset): add LIMIT clauseTable(tableNameOrTemplate): Specify the table nameRaw(raw, ...): Add raw SQL statement
Find(...): Find dataUpdate(...): update data
Query(timedout, callback): execute query
BeginTransaction(): Start transactionCommit(): commit transactionRollback(): rollback transaction
- Integer types:
int8,int16,int24,int32,int64,uint8,uint16,uint24,uint32,uint64 - String types:
char,varchar,text,mediumtext,longtext - Floating point types:
float,double,decimal - Date and time types:
date,time,datetime,timestamp - Boolean type:
boolean,bool - Binary types:
blob,mediumblob,longblob
MIT License