[Nitro] Og::Store (was Re: og regarding legacy apps table hints)
Deborah Hooker
deb at ysabel.org
Fri Aug 19 00:51:21 EDT 2005
George Moschovitis wrote:
>Yeap, as I said, this feature will be available shortly. I am waiting
>for debora (ysabel) to send me some rather interesting Og patches
>before I go on...
>
(Posting to the list because I suspect people might be curious -- this
code is not in a state where it's all that useful on its own just yet,
but is intended to point the way to a new implementation of the
underlying store layer for Og, supporting composite keys and multiple
kinds of inheritance (single-table and table-per-class and mixed) and
easy implementation of new stores. You're welcome to peek at the code
but the extent of the warranty right now is "If you break it, you get to
keep the pieces!" at best. Assume this all falls under the Og license.)
Take a peek at
http://darcs.ysabel.org/cgi-bin/darcs.cgi/og-store/?c=browse or just do
a "darcs get http://darcs.ysabel.org/nitro/og-store". (I just
discovered darcs myself, and I'm really liking it because I do a lot of
development disconnected on my laptop and being able to sync my local
repository with a server _trivially_ is REALLY nice.)
I tried to send email about this this morning but we've been moving our
colocated server due to issues with our provider, and I made the mistake
of saying "It looks like email is working again" in my email, and we all
know how well that summons Murphy.
TODO has a list of the things I know are missing at the moment, but
there's enough there to stumble along in both MySQL and KirbyBase and I
can likely have Postgres and a shot at Oracle pretty quickly. (Need to
implement sequences to support Oracle.)
Oh, and for the record, the mysql-specific store implementation is 61
lines of code, all very simple and straightforward. Postgres will be
about the same, I believe, possibly a line or two more to make sure that
it uses "SERIAL" instead of "AUTO_INCREMENT". Here's the three crucial
method implementations from the mysql-specific code:
def do_query(sql)
@connection.query_with_result = true
@connection.query sql
end
def do_exec(sql)
@connection.query_with_result = false
@connection.query sql
@connection.affected_rows
end
def get_last_insertid
@connection.insert_id
end
--
[ deb at ysabel.org ] - Ysabel - [ http://www.ysabel.org/ ]
More information about the Nitro-general
mailing list