]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/metadata/table_creator/table_creator.ml
added DROP statements to sqlStatements
[helm.git] / helm / ocaml / metadata / table_creator / table_creator.ml
index 4eb84ad744437d8c5453131607a91e89bf08b39a..6cd9da9bf04c9bb1dab65f668aeaa776aaadb296 100644 (file)
@@ -23,6 +23,13 @@ let parse_args l =
     assert (len = 1 || len = 2);
     if len = 1 then (s,s) else (List.nth parts 0, List.nth parts 1)) 
   l
+
+let destructor_RE = Str.regexp "table_destructor\\(\\|\\.opt\\)$"
+  
+let am_i_destructor () = 
+  try 
+    let _ = Str.search_forward destructor_RE Sys.argv.(0) 0 in true
+  with Not_found -> false
   
 let main () =
   let len = Array.length Sys.argv in
@@ -33,13 +40,19 @@ let main () =
     end
   else
     begin
+      let tab,idx =
+        if am_i_destructor () then
+          (SqlStatements.drop_tables,SqlStatements.drop_indexes) 
+        else
+          (SqlStatements.create_tables,SqlStatements.create_indexes)
+      in
       let from, index = if Sys.argv.(1) = "-index" then 2,true else 1,false in
       let todo = Array.to_list (Array.sub Sys.argv from (len - from)) in
       let todo = parse_args todo in
       let todo = List.map (fun (x,name) -> name, (List.assoc x map)) todo in
-      print_endline (String.concat "\n" (SqlStatements.create_tables todo));
+      print_endline (String.concat "\n" (tab todo));
       if index then 
-        print_endline (String.concat "\n" (SqlStatements.create_indexes todo))
+        print_endline (String.concat "\n" (idx todo))
     end
 
 let _ = main ()