diff --git a/scsh/odbc/odbc-types.scm b/scsh/odbc/odbc-types.scm new file mode 100644 index 0000000..18c62f2 --- /dev/null +++ b/scsh/odbc/odbc-types.scm @@ -0,0 +1,70 @@ +(define-record-type sql-date :sql-date + (make-sql-date year month day) + sql-date? + (year sql-date-year) + (month sql-date-month) + (day sql-date-day)) + +(define-record-discloser :sql-date + (lambda (rec) + `(sql-date year ,(sql-date-year rec) + month ,(sql-date-month rec) + day ,(sql-date-day rec)))) + +(define-exported-binding "sql-date-record-type" :sql-date) + +(define-record-type sql-time :sql-time + (make-sql-time hour minute second) + sql-time? + (hour sql-time-hour) + (minute sql-time-minute) + (second sql-time-second)) + +(define-record-discloser :sql-time + (lambda (rec) + `(sql-time hour ,(sql-time-hour rec) + minute ,(sql-time-minute rec) + second ,(sql-time-second rec)))) + +(define-exported-binding "sql-time-record-type" :sql-time) + +(define-record-type sql-timestamp :sql-timestamp + (make-sql-timestamp year month day hour minute second fraction) + sql-timestamp? + (year sql-timestamp-year) + (month sql-timestamp-month) + (day sql-timestamp-day) + (hour sql-timestamp-hour) + (minute sql-timestamp-minute) + (second sql-timestamp-second) + (fraction sql-timestamp-fraction)) + +(define-record-discloser :sql-timestamp + (lambda (rec) + `(sql-timestamp year ,(sql-timestamp-year rec) + month ,(sql-timestamp-month rec) + day ,(sql-timestamp-day rec) + hour ,(sql-timestamp-hour rec) + minute ,(sql-timestamp-minute rec) + second ,(sql-timestamp-second rec) + fraction ,(sql-timestamp-fraction rec)))) + +(define-exported-binding "sql-timestamp-record-type" :sql-timestamp) + +(define-record-type sql-numeric :sql-numeric + (make-sql-numeric precision scale sign value) + sql-numeric? + (precision sql-numeric-precision) + (scale sql-numeric-scale) + (sign sql-numeric-sign) + (value sql-numeric-value)) + +(define-record-discloser :sql-numeric + (lambda (rec) + `(sql-numeric precision ,(sql-numeric-precision rec) + scale ,(sql-numeric-scale rec) + sign ,(sql-numeric-sign rec) + value ,(sql-numeric-value rec)))) + +(define-exported-binding "sql-numeric" :sql-numeric) +