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

t/async.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" }
  ] }, {
  "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 )