This role implement class to collection name methods for Mongoose objects.


By default will compose the MongoDB collection name from your package name by replacing double-colon :: with underscores _, separating camel-case, such as aB with a_b and uppercase with lowercase letters.

This behaviour can be changed by choosing a named method or by setting the collection naming routine with a closure.

This are the available named methods:

     named method | package name          | collection
     short        | MyApp::Schema::FooBar | foobar
     plural       | MyApp::Schema::FooBar | foobars
     decamel      | MyApp::Schema::FooBar | foo_bar
     lower        | MyApp::Schema::FooBar | myapp::schema::foobar
     upper        | MyApp::Schema::FooBar | MYAPP::SCHEMA::FOOBAR
     undercolon   | MyApp::Schema::FooBar | myapp_schema_foobar
     default      | MyApp::Schema::FooBar | myapp_schema_foo_bar
     none         | MyApp::Schema::FooBar | MyApp::Schema::FooBar

You can choose a predefined naming method

    Mongoose->naming( 'plural' );

... or combine them

    Mongoose->naming( ['decamel','plural' ] );  # same as 'shorties'

If you set a closure it will receive the package name as it only parameter and should return the collection name.

    # plain lowercase
    Mongoose->naming( sub { lc(shift) } );