Created
December 5, 2014 22:17
-
-
Save rozzzly/aff35a0cb25c512068f8 to your computer and use it in GitHub Desktop.
adnan herlp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/ruby | |
load 'creditCard.rb' | |
require 'sqlite3' | |
begin | |
db = SQLite3::Database.new "test.db" # ! automaticly creates new db, overwrites anything you have currently --> info in db will just be your last action | |
db = SQLite3::Database.open "test.db" | |
db.execute "CREATE TABLE IF NOT EXISTS People(Id INTEGER PRIMARY KEY, # ! fuck the 'Id', SQLite has and auto index, dont have to worry about autoinc, or nuffin | |
Name TEXT, Credit TEXT, Limit INT, Price INT)" | |
rescue SQLite3::Exception => e | |
puts "Exception occurred" | |
puts e | |
ensure | |
db.close if db | |
end | |
data = ARGF.read #ARGF.read is a function @see http://apidock.com/ruby/ARGF/read use | |
people = {} | |
def run(file, people) | |
rand = Random.rand(9999) | |
file.each_line do |line, index| # should work okay if stdin (having the each_line is redundant becausse there will only ever be one line), but with file, no file handle is opened so its going to try to make args out of supplied filename gotta fix that | |
line = line.split(' ') | |
function = line[0] # hold up! check to make sure it even has arguments | |
if function == 'Add' | |
name, cc, limit = line[1..-1] | |
limit = limit[1..-1].to_i | |
people[name] = Credit.new(name, cc, limit) # wait fist check, to make sure user doesnt already exist | |
db.execute "INSERT INTO People VALUES(1,name,cc,limit,0)" # remove first column -- rightnow it will always try to creat a row at rowid == 1. you want more records possily update cc,limit for name if exists. | |
elsif function == 'Charge' | |
name, amount = line[1..-1] | |
amount = amount[1..-1].to_i | |
if people[name].nil? # load list of people | |
puts "Could not find #{name}" | |
else | |
people[name].charge(amount) | |
end | |
elsif function == 'Credit' | |
name, amount = line[1..-1] | |
amount = amount[1..-1].to_i | |
if people[name].nil? | |
puts "Could not find #{name}" | |
else | |
people[name].credit(amount) | |
end | |
end | |
puts people | |
end | |
end | |
run(data, people) | |
####### to run file.txt ####### | |
# | |
# sudo ruby ./basicCC.rb < file.txt | |
# | |
# file.txt | |
# | |
# Add Tom 4111111111111111 $1000 | |
# | |
# Add Lisa 5454545454545454 $3000 | |
# | |
# Add Quincy 1234567890123456 $2000 | |
# | |
# Charge Tom $500 | |
# | |
# Charge Tom $800 | |
# | |
# Charge Lisa $7 | |
# | |
# Credit Lisa $100 | |
# | |
# Credit Quincy $200 | |
# | |
####### to run STDIN ####### | |
# | |
# echo "Add Tom 4111111111111111 $1000" | ruby basicCC.rb | |
# echo "Add Lisa 5454545454545454 $3000" | ruby basicCC.rb | |
# echo "Add Quincy 1234567890123456 $2000" | ruby basicCC.rb | |
# echo "Charge Tom $500" | ruby basicCC.rb | |
# echo "Charge Tom $800" | ruby basicCC.rb | |
# echo "Charge Lisa $7" | ruby basicCC.rb | |
# echo "Credit Lisa $100" | ruby basicCC.rb | |
# echo "Credit Quincy $200" | ruby basicCC.rb | |
# | |
####### to run in shell ####### | |
# | |
# tom = Credit.new("Tom", "4111111111111111", 1000) | |
# lisa = Credit.new("Lisa", "5454545454545454", 3000) | |
# quincy = Credit.new("Quincy", "1234567890123456", 2000) | |
# tom.charge(500) | |
# tom.charge(800) | |
# lisa.charge(7) | |
# lisa.credit(100) | |
# quincy.credit(200) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment