chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] A call to arms


From: Andrew Gwozdziewycz
Subject: Re: [Chicken-users] A call to arms
Date: Fri, 23 Jan 2009 06:04:18 -0500


On Jan 22, 2009, at 8:00 PM, Alaric Snell-Pym wrote:
All of this is why I decided Wings should sit above this - all it
cares about is getters and setters. If you get those getters and
setters from an OR mapping engine, or something that just wraps SQL
queries:

(define-sql-row flight-cost (id cost))

(make-sql-getter *db-connection* flight-costs "SELECT id,cost FROM
flights WHERE cost < [[cost]] AND destination = [[destination]]")
-> #<procedure (? cost destination)>

Call that function on a cost and destination, and get back a list of
flight-cost records (define-sql-row is much like define-record, except
it makes a constructor that works from an SQL result)

(define-sql-row flight-details (id cost destination))

(make-sql-record-source *db-connection* flight-details "flights" ("id"))

...by introspecting into the structure of flight-details, produces a
function that does:

SELECT id,cost,destination FROM flights WHERE id = ?

...and which has a setter that, given an id and a flight-details-
record, does:

UPDATE flights SET id=?,cost=?,destination=? WHERE id = ?

By putting the abstraction layer above the level of "how the structure
of a result is specified", we can get away with doing all sorts of
different things.


This is very interesting. Is it possible to use different database engines
with this? I guess what I'm trying to figure out is, is there a database 
independent interface to all these databases in Wings? 

--





reply via email to

[Prev in Thread] Current Thread [Next in Thread]