EntityModel
view release on metacpan or search on metacpan
examples/query.pl view on Meta::CPAN
create index a_title on article(title);
create table tag (
idtag bigserial primary key,
name text
);
create index t_name on tag(name);
create table article_tag (
idarticle_tag bigserial primary key,
idarticle bigint references article(idarticle) on delete cascade on update cascade,
idtag bigint references tag(idtag) on delete cascade on update cascade
);
create index at_article on article_tag(idarticle);
create index at_tag on article_tag(idtag);
create table author_tag (
idauthor_tag bigserial primary key,
idauthor bigint references author(idauthor) on delete cascade on update cascade,
idtag bigint references tag(idtag) on delete cascade on update cascade
);
create index aut_author on author_tag(idauthor);
create index au_tag on author_tag(idtag);
create table article_author (
idarticle_author bigserial primary key,
idarticle bigint references article(idarticle) on delete cascade on update cascade,
idauthor bigint references author(idauthor) on delete cascade on update cascade
);
create index aa_article on article_author(idarticle);
create index aa_author on article_author(idauthor);
=cut
"primary" => "idthing",
"field" => [
{ "name" => "idthing", "type" => "int" },
{ "name" => "name", "type" => "varchar" }
] }, {
"name" => "other",
"primary" => "idother",
"field" => [
{ "name" => "idother", "type" => "int" },
{ "name" => "idthing", "type" => "int", "refer" => [
{ table => 'thing', field => 'idthing', delete => 'cascade', update => 'cascade' }
] },
{ "name" => "extra", "type" => "varchar" }
] }, {
"name" => "book",
"primary" => "idbook",
"field" => [
{ "name" => "idbook", "type" => "int" },
{ "name" => "idauthor", "type" => "int", "refer" => [
{ table => 'author', field => 'idauthor', delete => 'cascade', update => 'cascade' }
] },
{ "name" => "title", "type" => "varchar" }
] }, {
"name" => "author",
"primary" => "idauthor",
"field" => [
{ "name" => "idauthor", "type" => "int" },
{ "name" => "idaddress", "type" => "int", "refer" => [
{ table => 'address', field => 'idaddress', delete => 'cascade', update => 'cascade' }
] },
{ "name" => "name", "type" => "varchar" }
] }, {
"name" => "address",
"primary" => "idaddress",
"field" => [
{ "name" => "idaddress", "type" => "int" },
{ "name" => "street", "type" => "varchar" },
{ "name" => "city", "type" => "varchar" },
{ "name" => "country", "type" => "varchar" },
t/general.t view on Meta::CPAN
<type>varchar</type>
<null>true</null>
</field>
<field>
<name>idauthor</name>
<type>bigint</type>
<null>true</null>
<refer>
<table>author</table>
<field>idauthor</field>
<delete>cascade</delete>
<update>cascade</update>
</refer>
</field>
</entity>
<entity>
<name>author</name>
<primary>idauthor</primary>
<field>
<name>idauthor</name>
<type>bigserial</type>
<null>false</null>
t/general.t view on Meta::CPAN
<type>bigserial</type>
<null>false</null>
</field>
<field>
<name>idarticle</name>
<type>bigint</type>
<null>false</null>
<refer>
<table>article</table>
<field>idarticle</field>
<delete>cascade</delete>
<update>cascade</update>
</refer>
</field>
<field>
<name>idtag</name>
<type>bigint</type>
<null>false</null>
<refer>
<table>tag</table>
<field>idtag</field>
<delete>cascade</delete>
<update>cascade</update>
</refer>
</field>
<field>
<name>created</name>
<type>timestamp</type>
</field>
</entity>
</entitymodel>}
});
$model->add_storage(Perl => { });
t/large-model.t view on Meta::CPAN
"primary" => "idthing",
"field" => [
{ "name" => "idthing", "type" => "int" },
{ "name" => "name", "type" => "varchar" }
] }, {
"name" => "other",
"primary" => "idother",
"field" => [
{ "name" => "idother", "type" => "int" },
{ "name" => "idthing", "type" => "int", "refer" => [
{ table => 'thing', field => 'idthing', delete => 'cascade', update => 'cascade' }
] },
{ "name" => "extra", "type" => "varchar" }
] }
] }), 'load model');
ok($model->add_storage(Perl => {}), 'add Perl backend storage');
ok($model->add_support(Perl => {}), 'add Perl class structure');
note sprintf("Took %2.3fms to set up model", (Time::HiRes::time - $start) * 1000.0);
}
# Try creating something with a task-on-commit
( run in 0.560 second using v1.01-cache-2.11-cpan-49f99fa48dc )