Ports TG's BSQL library (#26455)

* Ports TG's BSQL

* write perms

* my mistake

* Missing migrations, fixes mistakes, removes unneeded logs

* Missing migrations, fixes mistakes, removes unneeded logs

* haha

* Final missing migration, actually fix runtime

* Fucked up this doesn't throw a warning

* sql fixes; polls
This commit is contained in:
ShiftyRail
2020-05-19 18:35:10 +02:00
committed by GitHub
parent 06b63e6654
commit bbd746ae42
61 changed files with 1638 additions and 883 deletions

View File

@@ -48,10 +48,12 @@
//sql += " [query.toSQL()]"
// Pagination
// to_chat(world, sql)
var/DBQuery/_query = dbcon_old.NewQuery(sql)
var/datum/DBQuery/_query = SSdbcore.NewQuery(sql)
_query.Execute()
if(_query.ErrorMsg())
world.log << _query.ErrorMsg()
qdel(_query)
return
var/list/results = list()
while(_query.NextRow())
@@ -64,6 +66,7 @@
"ckey" =_query.item[5]
))
results += CB
qdel(_query)
return results
/obj/machinery/computer/library/proc/get_num_results()
@@ -71,8 +74,11 @@
//if(query)
//sql += query.toSQL()
var/DBQuery/_query = dbcon_old.NewQuery(sql)
_query.Execute()
var/datum/DBQuery/_query = SSdbcore.NewQuery(sql)
if(!_query.Execute())
message_admins("Error: [_query.ErrorMsg()]")
log_sql("Error: [_query.ErrorMsg()]")
return
while(_query.NextRow())
return text2num(_query.item[1])
return 0

View File

@@ -93,7 +93,7 @@
<A href='?src=\ref[src];switchscreen=0'>(Return to main menu)</A><BR>"}
if(4)
dat += "<h3>External Archive</h3>"
if(!dbcon_old.IsConnected())
if(!SSdbcore.IsConnected())
dat += "<font color=red><b>ERROR</b>: Unable to contact External Archive. Please contact your system administrator for assistance.</font>"
else
num_results = src.get_num_results()
@@ -267,14 +267,16 @@
var/datum/cachedbook/target = getBookByID(href_list["del"]) // Sanitized in getBookByID
var/ans = alert(usr, "Are you sure you wish to delete \"[target.title]\", by [target.author]? This cannot be undone.", "Library System", "Yes", "No")
if(ans=="Yes")
var/DBQuery/query = dbcon_old.NewQuery("DELETE FROM library WHERE id=[target.id]")
var/datum/DBQuery/query = SSdbcore.NewQuery("DELETE FROM library WHERE id=[target.id]")
var/response = query.Execute()
if(!response)
to_chat(usr, query.ErrorMsg())
qdel(query)
return
log_admin("LIBRARY: [usr.name]/[usr.key] has deleted \"[target.title]\", by [target.author] ([target.ckey])!")
message_admins("[key_name_admin(usr)] has deleted \"[target.title]\", by [target.author] ([target.ckey])!")
src.updateUsrDialog()
qdel(query)
return
if(href_list["delbyckey"])
@@ -284,17 +286,19 @@
var/tckey = ckey(href_list["delbyckey"])
var/ans = alert(usr,"Are you sure you wish to delete all books by [tckey]? This cannot be undone.", "Library System", "Yes", "No")
if(ans=="Yes")
var/DBQuery/query = dbcon_old.NewQuery("DELETE FROM library WHERE ckey='[sanitizeSQL(tckey)]'")
var/response = query.Execute()
var/datum/DBQuery/query = SSdbcore.NewQuery("DELETE FROM library WHERE ckey='[sanitizeSQL(tckey)]'")
var/datum/DBQuery/response = query.Execute()
if(!response)
to_chat(usr, query.ErrorMsg())
qdel(query)
return
var/affected=query.RowsAffected()
if(affected==0)
if(response.item.len==0)
to_chat(usr, "<span class='danger'>Unable to find any matching rows.</span>")
qdel(query)
return
log_admin("LIBRARY: [usr.name]/[usr.key] has deleted [affected] books written by [tckey]!")
message_admins("[key_name_admin(usr)] has deleted [affected] books written by [tckey]!")
log_admin("LIBRARY: [usr.name]/[usr.key] has deleted [response.item.len] books written by [tckey]!")
message_admins("[key_name_admin(usr)] has deleted [response.item.len] books written by [tckey]!")
qdel(query)
src.updateUsrDialog()
return
@@ -390,15 +394,14 @@
if(scanner.cache)
var/choice = input("Are you certain you wish to upload this title to the Archive?") in list("Confirm", "Abort")
if(choice == "Confirm")
establish_old_db_connection()
if(!dbcon_old.IsConnected())
if(!SSdbcore.Connect())
alert("Connection to Archive has been severed. Aborting.")
else
var/sqltitle = sanitizeSQL(scanner.cache.name)
var/sqlauthor = sanitizeSQL(scanner.cache.author)
var/sqlcontent = sanitizeSQL(scanner.cache.dat)
var/sqlcategory = sanitizeSQL(upload_category)
var/DBQuery/query = dbcon_old.NewQuery("INSERT INTO library (author, title, content, category, ckey) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[ckey(usr.key)]')")
var/datum/DBQuery/query = SSdbcore.NewQuery("INSERT INTO library (author, title, content, category, ckey) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]', '[ckey(usr.key)]')")
var/response = query.Execute()
if(!response)
to_chat(usr, query.ErrorMsg())
@@ -413,7 +416,7 @@
if(!href_list["id"])
return
if(!dbcon_old.IsConnected())
if(!SSdbcore.IsConnected())
alert("Connection to Archive has been severed. Aborting.")
return
@@ -438,7 +441,7 @@
return
var/bookid = href_list["manual"]
if(!dbcon_old.IsConnected())
if(!SSdbcore.IsConnected())
alert("Connection to Archive has been severed. Aborting.")
return

View File

@@ -20,8 +20,7 @@
<A href='?src=\ref[src];setauthor=1'>Filter by Author: [query.author]</A><br />
<A href='?src=\ref[src];search=1'>\[Start Search\]</A><br />"}
if(1)
establish_old_db_connection()
if(!dbcon_old.IsConnected())
if(!SSdbcore.Connect())
dat += "<font color=red><b>ERROR</b>: Unable to contact External Archive. Please contact your system administrator for assistance.</font><br />"
else if(num_results == 0)
dat += "<em>No results found.</em>"

View File

@@ -91,8 +91,11 @@
var/sqlid = text2num(id)
if(!sqlid)
return
var/DBQuery/query = dbcon_old.NewQuery("DELETE FROM library WHERE id=[sqlid]")
query.Execute()
var/datum/DBQuery/query = SSdbcore.NewQuery("DELETE FROM library WHERE id=[sqlid]")
if(!query.Execute())
message_admins("Error: [query.ErrorMsg()]")
log_sql("Error: [query.ErrorMsg()]")
qdel(query)
/datum/library_catalog/proc/getBookByID(var/id as text)
if("[id]" in cached_books)
@@ -101,8 +104,13 @@
var/sqlid = text2num(id)
if(!sqlid)
return
var/DBQuery/query = dbcon_old.NewQuery("SELECT id, author, title, category, ckey FROM library WHERE id=[sqlid]")
query.Execute()
var/datum/DBQuery/query = SSdbcore.NewQuery("SELECT id, author, title, category, ckey FROM library WHERE id=[sqlid]")
if(!query.Execute())
message_admins("Error: [query.ErrorMsg()]")
log_sql("Error: [query.ErrorMsg()]")
qdel(query)
return
qdel(query)
var/list/results=list()
while(query.NextRow())