(module sql-update-internals-unit mzscheme
(require (lib "unitsig.ss")
(lib "string.ss" "srfi" "13")
(lib "time.ss" "srfi" "19"))
(require (file "../base.ss")
(file "../era.ss")
(file "../type.ss")
(file "../generic/sql-sig.ss")
(prefix generic: (file "../generic/sql-update-internals-unit.ss"))
(file "sql-quote-unit.ss"))
(provide sql-update-internals@)
(define sql-update-internals@
(let ([mixin@
(unit/sig sql-update-internals^
(import (generic : sql-update-internals^)
sql-quote^)
(define (create-field-sql name type)
(cond [(eq? type type:text) (string-append (quote-id name) " TEXT")]
[(eq? type type:integer) (string-append (quote-id name) " INTEGER")]
[(eq? type type:real) (string-append (quote-id name) " REAL")]
[(eq? type type:symbol) (string-append (quote-id name) " TEXT")]
[(eq? type type:boolean) (string-append (quote-id name) " BOOLEAN")]
[(eq? type type:time-tai) (string-append (quote-id name) " TIMESTAMP WITHOUT TIME ZONE")]
[else (raise-exn exn:fail:snooze
(format "Unrecognised field type: ~a" type))]))
(define column-names generic:column-names)
(define column-values generic:column-values)
)])
(compound-unit/sig
(import (quote : sql-quote^))
(link (original : sql-update-internals^ (generic:sql-update-internals@ quote))
(variation : sql-update-internals^ (mixin@ original quote)))
(export (open variation)))))
)