Skip to content

Commit f9b1efe

Browse files
committed
implemetented update
1 parent 56f16bb commit f9b1efe

File tree

3 files changed

+83
-23
lines changed

3 files changed

+83
-23
lines changed

mysqlite/my_sqlite_cli.rb

Lines changed: 64 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
require_relative 'my_sqlite_request'
32

43
class MySQLite
@@ -8,7 +7,6 @@ def initialize
87
end
98
end
109

11-
#SELECT * FROM students.db
1210
def queryUserInput
1311
loop do
1412
print 'my_sqlite_cli>'
@@ -40,10 +38,18 @@ def queryUserInput
4038
table_column=$2
4139
table_data=$3
4240
hash_data_array=[]
43-
split_data = CSV.parse(table_data).first
44-
runInsertQuery(table_name,table_column,hash_data_array,split_data).run
45-
46-
41+
parsed_table_data = CSV.parse(table_data).first
42+
runInsertQuery(table_name,table_column,hash_data_array,parsed_table_data).run
43+
44+
when /(?:UPDATE|update)\s+(\w+)\s+(?:SET|set)\s+(.+?)\s+(?:WHERE|where)\s+(.+)/
45+
46+
table_name="#{$1}.csv"
47+
values=$2
48+
where_conditions=$3
49+
request=runUpdateQuery(table_name,values,where_conditions).run
50+
51+
52+
4753
else
4854
puts 'Invalid query format. Please enter a valid query...e.g..SELECT * FROM database.csv'
4955
end#when
@@ -62,18 +68,18 @@ def runSelectQuery(table_name,column_name)
6268
if column_name=="*"
6369
request = request.select(column_name)
6470
else
65-
columNameArray=column_name.split(",") #was "name,age" now ['name','age']
71+
columNameArray=column_name.split(",")
6672
request = request.select(*columNameArray)
6773
end
6874
return request
6975
end
7076

7177
def runSelectWhereQuery(conditions,table_name,column_name)
7278
request=runSelectQuery(table_name,column_name)
73-
splitted_conditions=conditions.split(",")#["name='Ivica Zubac'", "year_start='1949'"]
79+
splitted_conditions=conditions.split(",")
7480

7581
splitted_conditions.each do |current_condition|
76-
current_pair_array=current_condition.split("=")#["name", "'Matt Zunic'"]
82+
current_pair_array=current_condition.split("=")
7783

7884
condition_array=current_pair_array.map do |condition|
7985
condition.delete_prefix("'").delete_suffix("'")
@@ -90,17 +96,18 @@ def runJoinQuery(join_conditions,table_name,table_name2,column_name)
9096
return request
9197
end
9298

93-
def runInsertQuery(table_name,table_column,hash_data_array,split_data)
99+
def runInsertQuery(table_name,table_column,hash_data_array,parsed_table_data)
94100
if table_column
95101
split_column=table_column.split(",")
96102
split_column.each_with_index do |column,i|
97103
data_hash={}
98-
data_hash[column] = split_data[i]
104+
data_hash[column] = parsed_table_data[i]
99105
hash_data_array<<data_hash
100106
end
101107
102108
end
103109
110+
104111
request = MySqliteRequest.new
105112
request = request.insert(table_name)
106113
if table_column
@@ -110,8 +117,52 @@ def runInsertQuery(table_name,table_column,hash_data_array,split_data)
110117
end
111118
request
112119
end
120+
def runUpdateQuery(table_name,values,where_conditions)
121+
splitted_values=values.split(", ")
122+
values_to_update={}
123+
124+
splitted_values.each do |value_pair|
125+
value_pair_hash={}
126+
#create an hash for eaac pair,then push to an array
127+
value_pair_array=value_pair.split("=")
128+
edited_pair_array=value_pair_array.map do |element|
129+
element.strip
130+
end
131+
132+
value_pair_hash[edited_pair_array[0]]=edited_pair_array[1]
133+
values_to_update.merge!(value_pair_hash)
134+
end
135+
136+
137+
request = MySqliteRequest.new
138+
request = request.update(table_name)
139+
request = request.values(values_to_update)
140+
request = processWhereConditions(where_conditions,request)
141+
request
142+
end
143+
144+
def processWhereConditions(conditions,request)
145+
splitted_conditions=conditions.split(",")
146+
147+
splitted_conditions.each do |current_condition|
148+
current_pair_array=current_condition.split("=")
149+
edited_pair_array=current_pair_array.map do |element|
150+
element.strip
151+
end
152+
request=request.where(*edited_pair_array)
153+
end
154+
return request
155+
end
113156
MySQLite.new
157+
# UPDATE nba_player_data SET name = 'Bill Renamed', year_start = '2330' WHERE name = 'Bill Zopf',year_start='1971'
114158
159+
# request = MySqliteRequest.new
160+
# request = request.update('nba_player_data.csv')
161+
# request = request.values('name' => 'Alaa Renamed2','year_start'=>'2023')
162+
# request = request.where('name', 'Alaa Renamed')
163+
# request = request.where('year_start', '1991')
164+
165+
# the values were received as [{"name"=>"Alaa Renamed2", "year_start"=>"2023"}]
115166
116167
# INSERT INTO nba_player_data (name,year_start,year_end,position,height,weight,birth_date,college) VALUES (Alaa Abdelnaby34,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University)
117168
@@ -134,3 +185,5 @@ def runInsertQuery(table_name,table_column,hash_data_array,split_data)
134185
# request=request.select('*')
135186
# request=request.join('weight','nba_players.csv','weight2')
136187
# request.run
188+
189+
# UPDATE students SET email = 'jane@janedoe.com', blog = 'https://blog.janedoe.com' WHERE name = 'Mila'

mysqlite/my_sqlite_request.rb

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ def select(*variable_columns)# * this converts our parametrs to an array
2727

2828
def where(column_name, value) # During the run() you will filter the result which match the value.
2929
@where_conditions<<{column_name=> value}
30-
@isWhere=true
30+
@isWhere=true
31+
puts @where_conditions.inspect
32+
#[{"name"=>"Matt Zunic"}, {"year_start"=>"2017"}]
33+
#cli wrong
34+
#[{"name "=>" Bill Zopf"}, {" year_start"=>"1971"}]
3135
self
3236
end
3337

@@ -71,6 +75,7 @@ def self.update(table_name)
7175
end
7276
def values(*data) #a hash of data key => value
7377
@dataToInsert=data
78+
puts dataToInsert.inspect #[{"name"=>"Matt Renamed", "year_start"=>"2017"}] normal
7479
self
7580
end
7681
def set(*data) #a hash of data key => value
@@ -328,10 +333,17 @@ def merge(left, right, &block)
328333
result
329334
end
330335
331-
request = MySqliteRequest.new
332-
request = request.insert('nba_player_data.csv')
333-
request = request.values('name' => 'Alaa Abdelnaby', 'year_start' => '1991', 'year_end' => '1995', 'position' => 'F-C', 'height' => '6-10', 'weight' => '240', 'birth_date' => "June 24, 1968", 'college' => 'Duke University')
334-
request.run
336+
# request = MySqliteRequest.new
337+
# request = request.update('nba_player_data.csv')
338+
# request = request.values('name' => 'Matt Renamed','year_start'=>'2017')
339+
# request = request.where('name', 'Matt Zunic')
340+
# request = request.where('year_start', '2017')
341+
342+
# request.run
343+
# request = MySqliteRequest.new
344+
# request = request.insert('nba_player_data.csv')
345+
# request = request.values('name' => 'Alaa Abdelnaby', 'year_start' => '1991', 'year_end' => '1995', 'position' => 'F-C', 'height' => '6-10', 'weight' => '240', 'birth_date' => "June 24, 1968", 'college' => 'Duke University')
346+
# request.run
335347
336348
337349
# request = MySqliteRequest.new

mysqlite/nba_player_data.csv

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
name,year_start,year_end,position,height,weight,birth_date,college
22
Ante Zizic,2018,2018,F-C,6-11,250,"January 4, 1997",
33
Jimmy agabaje2,1983,1983,C,7-1,240,"December 20, 1953",Kent State University
4-
Bill Zopf,1971,1971,G,6-1,170,"June 7, 1948",Duquesne University
4+
'Bill Renamed','2330',1971,G,6-1,170,"June 7, 1948",Duquesne University
5+
Bill Zopf,1972,1971,G,6-1,170,"June 7, 1948",Duquesne University
56
Matt Zunic,2017,2018,C,7-1,265,"March 18, 1997",agege
67
Matt Zunic,1949,1949,G-F,6-3,195,"December 19, 1919",George Washington University
78
1991,1995,F-C,6-10,240,"June 24, 1968",Duke University,
89
'aisha',1991,1995,,6-10,240,"June 24, 1968",Duke University
910
'aisha',1991,,,6-10,240,"June 24, 1968",Duke University
1011
'aisha',1991,1995,,6-10,240,"June 24, 1968",Duke University
11-
Alaa Abdelnaby,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University
12-
Alaa Abdelnaby,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University
13-
Alaa Abdelnaby,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University
14-
maryam34,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University
15-
maryam34,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University
16-
'aisha',1991,1995,,6-10,240,"June 24, 1968",Duke University

0 commit comments

Comments
 (0)