If you have time, I posted a gist containing a data access library I built on top of Rich's sdb library (data.clj), and the modifications I made to his sdb library (sdb.clj) for consistent reads, etc. This is some of the first real clojure code I wrote, so not the prettiest, but maybe you can see some of the pain points I had using the current sdb library.
To summarize: - Whether or not to add asynchronous client support - Not a nice generic way of building up select dsl maps - I believe the select dsl 'where' clause only handles up to two predicates - How to account for nil / blank values - Automatically sync domains with a specified list Certainly some of this belongs above the level of the sdb library, but some of it should be handled there. - Mark On Sun, Feb 27, 2011 at 9:15 AM, Gijs S. <gijsstuur...@gmail.com> wrote: > Yes, my suggestion without type indicators in SDB would look something > like this: > > (def config {:sdb-client (AmazonSimpleDBClient. ...) > :mapping {"Link" {"url" {:encode encode-string :decode > decode-string} > "points" sdb/integer-encoding > "date" {:encode encode-jodadate :decode > decode-jodadate}} > "AnotherDomain" {...}}) > > sdb/integer-encoding would be a library provided encoding/decoding > map. > > In this approach each encoding/decoding pair is defined at the level > of an attribute in a domain. > > A (get-attr config "Link" "id") will go through the mapping in the > config to create a clojure datastructure with each attr properly > decoded. > > A mapping map would allow for a bit more composition then one big > encode fn in the config where a case construct needs to be extended > for each attribute. For instance the mapping could be constructed like > this: {:mapping (merge link-domain-map another-domain-map ...)}. > Perhaps a library could provide a macro that expands (defdomain Link > [url :string, point :int, date {:encode .. :decode ..}]) into such a > mapping map. > > Because this approach doesn't have any type indicators in SDB, every > attribute needs to have an encoding/decoding defined or there needs to > be a default encode/decoding, which for Clojure could be print-string/ > read-string. > > -Gijs > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en