Sha256: eb89e007a3bae08afd4d2b4d222927230fcc86039a081007ecd51fb547ea0325

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'bundler/setup'
require 'groovy'

Groovy.open('./db/2020', :current)
# Groovy.open('./db/2021', :next)

module Groovy::Model::ClassMethods
  def context_name
    Time.now.year == 2020 ? :current : :next
  end

  def table
    obj = db_context[table_name]
    schema.sync(db_context) if obj.nil?
    db_context[table_name]
  end
end

class Category
  include Groovy::Model

  schema do |t|
    t.string :name
    t.timestamps
  end

  scope :named, -> (name) { where(name: name) if name }
end

class Place
  include Groovy::Model

  schema do |t|
    t.reference :categories, "Categories", type: :vector
    t.string :name
    t.string :description, index: true
    t.timestamps
  end

  scope :recent, -> { sort_by(created_at: :desc) }
end

class Location
  include Groovy::Model

  schema do |t|
    t.reference :place, "Places"
    t.string :coords
    t.timestamps
  end
end

# from groonga tests
#
# schema.create_table("Users", :type => :hash, :key_type => "UInt32") { |table| }
#
# schema.create_table("Communities", :type => :hash, :key_type => "ShortText") do |table|
#   table.reference("users", "Users", :type => :vector)
# end
#
# groonga = @communities.add("groonga")
# morita = @users.add(29)
# groonga["users"] = [morita]
#
# assert_equal([29], @users.collect {|record| record.key})
# assert_equal([29], groonga["users"].collect {|record| record.key})

def insert_places(count = 1000)
  puts "Inserting #{count} places!"
  count.times do |i|
    Place.create!(name: "Place #{i}", description: "A nice place")
  end
end

insert_places if Place.count == 0

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
groovy-0.4.0 example/relations.rb