Created
July 5, 2017 12:32
-
-
Save shakdwipeea/3e554d600bd9186761b33ac26572bebe to your computer and use it in GitHub Desktop.
walk through the fs and get all references of table from a database
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns flow.core | |
(:gen-class) | |
(:require [clojure.string :as str])) | |
(require '[me.raynes.fs :as fs]) | |
;; (php? "akash.clj") | |
;;;;;;;;;;;;;;;;;;;;;;;; | |
;; identify php files ;; | |
;;;;;;;;;;;;;;;;;;;;;;;; | |
(defn php? [filename] | |
(= "php" (second (str/split filename #"\.")))) | |
(defn filetree [] | |
(fs/walk (fn [root dirs files] | |
{:name files | |
:root root}) | |
"/home/akash/workspace/somedir")) | |
(defn php-files [] | |
(filter #(php? (:name %)) | |
(flatten (reduce (fn [acc {:keys [root name]}] | |
(conj acc (map (fn [filename] | |
{:name filename | |
:root root}) name))) | |
() (filetree))))) | |
(count (php-files)) | |
;;;;;;;;;;;;;;;;;;;; | |
;; get all tables ;; | |
;;;;;;;;;;;;;;;;;;;; | |
(require '[korma.db :refer [defdb mysql]]) | |
(require '[korma.core :as korma]) | |
(defdb jvxdb (mysql {:db "somedb" | |
:user "root" | |
:password ""})) | |
(defn sql-tables [] | |
(flatten | |
(map vals | |
(korma/exec-raw jvxdb ["SHOW TABLES"] :results)))) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;; get tables and file relationship ;; | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
(defn find-related-tables [filedesc] | |
(let [{:keys [root name]} filedesc | |
file (slurp (str root "/" name))] | |
(remove nil? (map (fn [table] | |
(when (.contains file table) | |
{:file (str root "/" name) | |
:table table})) (sql-tables))))) | |
(def rel | |
(flatten (map find-related-tables (php-files)))) | |
(count (group-by :table rel)) | |
(count (sql-tables)) | |
(doseq [det (flatten (map find-related-tables (php-files)))] | |
(spit "graph" (str det "\n") :append true)) | |
(defn -main | |
"I don't do a whole lot ... yet." | |
[& args] | |
(println (flatten (map find-related-tables (php-files))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment