(ns bigml-nodered-core.resources
  (:require [bigml-nodered-core.wz :as wz]
            [bigml-nodered-core.wz.tasks :as tasks]
            [bigml-nodered-core.wz.marshal :as marshal]
            [bigml-nodered-core.utils :as utils])
  (:require-macros [bigml-nodered-core.macros :as macros]
                   [bigml-nodered-core.model.core :as bigml]))

(defn- create-resource [t fun]
  (let [name (str "create-" t)]
    (fn [n inputs outputs msg in-pars out-pars]
      (fun
       name
       (assoc inputs "resource-type" t)
       outputs
       msg
       in-pars
       out-pars))))

(defn export-nodes [nodes]
  (reduce-kv
   (fn [r k v] 
     (assoc r k (first v))) {} nodes))

(defn- create-nodes []
  (macros/create-resource-nodes create-resource))

(set! (.-exports js/module) (utils/export-nodes (create-nodes)))
