(define-module (my module))
(define my-so (dynamic-link "libguilegreendb.so"))
(dynamic-call "SWIG_init" my-so)

(define mkcol
 (lambda (schema tnpair)
  (let (
   (type (car tnpair))
   (name (car (cdr tnpair))))
    (format #t "add-column name: ~A type: ~A" name type)
    (newline)
    (Schema-add-column schema name (string->number type) 0))))

(define for-each-pair
 (lambda (fn pair-list)
     (if (pair? pair-list)
      (begin
        (fn (list-head pair-list 2))
        (for-each-pair fn (list-tail pair-list 2))))))

(define (bound-mkcol schema)
 (lambda (p)
  (mkcol schema p)))

 (begin
    (let (
        (table_name (car (cdr (command-line))))
        (env (new-GreenEnv "."))
        (table '())
        (schema '()))
    (GreenEnv-open env)
    (set! table (new-Table table_name env))
    (set! schema (Table-get-schema table))
    (if (> (Schema-size schema) 0)
     (begin
      (display "Table already created ")
      (newline)
      (quit)) )
     (format #t "mktable: ~A" (Table-get-name table))
     (newline)
     (let (
           (fn (bound-mkcol schema)))
      (for-each-pair fn (cdr (cdr (command-line)))))
     (Table-close table)
     (GreenEnv-close env)))