[Dbix-class] Schema::Loader and views on Pg
Dorian Taylor (Lists)
dorian.taylor.lists at gmail.com
Mon May 3 04:56:15 GMT 2010
On 2-May-10, at 12:59 PM, Matt S Trout wrote:
>
> Welcome back.
>
Thanks!
> What about letting S::L pull the column names and then just setting
> the
> primary keys and adding rels as a fixup?
I think what I'm going to do is make the current views into tables and
then use triggers on the database (probably rules actually, then I
don't have to go faffing around with plsql) to append to the logs when
I update. That'll probably perform better in the long run anyway.
In that case, is there a "read-only" base class kicking around to make
it easier to diagnose errant updates (e.g. by croaking when you try to
use a mutator instead of waiting for the database to reject it with an
ACL)?
> Note that once you've got $other_class loaded you can always do
>
> my $source = My::Schema::Foo->result_source_instance;
>
> and then pull the relationships straight out of the main foo source.
>
> See the code in
>
> git://git.shadowcat.co.uk/dbsrights/DBIx-Class-ResultSource-
> MultipleTableInheritance.git
>
> for some interesting Pg madness with views and result source
> introspection
> (also, mad props to Amiri Barksdale for documenting the thing for me
> - just
> waiting for a couple more people to say "yes it works" and I'll see
> about
> shipping it to CPAN)
Tempting, but probably opening a can of worms with versions/deployment
etc. Would prefer to stick to CPAN.
> It only ever sort of worked. In fact, IME it only worked reliably if
> you
> were me (or at least wrote all your add_relationship calls by hand
> with
> explicit join conditions).
>
> After trying about ten different ways to fix it and realising that
> very
> few people used the thing at all, I ripped it out sideways on the
> grounds
> that "never works" was overall less annoying than "mostly works
> except you
> get half way through a project and hit a bug and get an
> incomprehensible
> error message".
Gotcha.
> Also, aliased.pm can pretty much eliminate the extra typing just as
> well :)
Yes, that looks like it would work.
Hmm, is there a way to get Schema::Loader to append arbitrary code to
a selection of the files it generates? like
make_schema_at(append_code => sub {
my $table = shift;
return unless $TABLES{$table};
my $code = generate_extra_code_for($table);
return $code;
}); ?
Thanks,
--
Dorian Taylor
http://doriantaylor.com/
More information about the DBIx-Class
mailing list