diff options
| author | franck cuny <franck@lumberjaph.net> | 2011-06-13 16:33:23 +0200 |
|---|---|---|
| committer | franck cuny <franck@lumberjaph.net> | 2011-06-13 16:33:23 +0200 |
| commit | 871336c030209b46ae6b124a702677363487f9a8 (patch) | |
| tree | 86f234d42c68b26a7aeb9cc373667127ad661e19 /lib/GitHub/Collector/Role/MongoDB.pm | |
| parent | use template_toolkit and add infos about colors (diff) | |
| download | stargit-871336c030209b46ae6b124a702677363487f9a8.tar.gz | |
import github::collector
Signed-off-by: franck cuny <franck@lumberjaph.net>
Diffstat (limited to '')
| -rw-r--r-- | lib/GitHub/Collector/Role/MongoDB.pm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/GitHub/Collector/Role/MongoDB.pm b/lib/GitHub/Collector/Role/MongoDB.pm new file mode 100644 index 0000000..e4cc5b1 --- /dev/null +++ b/lib/GitHub/Collector/Role/MongoDB.pm @@ -0,0 +1,41 @@ +package GitHub::Collector::Role::MongoDB; + +use Moose::Role; +use MongoDB; + +has mongodb => ( + is => 'ro', + isa => 'Object', + lazy => 1, + default => sub { + my $self = shift; + my $conn = + MongoDB::Connection->new( timeout => 60000, query_timeout => 60000 ); + my $db = $conn->github; + $self->_create_indexes($db); + return $db; + }, + handles => { + db_profiles => 'profiles', + db_repositories => 'repositories', + db_relations => 'relations', + db_contributors => 'contributors', + db_edges => 'edges', + } +); + +sub _create_indexes { + my ( $self, $db ) = @_; + + $db->profiles->ensure_index( { login => 1 }, { unique => 1 } ); + $db->repositories->ensure_index( { uniq_name => 1 }, { unique => 1 } ); + $db->contributors->ensure_index( { project => 1 } ); + $db->contributors->ensure_index( { owner => 1 } ); + $db->relations->ensure_index( { source => 1 } ); + $db->relations->ensure_index( { target => 1 } ); + $db->relations->ensure_index( { login => 1 } ); + $db->edges->ensure_index({source => 1}); + $db->edges->ensure_index({target => 1}); +} + +1; |
