1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

User_wiki: Add delete wiki

This commit is contained in:
gnosygnu 2016-11-02 09:57:17 -04:00
parent ff869ecfc3
commit a5bdc07406
3 changed files with 21 additions and 10 deletions

View File

@ -57,14 +57,18 @@ public class Xou_wiki_tbl implements Db_tbl {
finally {rdr.Rls();}
}
public Xou_wiki_itm Select_by_key_or_null(String key) {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__wiki_domain).Clear().Crt_str(fld__wiki_domain, key).Exec_select__rls_auto();
try {
return rdr.Move_next()
? Make(rdr)
: null;
}
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__wiki_domain).Crt_str(fld__wiki_domain, key).Exec_select__rls_auto();
try {return rdr.Move_next() ? Make(rdr) : null;}
finally {rdr.Rls();}
}
public Xou_wiki_itm Select_by_id_or_null(int id) {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__wiki_id).Crt_int(fld__wiki_id, id).Exec_select__rls_auto();
try {return rdr.Move_next() ? Make(rdr) : null;}
finally {rdr.Rls();}
}
public void Delete_by_id(int id) {
conn.Stmt_delete(tbl_name, fld__wiki_id).Crt_int(fld__wiki_id, id).Exec_delete();
}
private Xou_wiki_itm Make(Db_rdr rdr) {
return new Xou_wiki_itm(rdr.Read_int(fld__wiki_id), rdr.Read_str(fld__wiki_domain), rdr.Read_str(fld__wiki_name), Io_url_.new_fil_(rdr.Read_str(fld__wiki_core_url)), rdr.Read_str(fld__wiki_data));
}

View File

@ -29,15 +29,17 @@ public class Xouw_itm_bridge implements gplx.xowa.htmls.bridges.Bridge_cmd_itm {
Json_nde args = data.Get_kv(Msg__args).Val_as_nde();
switch (proc_id) {
case Proc__save: itm_mgr.Save(args); break;
case Proc__delete: itm_mgr.Delete(args); break;
default: throw Err_.new_unhandled_default(proc_id);
}
return "";
}
private static final byte[] Msg__proc = Bry_.new_a7("proc"), Msg__args = Bry_.new_a7("args");
private static final byte Proc__save = 0;
private static final byte Proc__save = 0, Proc__delete = 1;
private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs()
.Add_str_byte("save" , Proc__save)
.Add_str_byte("delete" , Proc__delete)
;
public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("user.wiki.itm.exec");

View File

@ -25,9 +25,7 @@ class Xouw_itm_mgr {
public Xouw_itm_mgr(Xoa_app app) {
this.app = app;
}
public void Save(Json_nde args) {
Save(args.Get_as_int("id"), args.Get_as_str("domain"), args.Get_as_str("name"), args.Get_as_str("dir"));
}
public void Save(Json_nde args) {Save(args.Get_as_int("id"), args.Get_as_str("domain"), args.Get_as_str("name"), args.Get_as_str("dir"));}
public void Save(int id, String domain, String name, String dir_str) {
boolean itm_is_new = false;
// get next id if none provided
@ -45,4 +43,11 @@ class Xouw_itm_mgr {
if (itm_is_new)
Xow_db_mkr.Create_wiki(new Xodb_wiki_data(domain, fil_url));
}
public void Delete(Json_nde args) {Delete(args.Get_as_int("id"));}
public void Delete(int id) {
Xouw_db_mgr db_mgr = new Xouw_db_mgr(app.User().User_db_mgr().Conn());
Xou_wiki_itm itm = db_mgr.Tbl__wiki().Select_by_id_or_null(id);
if (itm == null) throw Err_.new_wo_type("wiki does not exist", "id", id);
db_mgr.Tbl__wiki().Delete_by_id(id);
}
}