Skip to content
Snippets Groups Projects
Commit 57b6f101 authored by Wellington Gabriel Vicente de Souza's avatar Wellington Gabriel Vicente de Souza
Browse files

add working model relationships and destroy methods

parent 168b5706
No related branches found
No related tags found
No related merge requests found
......@@ -4,13 +4,14 @@ ActiveRecord::Base.establish_connection :adapter => "sqlite3",
:database => "steamdb.sqlite3"
class Game < ActiveRecord::Base;
has_one :price
has_one :price, dependent: :destroy
belongs_to :developer
has_and_belongs_to_many :categories
has_many :category_games
has_many :categories, through: :category_games, dependent: :destroy
end
class Developer < ActiveRecord::Base;
has_many :games
has_many :games, dependent: :destroy
end
class Price < ActiveRecord::Base;
......@@ -18,5 +19,11 @@ class Price < ActiveRecord::Base;
end
class Category < ActiveRecord::Base;
has_and_belongs_to_many :games
has_many :category_games
has_many :games, through: :category_games, dependent: :destroy
end
class CategoryGame < ActiveRecord::Base;
belongs_to :category
belongs_to :game
end
\ No newline at end of file
......@@ -28,7 +28,7 @@ ActiveRecord::Base.connection.create_table :categories do |t|
t.text :description
end
ActiveRecord::Base.connection.create_table :categories_games, id: false do |t|
ActiveRecord::Base.connection.create_table :category_games, id: false do |t|
t.references :category
t.references :game
end
......@@ -47,14 +47,14 @@ def insere(tabela, args)
case x[0]
when "name"
if is_a_string(x[1])
game.name = x[1];
game.name = x[1].tr('"','')
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}!"
error = true
end
when "description"
if is_a_string(x[1])
game.description = x[1]
game.description = x[1].tr('"','')
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}!"
error = true
......@@ -133,14 +133,14 @@ def insere(tabela, args)
case x[0]
when "name"
if is_a_string(x[1])
category.name = x[1];
category.name = x[1].tr('"','')
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}!"
error = true
end
when "description"
if is_a_string(x[1])
category.description = x[1]
category.description = x[1].tr('"','')
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}!"
error = true
......@@ -155,7 +155,7 @@ def insere(tabela, args)
category.save
puts "Linha inserida na tabela #{tabela}."
end
when "categories_games"
when "category_games"
category_game = CategoryGame.new ()
args.each do |x|
x = x.split("=")
......@@ -195,22 +195,28 @@ def exclui(tabela, args)
case tabela
when "developers"
to_be_deleted = Developer.all
puts to_be_deleted
args.each do |x|
x = x.split("=")
case x[0]
when "id"
if (is_a_integer(x[1]))
to_be_deleted = to_be_deleted.select {|delete| delete.id == x[1].to_i}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "name"
if is_a_string(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.name == x[1].tr('"','')}
else
puts "Erro de Síntaxe: Valor inválido para #{{x[0]}}"
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "country"
if is_a_string(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.country == x[1].tr('"','')}
else
puts "Erro de Síntaxe: Valor inválido para #{{x[0]}}"
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
else
......@@ -221,41 +227,47 @@ def exclui(tabela, args)
end
if to_be_deleted.length > 0
to_be_deleted.each do |d|
d.delete
d.destroy
end
end
when "games"
to_be_deleted = Game.all
puts to_be_deleted
args.each do |x|
x = x.split("=")
case x[0]
when "id"
if (is_a_integer(x[1]))
to_be_deleted = to_be_deleted.select {|delete| delete.id == x[1].to_i}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "name"
if is_a_string(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.name == x[1].tr('"','')}
else
puts "Erro de Síntaxe: Valor inválido para #{{x[0]}}"
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "description"
if is_a_string(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.country == x[1].tr('"','')}
else
puts "Erro de Síntaxe: Valor inválido para #{{x[0]}}"
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "is_released"
if x[1] === "true" || x[1] === "false"
to_be_deleted = to_be_deleted.select {|delete| (delete.is_released == (x[1] === "true" ? true : false))}
else
puts "Erro de Síntaxe: Valor inválido para #{{x[0]}}"
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "description"
when "developer_id"
if is_a_integer(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.developer_id == x[1]}
to_be_deleted = to_be_deleted.select {|delete| delete.developer_id == x[1].to_i}
else
puts "Erro de Síntaxe: Valor inválido para #{{x[0]}}"
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
else
......@@ -266,15 +278,127 @@ def exclui(tabela, args)
end
if to_be_deleted.length > 0
to_be_deleted.each do |d|
d.delete
d.destroy
end
end
when "prices"
to_be_deleted = Price.all
args.each do |x|
x = x.split("=")
case x[0]
when "id"
if (is_a_integer(x[1]))
to_be_deleted = to_be_deleted.select {|delete| delete.id == x[1].to_i}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "price_us"
if is_a_integer(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.price_us == x[1].to_i}
else
puts "Erro de Síntaxe: valor inválido para #{x[0]}"
error = true
end
when "price_br"
if is_a_integer(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.price_br == x[1].to_i}
else
puts "Erro de Síntaxe: valor inválido para #{x[0]}"
error = true
end
when "price_ru"
if is_a_integer(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.price_ru == x[1].to_i}
else
puts "Erro de Síntaxe: valor inválido para #{x[0]}"
error = true
end
when "game_id"
if is_a_integer(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.game_id == x[1].to_i}
else
puts "Erro de Síntaxe: valor inválido para #{x[0]}"
error = true
end
else
puts "Atributo #{x[0]} não encontrado."
error = true;
end
next
end
if to_be_deleted.length > 0
to_be_deleted.each do |d|
d.destroy
end
end
when "categories"
when "categories_games"
to_be_deleted = Category.all
args.each do |x|
x = x.split("=")
case x[0]
when "id"
if (is_a_integer(x[1]))
to_be_deleted = to_be_deleted.select {|delete| delete.id == x[1].to_i}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "name"
if is_a_string(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.name == x[1].tr('"','')}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "description"
if is_a_string(x[1])
to_be_deleted = to_be_deleted.select {|delete| delete.name == x[1].tr('"','')}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
else
puts "Atributo #{x[0]} não encontrado."
error = true;
end
next
end
if to_be_deleted.length > 0
to_be_deleted.each do |d|
d.destroy
end
end
when "category_games"
to_be_deleted = CategoryGame.all
args.each do |x|
x = x.split("=")
case x[0]
when "category_id"
if (is_a_integer(x[1]))
to_be_deleted = to_be_deleted.select {|delete| delete.category_id == x[1].to_i}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
when "game_id"
if (is_a_integer(x[1]))
to_be_deleted = to_be_deleted.select {|delete| delete.category_id == x[1].to_i}
else
puts "Erro de Síntaxe: Valor inválido para #{x[0]}"
error = true
end
else
puts "Atributo #{x[0]} não encontrado."
error = true;
end
next
end
if to_be_deleted.length > 0
to_be_deleted.each do |d|
d.destroy
end
end
else
puts "Tabela #{tabela} não encontrada."
end
......@@ -290,7 +414,7 @@ def altera(tabela)
when "categories"
when "categories_games"
when "category_games"
else
puts "Tabela #{tabela} não encontrada."
......@@ -301,28 +425,33 @@ def lista(tabela)
case tabela
when "developers"
lista = Developer.all
puts "id|name|country"
lista.each do |l|
puts "#{l.id}|#{l.name}|#{l.country}"
end
when "games"
lista = Game.all
puts "id|name|description|is_released|developer_id"
lista.each do |l|
puts "#{l.id}|#{l.name}|#{l.description}|#{l.is_released}|#{l.developer_id}|#{l.price_id}"
puts "#{l.id}|#{l.name}|#{l.description}|#{l.is_released}|#{l.developer_id}"
end
when "prices"
lista = Price.all
puts "id|price_us|price_br|price_ru|game_id"
lista.each do |l|
puts "#{l.id}|#{l.price_us}|#{l.price_br}|#{l.price_ru}|#{l.game_id}"
end
when "categories"
lista = Category.all
puts "id|name|description"
lista.each do |l|
puts "#{l.id}|#{l.name}|#{l.description}"
end
when "categories_games"
when "category_games"
lista = CategoryGame.all
puts "category_id|game_id"
lista.each do |l|
puts "#{l.id}|#{l.category_id}|#{l.game_id}"
puts "#{l.category_id}|#{l.game_id}"
end
else
puts "Tabela #{tabela} não encontrada."
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment