3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# 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'
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
time_base_classes = TimeBase.create_class *time_base_vertices
TimeBase.create_property :value, type: :integer
time_base_classes.each{|c| c.create_index c.ref_name+'_value_idx' , type: :notunique, on: :value }
edges = E.create_class *tg_edges
edges.each &:uniq_index
ActiveOrient::Init.define_namespace { stored_namespace }
V.db.database_classes - cleared_database
end
|