diff --git a/T2/steamdb.rb b/T2/steamdb.rb index 7284e2ff4d1a3a025eaca76702f35c5dfebd05c1..f42c55cff0894be9d58eb764e9d9b31540655adc 100644 --- a/T2/steamdb.rb +++ b/T2/steamdb.rb @@ -8,6 +8,35 @@ def is_a_integer (integer) integer =~ /\A\d+\z/ ? true : false end +def parse_input (string) + i = 0 + args = [] + arg = '' + begin_quote = false + string.each_char do |c| + if c == '"' + begin_quote = !begin_quote + end + + if c != ' ' || begin_quote == true + arg = arg + c + else + args[i] = arg + i = i + 1 + arg = '' + end + end + + if !begin_quote + args[i] = arg + elsif + puts "Erro de SÃntaxe: Aspas não encontradas." + args = [] + end + + return args +end + def insere(tabela, args) error = false case tabela @@ -34,9 +63,12 @@ def insere(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true end + if error + break + end next end - if (!error) + if !error dev.save puts "Linha inserida na tabela #{tabela}." end @@ -77,6 +109,9 @@ def insere(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true end + if error + break + end next end if (!error) @@ -120,6 +155,9 @@ def insere(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true end + if error + break + end next end if (!error) @@ -149,6 +187,9 @@ def insere(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true end + if error + break + end next end if (!error) @@ -178,6 +219,9 @@ def insere(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true end + if error + break + end next end if (!error) @@ -223,12 +267,16 @@ def exclui(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true end + if error + break + end next end if to_be_deleted.length > 0 to_be_deleted.each do |d| d.destroy end + puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!" end when "games" to_be_deleted = Game.all @@ -274,12 +322,16 @@ def exclui(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true end + if error + break + end next end if to_be_deleted.length > 0 to_be_deleted.each do |d| d.destroy end + puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!" end when "prices" to_be_deleted = Price.all @@ -325,12 +377,16 @@ def exclui(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true; end + if error + break + end next end if to_be_deleted.length > 0 to_be_deleted.each do |d| d.destroy end + puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!" end when "categories" to_be_deleted = Category.all @@ -362,12 +418,16 @@ def exclui(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true; end + if error + break + end next end if to_be_deleted.length > 0 to_be_deleted.each do |d| d.destroy end + puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!" end when "category_games" to_be_deleted = CategoryGame.all @@ -392,22 +452,29 @@ def exclui(tabela, args) puts "Atributo #{x[0]} não encontrado." error = true; end + if error + break + end next end if to_be_deleted.length > 0 to_be_deleted.each do |d| d.destroy end + puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!" end else puts "Tabela #{tabela} não encontrada." end end -def altera(tabela) +.select {|alt| alt.name == x[1].tr('"','')} + +def altera(tabela, args) + error = false case tabela when "developers" - #???????? como alterar? sintaxe do comando + when "games" when "prices" @@ -464,25 +531,22 @@ end puts "Olá! Seja bem vindo ao SteamDB!" while true do - args = gets.split(" ") + args = parse_input(gets.tr("\n","")) - case args[0] - when "insere" - insere(args[1],args[2..args.length-1]) - when "exclui" - exclui(args[1],args[2..args.length-1]) - when "altera" - altera(args[1],args[2..args.length-1]) - when "lista" - lista(args[1]) - when "sair" - exit() - else - puts "Comando não encontrado." + if args.length > 0 + case args[0] + when "insere" + insere(args[1],args[2..args.length-1]) + when "exclui" + exclui(args[1],args[2..args.length-1]) + when "altera" + altera(args[1],args[2..args.length-1]) + when "lista" + lista(args[1]) + when "sair" + exit() + else + puts "Comando não encontrado." + end end end - - -# 1 x n = 1 usuário tendo vários jogos -# 1 x 1 = 1 jogo só tem 1 tabela de preços (preços por paÃs) -# n x n = vários jogos tem várias categorias