The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DBIx::Class::Schema::Critic::Policy - Role for criticizing database schemas

VERSION

version 0.005

SYNOPSIS

    package DBIx::Class::Schema::Critic::Policy::MyPolicy;
    use Moose;
    use MooseX::Types::DBIx::Class 'ResultSource';

    has description => (default => 'Follow my policy');
    has explanation => (default => 'My way or the highway');
    has applies_to => (
        isa     => 'ArrayRef[Moose::Meta::TypeConstraint]',
        default => sub { [ResultSource] },
    );
    with 'DBIx::Class::Schema::Critic::Policy';

    sub violates { $_[0]->element ne '' }

DESCRIPTION

This is a Moose::Role consumed by all DBIx::Class::Schema::Critic policy plugins.

ATTRIBUTES

element

Read-only accessor for the current schema element being examined by DBIx::Class::Schema::Critic, as an instance of DBICType.

schema

Read-only accessor for the current schema object being examined by DBIx::Class::Schema::Critic.

METHODS

violation

Given a string description of a violation that has been encountered, creates a new DBIx::Class::Schema::Critic::Violation object from the current policy.

REQUIRED METHODS

description

Returns a short string describing what's wrong.

explanation

Returns a string giving further details.

applies_to

Returns an array reference of TypeConstraints s indicating what part(s) of the schema the policy is interested in. Select from the list defined in DBICType.

violates

Role consumers must implement a violates method that returns true if the policy is violated and false otherwise, based on attributes provided by the role. Callers should call the violates method as the following:

    $policy->violates($element, $schema);
Arguments: $element, $schema
Return value: nothing if the policy passes, or a DBIx::Class::Schema::Critic::Violation object if it doesn't.

SUPPORT

Perldoc

You can find documentation for this module with the perldoc command.

  perldoc DBIx::Class::Schema::Critic

Websites

The following websites have more information about this module, and may be of help to you. As always, in addition to those websites please use your favorite search engine to discover more resources.

Bugs / Feature Requests

Please report any bugs or feature requests through the web interface at https://github.com/mjgardner/DBIx-Class-Schema-Critic/issues. You will be automatically notified of any progress on the request by the system.

Source Code

The code is open to the world, and available for you to hack on. Please feel free to browse it and play with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull from your repository :)

https://github.com/mjgardner/DBIx-Class-Schema-Critic

  git clone git://github.com/mjgardner/DBIx-Class-Schema-Critic.git

AUTHOR

Mark Gardner <mjgardner@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Mark Gardner.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.