aboutsummaryrefslogtreecommitdiff
path: root/app/models/backends.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/backends.rb')
-rw-r--r--app/models/backends.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/models/backends.rb b/app/models/backends.rb
new file mode 100644
index 0000000..2e11dfe
--- /dev/null
+++ b/app/models/backends.rb
@@ -0,0 +1,30 @@
+module Backends
+ def self.table_name_prefix
+ 'backends_'
+ end
+
+ def self.classes
+ [
+ Backends::TerraformAws,
+ Backends::TerraformLibvirt
+ ]
+ end
+
+ def self.classes_with_backends
+ classes.select do |backend_class|
+ backend_class.all.any?
+ end
+ end
+
+ def self.all
+ classes.flat_map { |backend| backend.all }
+ end
+
+ def self.find_by_type_and_id(type_and_id)
+ type_name, id = type_and_id.split('=')
+
+ type = classes.find { |c| c.name == type_name }
+
+ type.find(id.to_i)
+ end
+end