open Printf
let prepare_insert () =
+ (*
let insert_owner a b =
- sprintf "INSERT %s VALUES (\"%s\", \"%s\")" owners_tbl a b
+ sprintf "INSERT %s VALUES (\"%s\", \"%s\")" (owners_tbl ())a b
in
+ *)
let insert_sort a b c d =
- sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d, \"%s\")" sort_tbl a b c d
+ sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d, \"%s\")" (sort_tbl ())a b c d
in
let insert_rel a b c =
- sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d)" rel_tbl a b c
+ sprintf "INSERT %s VALUES (\"%s\", \"%s\", %d)" (rel_tbl ()) a b c
in
let insert_obj a b c d =
- sprintf "INSERT %s VALUES (\"%s\", \"%s\", \"%s\", %s)" obj_tbl a b c d
+ sprintf "INSERT %s VALUES (\"%s\", \"%s\", \"%s\", %s)" (obj_tbl ()) a b c d
in
- (insert_owner, insert_sort, insert_rel, insert_obj)
+ ((*insert_owner, *)insert_sort, insert_rel, insert_obj)
-let execute_insert dbd (insert_owner, insert_sort, insert_rel, insert_obj)
+let execute_insert dbd ((*insert_owner, *)insert_sort, insert_rel, insert_obj)
uri owner (sort_cols, rel_cols, obj_cols)
=
- ignore (Mysql.exec dbd (insert_owner uri owner));
+ (* ignore (Mysql.exec dbd (insert_owner uri owner)); *)
List.iter (function
| [`String a; `String b; `Int c; `String d] ->
ignore (Mysql.exec dbd (insert_sort a b c d))
let insert_const_no dbd uri =
let inconcl_no =
sprintf "INSERT %s SELECT \"%s\", COUNT(DISTINCT h_occurrence) FROM %s WHERE (h_position=\"%s\" OR h_position=\"%s\") AND source LIKE \"%s%%\""
- conclno_tbl uri obj_tbl inconcl_pos mainconcl_pos uri
+ (conclno_tbl ()) uri (obj_tbl ()) inconcl_pos mainconcl_pos uri
in
let concl_hyp =
sprintf "INSERT %s
SELECT \"%s\",COUNT(DISTINCT h_occurrence)
FROM %s
WHERE NOT (h_position=\"%s\") AND (source = \"%s\")"
- conclno_hyp_tbl uri obj_tbl inbody_pos uri
+ (conclno_hyp_tbl ()) uri (obj_tbl ()) inbody_pos uri
in
ignore (Mysql.exec dbd inconcl_no);
ignore (Mysql.exec dbd concl_hyp)
let insert_name ~dbd ~uri ~name =
let query =
- sprintf "INSERT %s VALUES (\"%s\", \"%s\")" name_tbl uri name
+ sprintf "INSERT %s VALUES (\"%s\", \"%s\")" (name_tbl ()) uri name
in
ignore (Mysql.exec dbd query)
List.iter (insert_const_no dbd) uris;
List.iter (fun (uri, name, _) -> insert_name ~dbd ~uri ~name) metadata
-let clean ~(dbd:Mysql.dbd) ~owner =
+let clean ~(dbd:Mysql.dbd) =
let owned_uris = (* list of uris in list-of-columns format *)
let query =
- sprintf "SELECT source FROM %s WHERE owner = \"%s\"" owners_tbl owner
+ (* sprintf
+ * "SELECT source FROM %s WHERE owner = \"%s\"" (owners_tbl ())
+ * owner*)
+ sprintf "SELECT source FROM %s" (obj_tbl ())
in
let result = Mysql.exec dbd query in
- Mysql.map result (fun cols ->
+ let uris = Mysql.map result (fun cols ->
match cols.(0) with
| Some src -> src
- | None -> assert false)
+ | None -> assert false) in
+ (* and now some stuff to remove #xpointers and duplicates *)
+ let cleaned_uris =
+ List.map (fun x -> Str.replace_first (Str.regexp "\#.*$") "" x) uris
+ in
+ let sorted_uris = List.fast_sort Pervasives.compare cleaned_uris in
+ match sorted_uris with
+ | [] -> sorted_uris
+ | he::tl ->
+ (* no List.remove dups ?? *)
+ snd(List.fold_left (fun (last,l) cur -> if cur <> last then
+ (cur,cur::l) else (last,l)) (he,[he]) tl)
in
let del_from tbl =
- let query s = sprintf "DELETE FROM %s WHERE source LIKE \"%s%%\"" tbl s in
+ let query s =
+ sprintf "DELETE FROM %s WHERE source LIKE \"%s%%\"" (tbl ()) s
+ in
List.iter
(fun source_col -> ignore (Mysql.exec dbd (query source_col)))
owned_uris
in
List.iter del_from
- [sort_tbl; rel_tbl; obj_tbl; conclno_tbl; conclno_hyp_tbl; name_tbl;
- owners_tbl];
+ [sort_tbl; rel_tbl; obj_tbl; conclno_tbl; conclno_hyp_tbl; name_tbl(*;
+ owners_tbl*)];
List.iter Http_getter.unregister owned_uris