The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Silki::Schema::Role;
{
  $Silki::Schema::Role::VERSION = '0.29';
}

use strict;
use warnings;
use namespace::autoclean;

use Silki::Schema;

use Fey::ORM::Table;
use MooseX::ClassAttribute;

has_policy 'Silki::Schema::Policy';

has_table( Silki::Schema->Schema()->table('Role') );

# For i18n purposes:
# loc( 'Guest' )
# loc( 'Authenticated' )
# loc( 'Member' )
# loc( 'Admin' )

for my $role (qw( Guest Authenticated Member Admin )) {
    class_has $role => (
        is      => 'ro',
        isa     => 'Silki::Schema::Role',
        lazy    => 1,
        default => sub { __PACKAGE__->_FindOrCreateRole($role) },
    );
}

sub _FindOrCreateRole {
    my $class = shift;
    my $name  = shift;

    my $role = eval { $class->new( name => $name ) };

    $role ||= $class->insert( name => $name );

    return $role;
}

__PACKAGE__->meta()->make_immutable();

1;

# ABSTRACT: Represents a role

__END__
=pod

=head1 NAME

Silki::Schema::Role - Represents a role

=head1 VERSION

version 0.29

=head1 AUTHOR

Dave Rolsky <autarch@urth.org>

=head1 COPYRIGHT AND LICENSE

This software is Copyright (c) 2011 by Dave Rolsky.

This is free software, licensed under:

  The GNU Affero General Public License, Version 3, November 2007

=cut