#!/usr/bin/env ruby
## loads the active-orient environment
## and starts an interactive shell
##
## Parameter:
## production (p)
## development (d) [default]
## test (t)
require 'bundler/setup'
require 'terminal-table'
require 'zeitwerk'
require 'pastel'
require 'arcade'
#require 'pry'
#begin
def browse db: Arcade::Api.databases.first , extended: false
headings = -> do
ar= ["","Name" , "Parents", "Type","Properties", 'Unique', 'Automatic']
extended ? ar : ar - ['Properties']
end
rows = ->(r) do
ar=["Type", r[:name],r[:parent_types],r[:type]," " , " "]
!extended ? ar : ar + [""]
end
indizes = ->(i) do
if extended
["Index",i[:name], "on #{i[:typeName]}", i[:type],i[:properties], i[:unique],i[:automatic] ]
else
["Index",i[:name], "", i[:type], i[:unique],i[:automatic] ]
end
end
list= Arcade::Api.query db, "select from schema:types"
if list.is_a? Array
Terminal::Table.new do |t|
add_additional_separator =false
t.title = "Database: #{db}"
t.headings = headings.call
# t.style = { :border => :markdown }
t.style = { border: :unicode_thick_edge }
list.each.with_index do |row,j|
t.add_separator if (add_additional_separator || !row[:indexes].empty? || !row[:properties].empty?) && j >0
add_additional_separator =false
t.add_row rows[row]
if !row[:indexes].empty?
add_additional_separator = true
row[:indexes].each do |i|
t.add_row indizes[i]
end
end
if !row[:properties].empty?
add_additional_separator = true
row[:properties].each do |p|
ar= ["Property",p[:name],"",p[:type]," "," "]
t.add_row !extended ? ar : ar + [""]
end
end
end
end
else
list
end
end
include Arcade
def help
p = Pastel.new
c = p.bright_white.bold.on_yellow.detach
g = p.green.on_black.detach
puts "-"*80
puts " Namespace is: Arcade ! "
puts ""
puts c[" Essential ArcadeDB-Statements "]
puts " ----------------------------"
puts g[" Api.databases "]+" # returns an Array of known databases "
puts g[" Api.create_database "] + " # returns true if successfull "
puts g[" Api.drop_database "]
puts ""
puts " Create and fetch documents and vertices"
puts " ----------------------------"
puts g[" Api.create_document , , attribute: value , ... "]
puts g[" Api.get_record , "] +"# returns a hash "
puts ""
puts " submit queries"
puts " ----------------------------"
puts g[" Api.execute( ) { } "]+" #submit query as block"
puts g[" Api.query , "]
puts ""
puts " -----------------------------"
puts " Display the database-structure"
puts g[" puts browse db: \"name\", extended: \"false|true\" "]+ "browses the first database found, "
puts " if called without parameters"
puts " Display this helpscreen: "+ g["help"]
puts "-"*80
puts ""
end
help
e= ARGV.empty? ? :development : ARGV.last.downcase.to_sym
## load test model files
#require "#{__dir__}/../spec/model_helper"
loader = Zeitwerk::Loader.new
loader.push_dir ("#{__dir__}/../spec/model")
loader.setup
puts "DB = Arcade::Database-instance"
DB = Arcade::Init.connect e
#require 'pry'
require 'irb'
ARGV.clear
#begin
IRB.start(__FILE__)
#rescue ArgumentError => e
# puts e
## retry
#end
#Pry.start(__FILE__)