Files
vgstation13/code/modules/migrations/sqlite/sqlite_migration.dm

51 lines
1.5 KiB
Plaintext

/datum/migration/sqlite
dbms="sqlite"
var/dbfilename=""
/datum/migration/sqlite/New(var/datum/migration_controller/sqlite/mc)
..(mc)
if(istype(mc))
dbfilename=mc.dbfilename
/datum/migration/sqlite/query(var/sql)
var/database/query/Q = new()
Q.Add(sql)
if(!Q.Execute(dbfilename))
world.log << sql
world.log << "Error in [package]#[id]: [Q.ErrorMsg()]"
return null
var/list/O=list()
while(Q.NextRow())
O += list(Q.GetRowData())
if(!O.len)
return null
return O
/datum/migration/sqlite/hasResult(var/sql)
var/database/query/Q = new()
Q.Add(sql)
if(!Q.Execute(dbfilename))
world.log << sql
world.log << "Error in [package]#[id]: [Q.ErrorMsg()]"
return FALSE
return Q.NextRow()
/datum/migration/sqlite/execute(var/sql)
var/database/query/Q = new()
Q.Add(sql)
if(!Q.Execute(dbfilename))
world.log << sql
world.log << "Error in [package]#[id]: [Q.ErrorMsg()]"
return FALSE
return TRUE
/datum/migration/sqlite/hasTable(var/tableName)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/migration/proc/hasTable() called tick#: [world.time]")
return hasResult("SELECT name FROM sqlite_master WHERE type='[tableName]'")
/datum/migration/sqlite/hasColumn(var/tableName, var/columnName)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/migration/proc/hasColumn() called tick#: [world.time]")
for(var/list/row in query("PRAGMA table_info([tableName])")) // Can't be turned into a SELECT.
if(row["name"]==columnName)
return TRUE
return FALSE