sql/generic/sql-data-sig.ss
#lang scheme/signature

; Conversion between Scheme and DBMS primitives.
;
; This signature provides procedures for converting between Scheme and database primitives.
; Procedures in this file do NOT have a one-to-one mapping to Snooze field types: rather
; they are defined as needed as helpers for the definitions in type-unit.ss.
;
; "Escaping" data involves converting a Scheme primitive into a corresponding string for
; insertion into SQL. "Parsing" data involves converting the value from the result of a
; query back into a Scheme primitive.
;
; Depending on the library used to actually connect to the database, the target of
; escaping and the source of parsing may not necessarily be the same thing. Hence,
; escaping and parsing are not necessarily reciprocal operations.
;
; A Scheme data type may be stored differently by different database backends. Snooze
; does not guarantee that data in one DBMS can be ported to another without conversion.
; Snooze currently does not provide software tools for migrating from database to
; database.

; type any -> string
escape-value

; type any -> any
parse-value

; (listof type) -> ((U (vectorof database-value) #f) -> (U (vectorof scheme-value) #f))
make-parser