The SQLite 3 API provides making prepared statements, managing backups, working with shared caches and providing mutexes to implement multi threading. The current implementation at some well known multiplayer mod misses a lot of useful features. So that is why I want propose additional natives for the database API.
-
SQLite:SQLite_Open(const path[], SQLiteOpenMode:openModeFlags):Open a SQLite database with support for file open mode flags and opening databases in a shared cache mode -
SQLite:SQLite_OpenLegacy(const path[]): This function exists to be compatible withdb_open -
SQLite_Close(SQLite:database): Closes a SQLite database (db_close) -
SQLite_CloseAll: Closes all SQLite databases -
SQLite_CreateStatement(SQLite:database, const sql[]): Creates a prepared statement -
SQLiteStatement:SQLite_CreateStatementThreaded(SQLite:database, const sql[], const callback[]): Creates a prepared statement in another thread -
SQLite_DestroyStatement(SQLiteStatement:statement): Destroys a prepared statement -
SQLiteStepResult:SQLite_Step(SQLiteStatement:statement): Executes a step for a prepared statement (useful for debugging prepared statements) -
SQLiteJob:SQLite_StepThreaded(SQLite:database, SQLiteStatement:statement, const callback[]):SQLite_Stepin another thread -
SQLiteResult:SQLite_Query(SQLite:database, const sql[]):db_querybut with overload for prepared statements which finalizes prepared statements -
SQLiteJob:SQLite_QueryThreaded(SQLite:database, const sql[], const callback[]): It's justSQLite_Querybut multi threaded -
SQLiteResult:SQLite_QueryStatement(SQLiteStatement:statement):db_querybut with overload for prepared statements which finalizes prepared statements -
SQLiteJob:SQLite_QueryStatementThreaded(SQLiteStatement:statement, const callback[]): It's justSQLite_Querybut multi threaded -
SQLite_FreeResult(SQLiteResult:result): Free result (db_free_result) -
SQLite_NumRows(SQLiteResult:result): Get number of rows (db_num_rows) -
SQLite_NextRow(SQLiteResult:result): Fetch next row (db_next_row) -
SQLite_NumFields(SQLiteResult:result): Get number of fields (db_num_fields) -
SQLite_FieldName(SQLiteResult:result, columnIndex): Get field name (db_field_name) -
SQLite_GetField(SQLiteResult:result, columnIndex, result[], resultSize = sizeof result): Get field as string (db_get_field) -
SQLite_GetFieldAssoc(SQLiteResult:result, const field[], result[], resultSize = sizeof result): Get field as string by field name (db_get_field_assoc) -
SQLite_GetFieldInt(SQLiteResult:result, columnIndex): Get field as integer (db_get_field_int) -
SQLite_GetFieldAssocInt(SQLiteResult:result, columnIndex, const field[]): Get field as integer by field name (db_get_field_assoc_int) -
Float:SQLite_GetFieldFloat(SQLiteResult:result, columnIndex): Get field as a floating point number (db_get_field_float) -
Float:SQLite_GetFieldAssocFloat(SQLiteResult:result, columnIndex, const field[]): Get field as a floating point number by field name (db_get_field_assoc_float) -
ForeignPointer:SQLite_GetMemHandle(SQLite:database): Gets the memory handle of a database (db_get_mem_handle) -
ForeignPointer:SQLite_GetResultMemHandle(SQLiteResult:result): Gets the memory handle of a result (db_get_result_mem_handle) -
SQLite_CreateBackup(SQLite:destination, const destinationName[], SQLite:source, const sourceName[]): Creates a database backup -
SQLite_CreateBackupThreaded(SQLite:destination, SQLite:source, const callback[]):SQLite_CreateBackupin another thread -
SQLiteJobStatus:SQLite_GetJobStatus(SQLiteJob:job) -
SQLite_AbortJob(SQLiteJob:job) -
SQLite_DebugOpenFiles(): Debug open files (db_debug_openfiles) -
SQLite_DebugOpenResults(): Debug open results (db_debug_openresults)
Internally there will be support for URI's, automatic locks on transaction, callbacks for error messages and etc.