DBIx-Class-Schema-Diff

 view release on metacpan or  search on metacpan

t/04_schema_data.t  view on Meta::CPAN

  "Diffing SchemaData object against schema data from dumped JSON file"
);



done_testing;


# This is in a sub at the end just to prevent scrolling since its so long:
sub _sakila_data_target { my $h = {
  schema_class => "TestSchema::Sakila",
  sources => {
    Actor => {
      columns => {
        actor_id => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        first_name => {
          data_type => "varchar",
          is_nullable => 0,
          size => 45
        },
        last_name => {
          data_type => "varchar",
          is_nullable => 0,
          size => 45
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        }
      },
      constraints => {
        primary => {
          columns => [
            "actor_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Actor",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        film_actors => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::FilmActor",
          cond => {
            "foreign.actor_id" => "self.actor_id"
          },
          source => "{schema_class}::Result::FilmActor"
        }
      },
      table_name => "actor"
    },
    ActorInfo => {
      columns => {
        actor_id => {
          data_type => "smallint",
          default_value => 0,
          extra => {
            unsigned => 1
          },
          is_nullable => 0
        },
        film_info => {
          data_type => "varchar",
          is_nullable => 1,
          size => 341
        },
        first_name => {
          data_type => "varchar",
          is_nullable => 0,
          size => 45
        },
        last_name => {
          data_type => "varchar",
          is_nullable => 0,
          size => 45
        }
      },
      constraints => {},
      isa => [
        "{schema_class}::Result::ActorInfo",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {},
      table_name => "actor_info"
    },
    Address => {
      columns => {
        address => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        address2 => {
          data_type => "varchar",
          is_nullable => 1,
          size => 50
        },
        address_id => {

t/04_schema_data.t  view on Meta::CPAN

          is_nullable => 0,
          size => 20
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        },
        phone => {
          data_type => "varchar",
          is_nullable => 0,
          size => 20
        },
        postal_code => {
          data_type => "varchar",
          is_nullable => 1,
          size => 10
        }
      },
      constraints => {
        primary => {
          columns => [
            "address_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Address",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        city => {
          attrs => {
            accessor => "single",
            fk_columns => {
              city_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::City",
          cond => {
            "foreign.city_id" => "self.city_id"
          },
          source => "{schema_class}::Result::City"
        },
        customers => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Customer",
          cond => {
            "foreign.address_id" => "self.address_id"
          },
          source => "{schema_class}::Result::Customer"
        },
        staffs => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Staff",
          cond => {
            "foreign.address_id" => "self.address_id"
          },
          source => "{schema_class}::Result::Staff"
        },
        stores => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Store",
          cond => {
            "foreign.address_id" => "self.address_id"
          },
          source => "{schema_class}::Result::Store"
        }
      },
      table_name => "address"
    },
    Category => {
      columns => {
        category_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        },
        name => {
          data_type => "varchar",
          is_nullable => 0,
          size => 25
        }
      },
      constraints => {
        primary => {
          columns => [
            "category_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Category",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        film_categories => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::FilmCategory",
          cond => {
            "foreign.category_id" => "self.category_id"
          },
          source => "{schema_class}::Result::FilmCategory"
        }
      },
      table_name => "category"
    },
    City => {
      columns => {
        city => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        city_id => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        country_id => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_foreign_key => 1,
          is_nullable => 0
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        }
      },
      constraints => {
        primary => {
          columns => [
            "city_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::City",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        addresses => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Address",
          cond => {
            "foreign.city_id" => "self.city_id"
          },
          source => "{schema_class}::Result::Address"
        },
        country => {
          attrs => {
            accessor => "single",
            fk_columns => {
              country_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Country",
          cond => {
            "foreign.country_id" => "self.country_id"
          },
          source => "{schema_class}::Result::Country"
        }
      },
      table_name => "city"
    },
    Country => {
      columns => {
        country => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        country_id => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        }
      },
      constraints => {
        primary => {
          columns => [
            "country_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Country",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        cities => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::City",
          cond => {
            "foreign.country_id" => "self.country_id"
          },
          source => "{schema_class}::Result::City"
        }
      },
      table_name => "country"
    },
    Customer => {
      columns => {
        active => {
          data_type => "tinyint",
          default_value => 1,
          is_nullable => 0
        },
        address_id => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_foreign_key => 1,
          is_nullable => 0
        },
        create_date => {
          _ic_dt_method => "datetime",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "datetime",
          datetime_undef_if_invalid => 1,
          is_nullable => 0
        },
        customer_id => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        email => {
          data_type => "varchar",
          is_nullable => 1,
          size => 50
        },
        first_name => {
          data_type => "varchar",
          is_nullable => 0,
          size => 45
        },
        last_name => {
          data_type => "varchar",
          is_nullable => 0,
          size => 45
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        },
        store_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_foreign_key => 1,
          is_nullable => 0
        }
      },
      constraints => {
        primary => {
          columns => [
            "customer_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Customer",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        address => {
          attrs => {
            accessor => "single",
            fk_columns => {
              address_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Address",
          cond => {
            "foreign.address_id" => "self.address_id"
          },
          source => "{schema_class}::Result::Address"
        },
        payments => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Payment",
          cond => {
            "foreign.customer_id" => "self.customer_id"
          },
          source => "{schema_class}::Result::Payment"
        },
        rentals => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Rental",
          cond => {
            "foreign.customer_id" => "self.customer_id"
          },
          source => "{schema_class}::Result::Rental"
        },
        store => {
          attrs => {
            accessor => "single",
            fk_columns => {
              store_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Store",
          cond => {
            "foreign.store_id" => "self.store_id"
          },
          source => "{schema_class}::Result::Store"
        }
      },
      table_name => "customer"
    },
    CustomerList => {
      columns => {
        address => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        city => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        country => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        id => {
          data_type => "smallint",
          default_value => 0,
          extra => {
            unsigned => 1
          },
          is_nullable => 0
        },
        name => {
          data_type => "varchar",
          default_value => "",
          is_nullable => 0,

t/04_schema_data.t  view on Meta::CPAN

        rental_duration => {
          data_type => "tinyint",
          default_value => 3,
          extra => {
            unsigned => 1
          },
          is_nullable => 0
        },
        rental_rate => {
          data_type => "decimal",
          default_value => "4.99",
          is_nullable => 0,
          size => [
            4,
            2
          ]
        },
        replacement_cost => {
          data_type => "decimal",
          default_value => "19.99",
          is_nullable => 0,
          size => [
            5,
            2
          ]
        },
        special_features => {
          data_type => "set",
          extra => {
            list => [
              "Trailers",
              "Commentaries",
              "Deleted Scenes",
              "Behind the Scenes"
            ]
          },
          is_nullable => 1
        },
        title => {
          data_type => "varchar",
          is_nullable => 0,
          size => 255
        }
      },
      constraints => {
        primary => {
          columns => [
            "film_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Film",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        film_actors => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::FilmActor",
          cond => {
            "foreign.film_id" => "self.film_id"
          },
          source => "{schema_class}::Result::FilmActor"
        },
        film_categories => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::FilmCategory",
          cond => {
            "foreign.film_id" => "self.film_id"
          },
          source => "{schema_class}::Result::FilmCategory"
        },
        inventories => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Inventory",
          cond => {
            "foreign.film_id" => "self.film_id"
          },
          source => "{schema_class}::Result::Inventory"
        },
        language => {
          attrs => {
            accessor => "single",
            fk_columns => {
              language_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Language",
          cond => {
            "foreign.language_id" => "self.language_id"
          },
          source => "{schema_class}::Result::Language"
        },
        original_language => {
          attrs => {
            accessor => "single",
            fk_columns => {
              original_language_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            join_type => "LEFT",
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Language",
          cond => {
            "foreign.language_id" => "self.original_language_id"
          },
          source => "{schema_class}::Result::Language"
        }
      },
      table_name => "film"
    },
    FilmActor => {
      columns => {
        actor_id => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_foreign_key => 1,
          is_nullable => 0

t/04_schema_data.t  view on Meta::CPAN

            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        },
        store_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_foreign_key => 1,
          is_nullable => 0
        }
      },
      constraints => {
        primary => {
          columns => [
            "inventory_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Inventory",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        film => {
          attrs => {
            accessor => "single",
            fk_columns => {
              film_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Film",
          cond => {
            "foreign.film_id" => "self.film_id"
          },
          source => "{schema_class}::Result::Film"
        },
        rentals => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Rental",
          cond => {
            "foreign.inventory_id" => "self.inventory_id"
          },
          source => "{schema_class}::Result::Rental"
        },
        store => {
          attrs => {
            accessor => "single",
            fk_columns => {
              store_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Store",
          cond => {
            "foreign.store_id" => "self.store_id"
          },
          source => "{schema_class}::Result::Store"
        }
      },
      table_name => "inventory"
    },
    Language => {
      columns => {
        language_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        last_update => {
          _ic_dt_method => "timestamp",
          _inflate_info => {
            deflate => "sub { \"DUMMY\" }",
            inflate => "sub { \"DUMMY\" }"
          },
          data_type => "timestamp",
          datetime_undef_if_invalid => 1,
          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        },
        name => {
          data_type => "char",
          is_nullable => 0,
          size => 20
        }
      },
      constraints => {
        primary => {
          columns => [
            "language_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Language",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        film_languages => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Film",
          cond => {
            "foreign.language_id" => "self.language_id"
          },
          source => "{schema_class}::Result::Film"
        },
        film_original_languages => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Film",
          cond => {
            "foreign.original_language_id" => "self.language_id"
          },
          source => "{schema_class}::Result::Film"
        }
      },
      table_name => "language"
    },
    NicerButSlowerFilmList => {
      columns => {
        actors => {
          data_type => "varchar",
          is_nullable => 1,
          size => 341
        },
        category => {
          data_type => "varchar",
          is_nullable => 0,
          size => 25
        },
        description => {
          data_type => "text",
          is_nullable => 1
        },
        fid => {
          data_type => "smallint",
          default_value => 0,
          extra => {
            unsigned => 1
          },
          is_nullable => 1
        },
        length => {
          data_type => "smallint",
          extra => {
            unsigned => 1
          },
          is_nullable => 1
        },
        price => {
          data_type => "decimal",
          default_value => "4.99",
          is_nullable => 1,
          size => [
            4,
            2
          ]
        },
        rating => {
          data_type => "enum",
          default_value => "G",
          extra => {
            list => [
              "G",
              "PG",
              "PG-13",

t/04_schema_data.t  view on Meta::CPAN

        primary => {
          columns => [
            "rental_id"
          ]
        },
        rental_date => {
          columns => [
            "rental_date",
            "inventory_id",
            "customer_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Rental",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        customer => {
          attrs => {
            accessor => "single",
            fk_columns => {
              customer_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Customer",
          cond => {
            "foreign.customer_id" => "self.customer_id"
          },
          source => "{schema_class}::Result::Customer"
        },
        inventory => {
          attrs => {
            accessor => "single",
            fk_columns => {
              inventory_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Inventory",
          cond => {
            "foreign.inventory_id" => "self.inventory_id"
          },
          source => "{schema_class}::Result::Inventory"
        },
        payments => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Payment",
          cond => {
            "foreign.rental_id" => "self.rental_id"
          },
          source => "{schema_class}::Result::Payment"
        },
        staff => {
          attrs => {
            accessor => "single",
            fk_columns => {
              staff_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Staff",
          cond => {
            "foreign.staff_id" => "self.staff_id"
          },
          source => "{schema_class}::Result::Staff"
        }
      },
      table_name => "rental"
    },
    SaleByFilmCategory => {
      columns => {
        category => {
          data_type => "varchar",
          is_nullable => 0,
          size => 25
        },
        total_sales => {
          data_type => "decimal",
          is_nullable => 1,
          size => [
            27,
            2
          ]
        }
      },
      constraints => {},
      isa => [
        "{schema_class}::Result::SaleByFilmCategory",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {},
      table_name => "sales_by_film_category"
    },
    SaleByStore => {
      columns => {
        manager => {
          data_type => "varchar",

t/04_schema_data.t  view on Meta::CPAN

          data_type => "blob",
          is_nullable => 1
        },
        staff_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        },
        store_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_foreign_key => 1,
          is_nullable => 0
        },
        username => {
          data_type => "varchar",
          is_nullable => 0,
          size => 16
        }
      },
      constraints => {
        primary => {
          columns => [
            "staff_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Staff",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        address => {
          attrs => {
            accessor => "single",
            fk_columns => {
              address_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Address",
          cond => {
            "foreign.address_id" => "self.address_id"
          },
          source => "{schema_class}::Result::Address"
        },
        payments => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Payment",
          cond => {
            "foreign.staff_id" => "self.staff_id"
          },
          source => "{schema_class}::Result::Payment"
        },
        rentals => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Rental",
          cond => {
            "foreign.staff_id" => "self.staff_id"
          },
          source => "{schema_class}::Result::Rental"
        },
        store => {
          attrs => {
            accessor => "single",
            cascade_copy => 0,
            cascade_delete => 0,
            cascade_update => 1,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Store",
          cond => {
            "foreign.manager_staff_id" => "self.staff_id"
          },
          source => "{schema_class}::Result::Store"
        }
      },
      table_name => "staff"
    },
    StaffList => {
      columns => {
        address => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        city => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        country => {
          data_type => "varchar",
          is_nullable => 0,
          size => 50
        },
        id => {
          data_type => "tinyint",
          default_value => 0,
          extra => {
            unsigned => 1
          },
          is_nullable => 0
        },
        name => {
          data_type => "varchar",
          default_value => "",
          is_nullable => 0,
          size => 91
        },
        phone => {
          data_type => "varchar",
          is_nullable => 0,
          size => 20
        },
        sid => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_nullable => 0
        },
        "zip code" => {
          accessor => "zip_code",
          data_type => "varchar",
          is_nullable => 1,
          size => 10

t/04_schema_data.t  view on Meta::CPAN

          default_value => "\\\"current_timestamp\"",
          is_nullable => 0
        },
        manager_staff_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_foreign_key => 1,
          is_nullable => 0
        },
        store_id => {
          data_type => "tinyint",
          extra => {
            unsigned => 1
          },
          is_auto_increment => 1,
          is_nullable => 0
        }
      },
      constraints => {
        idx_unique_manager => {
          columns => [
            "manager_staff_id"
          ]
        },
        primary => {
          columns => [
            "store_id"
          ]
        }
      },
      isa => [
        "{schema_class}::Result::Store",
        "DBIx::Class::InflateColumn::DateTime",
        @Core_ISA,
      ],
      relationships => {
        address => {
          attrs => {
            accessor => "single",
            fk_columns => {
              address_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Address",
          cond => {
            "foreign.address_id" => "self.address_id"
          },
          source => "{schema_class}::Result::Address"
        },
        customers => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Customer",
          cond => {
            "foreign.store_id" => "self.store_id"
          },
          source => "{schema_class}::Result::Customer"
        },
        inventories => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Inventory",
          cond => {
            "foreign.store_id" => "self.store_id"
          },
          source => "{schema_class}::Result::Inventory"
        },
        manager_staff => {
          attrs => {
            accessor => "single",
            fk_columns => {
              manager_staff_id => 1
            },
            is_deferrable => 1,
            is_depends_on => 1,
            is_foreign_key_constraint => 1,
            on_delete => "CASCADE",
            on_update => "CASCADE",
            undef_on_null_fk => 1
          },
          class => "{schema_class}::Result::Staff",
          cond => {
            "foreign.staff_id" => "self.manager_staff_id"
          },
          source => "{schema_class}::Result::Staff"
        },
        staffs => {
          attrs => {
            accessor => "multi",
            cascade_copy => 0,
            cascade_delete => 0,
            is_depends_on => 0,
            join_type => "LEFT"
          },
          class => "{schema_class}::Result::Staff",
          cond => {
            "foreign.store_id" => "self.store_id"
          },
          source => "{schema_class}::Result::Staff"
        }
      },
      table_name => "store"
    }
  }
  };
  
  # Starting with the next release of DBIC (v0.082800) the new 'is_depends_on'
  # attr is present in relationships. For backward compatibility with earlier
  # versions, we need to go in and strip this attr out of the structure above
  #  (see:  https://github.com/dbsrgits/dbix-class/commit/d0cefd99a )
  if(DBIx::Class->VERSION <= 0.082700) {
    for my $rsrc (values %{$h->{sources}}) {
      my $rels = $rsrc->{relationships} or next;
      delete $rels->{$_}{attrs}{is_depends_on} for (keys %$rels); 
    }
  }

  return $h;
}



# -- for debugging:
#
#use Data::Dumper::Concise;
#sub Dumper { DumperObject->Deparse(0)->Values([ @_ ])->Dump }
#print STDERR "\n\n" . Dumper(
#  $SD1->data
#) . "\n\n";



( run in 0.874 second using v1.01-cache-2.11-cpan-39bf76dae61 )