diff --git a/devops-service/db/mongo/connectors/base.rb b/devops-service/db/mongo/connectors/base.rb index 0bc6499..9e5f762 100644 --- a/devops-service/db/mongo/connectors/base.rb +++ b/devops-service/db/mongo/connectors/base.rb @@ -6,10 +6,24 @@ require "exceptions/invalid_privileges" module Connectors class Base + # если хотим создавать индексы при старте приложения, нужно сначала создать коллекцию + def initialize db + names = db.collection_names + unless names.include?(self.collection_name) + db.create_collection(self.collection_name) + puts "Collection '#{self.collection_name}' has been created" + end + self.collection = db.collection(self.collection_name) + end + def create_indexes end + def collection_name + raise "owerride me" + end + # Yes, we can implement connectors without attr_accessor, storing collection directly # in instance variable like # @collection = db.collection('users') diff --git a/devops-service/db/mongo/connectors/filter.rb b/devops-service/db/mongo/connectors/filter.rb index 9cd4ba5..8fde9c1 100644 --- a/devops-service/db/mongo/connectors/filter.rb +++ b/devops-service/db/mongo/connectors/filter.rb @@ -2,7 +2,11 @@ module Connectors class Filter < Base def initialize(db) - self.collection = db.collection('filters') + super(db) + end + + def collection_name + 'filters' end def available_images provider diff --git a/devops-service/db/mongo/connectors/image.rb b/devops-service/db/mongo/connectors/image.rb index f681064..c3ecac8 100644 --- a/devops-service/db/mongo/connectors/image.rb +++ b/devops-service/db/mongo/connectors/image.rb @@ -9,7 +9,11 @@ module Connectors Helpers::UpdateCommand def initialize(db) - self.collection = db.collection('images') + super(db) + end + + def collection_name + 'images' end def images(provider=nil) diff --git a/devops-service/db/mongo/connectors/key.rb b/devops-service/db/mongo/connectors/key.rb index c2bfd9e..cdbd2c4 100644 --- a/devops-service/db/mongo/connectors/key.rb +++ b/devops-service/db/mongo/connectors/key.rb @@ -7,7 +7,11 @@ module Connectors Helpers::DeleteCommand def initialize(db) - self.collection = db.collection('keys') + super(db) + end + + def collection_name + 'keys' end def key(id, scope=nil) diff --git a/devops-service/db/mongo/connectors/project.rb b/devops-service/db/mongo/connectors/project.rb index 14e89b9..058ebff 100644 --- a/devops-service/db/mongo/connectors/project.rb +++ b/devops-service/db/mongo/connectors/project.rb @@ -8,7 +8,11 @@ module Connectors def initialize(db) - @collection = db.collection('projects') + super(db) + end + + def collection_name + 'projects' end def is_project_exists?(project) diff --git a/devops-service/db/mongo/connectors/project_template.rb b/devops-service/db/mongo/connectors/project_template.rb index e461edd..11bcfbd 100644 --- a/devops-service/db/mongo/connectors/project_template.rb +++ b/devops-service/db/mongo/connectors/project_template.rb @@ -8,7 +8,11 @@ module Connectors def initialize(db) - @collection = db.collection('project_templates') + super(db) + end + + def collection_name + 'project_templates' end end end diff --git a/devops-service/db/mongo/connectors/report.rb b/devops-service/db/mongo/connectors/report.rb index 4c7075e..8c5b199 100644 --- a/devops-service/db/mongo/connectors/report.rb +++ b/devops-service/db/mongo/connectors/report.rb @@ -6,7 +6,11 @@ module Connectors Helpers::ListCommand def initialize(db) - self.collection = db.collection('reports') + super(db) + end + + def collection_name + 'reports' end def save_report r diff --git a/devops-service/db/mongo/connectors/server.rb b/devops-service/db/mongo/connectors/server.rb index bfebcc2..4ab4fea 100644 --- a/devops-service/db/mongo/connectors/server.rb +++ b/devops-service/db/mongo/connectors/server.rb @@ -5,7 +5,11 @@ module Connectors def initialize(db) - self.collection = db.collection('servers') + super(db) + end + + def collection_name + 'servers' end def servers_find(query, fields=nil) diff --git a/devops-service/db/mongo/connectors/stack.rb b/devops-service/db/mongo/connectors/stack.rb index 958ba16..feee768 100644 --- a/devops-service/db/mongo/connectors/stack.rb +++ b/devops-service/db/mongo/connectors/stack.rb @@ -7,7 +7,11 @@ module Connectors Helpers::UpdateCommand def initialize(db) - self.collection = db.collection('stacks') + super(db) + end + + def collection_name + 'stacks' end def stacks(options={}) diff --git a/devops-service/db/mongo/connectors/stack_template.rb b/devops-service/db/mongo/connectors/stack_template.rb index 172f1a1..51f8b4b 100644 --- a/devops-service/db/mongo/connectors/stack_template.rb +++ b/devops-service/db/mongo/connectors/stack_template.rb @@ -8,7 +8,11 @@ module Connectors Helpers::UpdateCommand def initialize(db) - self.collection = db.collection('stack_templates') + super(db) + end + + def collection_name + "stack_templates" end def stack_templates(provider=nil) diff --git a/devops-service/db/mongo/connectors/statictic.rb b/devops-service/db/mongo/connectors/statictic.rb index b797c23..83927f2 100644 --- a/devops-service/db/mongo/connectors/statictic.rb +++ b/devops-service/db/mongo/connectors/statictic.rb @@ -2,7 +2,11 @@ module Connectors class Statistic < Base def initialize(db) - self.collection = db.collection('statistic') + super(db) + end + + def collection_name + 'statistic' end def insert_statistic(user, path, method, body, response_code) @@ -45,7 +49,8 @@ module Connectors private def mongo_sort_order(order) - raise "Wrong sort order" unless %w(asc desc).include?(order) + # asc by default and if order id invalid value, it is not a reason for response with code 500 + #raise "Wrong sort order" unless %w(asc desc).include?(order) order == 'asc' ? 1 : -1 end diff --git a/devops-service/db/mongo/connectors/user.rb b/devops-service/db/mongo/connectors/user.rb index 526839d..5699811 100644 --- a/devops-service/db/mongo/connectors/user.rb +++ b/devops-service/db/mongo/connectors/user.rb @@ -8,7 +8,11 @@ module Connectors Helpers::UpdateCommand def initialize(db) - self.collection = db.collection('users') + super(db) + end + + def collection_name + 'users' end def user_auth user, password