module TG::Setup
Public Class Methods
init_database(database_instance= V.db)
click to toggle source
# File lib/init_db.rb, line 3 def self.init_database database_instance= V.db stored_namespace = ActiveOrient::Model.namespace ActiveOrient::Init.define_namespace { TG } (logger= ActiveOrient::OrientDB.logger).progname= 'TG::Setup#InitDatabase' # because edges are not resolved because of the namingconvention tg_edges = [ :time_of, :day_of, :month_of, :grid_of ] time_base_vertices = [ :stunde, :tag, :monat, :jahr ] edges = V.db.class_hierarchy( base_class: 'E') & tg_edges.map( &:to_s ) vertices = V.db.class_hierarchy( base_class: 'tg_time_base' ) & time_base_vertices.map( &:to_s ) logger.info{ "affected-database-classes: \n #{ (vertices + edges).join(', ')}" } delete_class = -> (c,d) do the_class = ActiveOrient::Model.orientdb_class( name: c, superclass: d) logger.info{ "The Class: "+the_class.to_s+ " removed from Database" } the_class.delete_class end if defined?(TimeBase) vertices.each{|v| delete_class[ v, :tg_time_base ] } delete_class[ :tg_time_base, :V ] end logger.progname= 'TG::Setup#InitDatabase' cleared_database = V.db.database_classes logger.info{ " Creating Classes " } V.create_class :time_base # --> TimeBase # hour, day: month cannot be alloacated, because Day is a class of DateTime and thus is reserved time_base_classes = TimeBase.create_class *time_base_vertices # --> Hour, Day, Month TimeBase.create_property :value, type: :integer # ## this puts an index on child-classes time_base_classes.each{|c| c.create_index c.ref_name+'_value_idx' , type: :notunique, on: :value } # modified naming-convention in model/e.rb edges = E.create_class *tg_edges # --> TIME_OF, :DAY_OF edges.each &:uniq_index # restore namespace ActiveOrient::Init.define_namespace { stored_namespace } V.db.database_classes - cleared_database # return_value end