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) iftype(data) ~="table" thenreturnendfork, vinpairs(data) doself[k] =vendend
}db=morm:Open("sqlite", "test.db")db:Create(account):Query()localnewAccount=account{ uid=1, username="testuser", password="testpass"
}
db:Create(newAccount):Query()-- Query all datadb:Select("*"):From("account"):Query()
--Conditional querydb:Select("*"):From("account"):Where("uid", 1):Query()
-- Sort and limit the number of resultsdb:Select("*"):From("account"):OrderBy("uid", "DESC"):Limit(10):Query()localacc=account{ uid=1
}
acc.username="newusername"db:Update(acc):Query()-- Delete tabledb:Delete("account"):Query()db:BeginTransaction()
-- Perform multiple operationsdb:Create(account1):Query()
db:Create(account2):Query()
-- Submit transactiondb: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