Bread::Board
file: code/Example::Bread::Board
1: my $c = container 'Winxle::API::CreateCampaign' => as {
2: container 'Controller' => as {
3: service 'campaign_api' => (
4: class => 'Winxle::API::CreateCampaign::Ctrl::Campaign',
5: lifecycle => 'Singleton',
6: dependencies => {
7: campaign_model => '/Model/Campaign',
8: user_model => '/Model/User',
9: }
10: );
11: };
12: container 'Model' => as {
13: service 'User' => (
14: class => 'Winxle::Model::User',
15: lifecycle => 'Singleton',
16: dependencies => {
17: schema => '/DB/schema',
18: },
19: );
20: service 'Campaign' => (
21: class => 'Winxle::API::CreateCampaign::Model::Campaign',
22: lifecycle => 'Singleton',
23: dependencies => {
24: schema => '/DB/schema',
25: conf => '/Config/config',
26: },
27: );
28: };
29:
30: container DB => as {
31: service 'base_name' => 'winxle';
32: service 'schema_name' => 'Winxle::Schema';
33:
34: service db_connect => (
35: lifecycle => "Singleton",
36: class => 'Validad::Tools::DB::Connect::PgService::MultiRole',
37: dependencies => [qw( base_name schema_name)]
38: );
39: service 'schema' => (
40: lifecycle => "Singleton",
41: block => sub {
42: my $s = shift;
43: return $s->param('db_connect')->schema;
44: },
45: dependencies => ['db_connect'],
46: );
47: };
48:
49: container 'Config' => as {
50: service 'config' => (
51: lifecycle => "Singleton",
52: class => 'Config::JFDI',
53: dependencies => {
54: name => service( name => "winxle-api-createcampaign" ),
55: path => '/Path/etc',
56: },
57: );
58: };
59:
60: container Path => as {
61: service etc => dir('etc');
62: };
63: };
64:
65: 1;