class Arql::Definition
Public Class Methods
models()
click to toggle source
# File lib/arql/definition.rb, line 82 def models @@models ||= [] end
new(options)
click to toggle source
# File lib/arql/definition.rb, line 152 def initialize(options) @@options = options @@models = [] ActiveRecord::Base.connection.tap do |conn| Object.const_set('ArqlModel', Class.new(ActiveRecord::Base) do include ::Arql::Concerns::TableDataDefinition self.abstract_class = true define_singleton_method(:indexes) do conn.indexes(table_name).map do |idx| { Table: idx.table, Name: idx.name, Columns: idx.columns.join(', '), Unique: idx.unique, Comment: idx.comment } end.t end end) conn.tables.each do |table_name| table_comment = conn.table_comment(table_name) conn.primary_key(table_name).tap do |pkey| table_name.camelize.tap do |const_name| const_name = 'Modul' if const_name == 'Module' const_name = 'Clazz' if const_name == 'Class' Class.new(::ArqlModel) do include Arql::Extension if pkey.is_a?(Array) self.primary_keys = pkey else self.primary_key = pkey end self.table_name = table_name self.inheritance_column = nil self.default_timezone = :local if options[:created_at].present? define_singleton_method :timestamp_attributes_for_create do options[:created_at] end end if options[:updated_at].present? define_singleton_method :timestamp_attributes_for_update do options[:updated_at] end end end.tap do |clazz| Object.const_set(const_name, clazz).tap do |const| const_name.gsub(/[a-z]*/, '').tap do |bare_abbr| abbr_const = nil 9.times do |idx| abbr = idx.zero? ? bare_abbr : "#{bare_abbr}#{idx+1}" unless Object.const_defined?(abbr) Object.const_set abbr, const abbr_const = abbr break end end @@models << { model: const, abbr: abbr_const, table: table_name, comment: table_comment } end end end end end end end end
redefine()
click to toggle source
# File lib/arql/definition.rb, line 86 def redefine options = @@options @@models.each do |model| Object.send :remove_const, model[:model].name.to_sym if model[:model] Object.send :remove_const, model[:abbr].to_sym if model[:abbr] end @@models = [] ActiveRecord::Base.connection.tap do |conn| conn.tables.each do |table_name| table_comment = conn.table_comment(table_name) conn.primary_key(table_name).tap do |pkey| table_name.camelize.tap do |const_name| const_name = 'Modul' if const_name == 'Module' const_name = 'Clazz' if const_name == 'Class' Class.new(::ArqlModel) do include Arql::Extension if pkey.is_a?(Array) self.primary_keys = pkey else self.primary_key = pkey end self.table_name = table_name self.inheritance_column = nil self.default_timezone = :local if options[:created_at].present? define_singleton_method :timestamp_attributes_for_create do options[:created_at] end end if options[:updated_at].present? define_singleton_method :timestamp_attributes_for_update do options[:updated_at] end end end.tap do |clazz| Object.const_set(const_name, clazz).tap do |const| const_name.gsub(/[a-z]*/, '').tap do |bare_abbr| abbr_const = nil 9.times do |idx| abbr = idx.zero? ? bare_abbr : "#{bare_abbr}#{idx+1}" unless Object.const_defined?(abbr) Object.const_set abbr, const abbr_const = abbr break end end @@models << { model: const, abbr: abbr_const, table: table_name, comment: table_comment } end end end end end end end App.instance&.load_initializer! end
Public Instance Methods
a()
click to toggle source
# File lib/arql/definition.rb, line 236 def a to_a end
dump(filename, batch_size=500)
click to toggle source
# File lib/arql/definition.rb, line 248 def dump(filename, batch_size=500) records.dump(filename, batch_size) end
t(*attrs, **options)
click to toggle source
# File lib/arql/definition.rb, line 228 def t(*attrs, **options) records.t(*attrs, **options) end
v()
click to toggle source
# File lib/arql/definition.rb, line 232 def v records.v end
write_csv(filename, *fields, **options)
click to toggle source
# File lib/arql/definition.rb, line 240 def write_csv(filename, *fields, **options) records.write_csv(filename, *fields, **options) end
write_excel(filename, *fields, **options)
click to toggle source
# File lib/arql/definition.rb, line 244 def write_excel(filename, *fields, **options) records.write_excel(filename, *fields, **options) end