Skip to content

Commit 0b31fa8

Browse files
committed
implemeted slect cli
1 parent fa43534 commit 0b31fa8

File tree

4 files changed

+85
-19
lines changed

4 files changed

+85
-19
lines changed

mysqlite/my_sqlite_cli.rb

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
2+
require_relative 'my_sqlite_request'
3+
4+
class MySQLite
5+
def initialize
6+
puts "MySQLite version 0.1 #{Time.now.strftime('%Y-%m-%d')}"
7+
queryUserInput
8+
end
9+
end
10+
11+
#SELECT * FROM students.db
12+
def queryUserInput
13+
loop do
14+
print 'my_sqlite_cli>'
15+
query=gets.chomp
16+
result=''
17+
case query
18+
19+
when 'exit'
20+
puts 'exiting sqlte cli'
21+
break
22+
when /^(\s*(SELECT|select)\s+([\w\s*,]+)\s+(FROM|from)\s+(\S+)\s*(?:(WHERE|where)\s+(.*?))?\s*)$/
23+
24+
column_name=$3
25+
table_name="#{$5}.csv"
26+
where_conditions=$7
27+
result=runSelectQuery(table_name,column_name).run
28+
29+
if where_conditions
30+
result=runSelectWhereQuery(where_conditions,table_name,column_name).run
31+
end
32+
33+
34+
35+
else
36+
puts 'Invalid query format. Please enter a valid query...e.g..SELECT * FROM database.csv'
37+
end#when
38+
puts result.inspect
39+
# return result
40+
end#loop
41+
end#defQuery
42+
43+
# #HELPER FUNCTIONS
44+
45+
46+
47+
def runSelectQuery(table_name,column_name)
48+
request = MySqliteRequest.new
49+
request = request.from(table_name)
50+
if column_name=="*"
51+
request = request.select(column_name)
52+
else
53+
columNameArray=column_name.split(",") #was "name,age" now ['name','age']
54+
request = request.select(*columNameArray)
55+
end
56+
return request
57+
end
58+
59+
def runSelectWhereQuery(conditions,table_name,column_name)
60+
request=runSelectQuery(table_name,column_name)
61+
splitted_conditions=conditions.split(",")#["name=Ivica Zubac", "year_start=1949"]
62+
splitted_conditions.each do |current_condition|
63+
current_pair_array=current_condition.split("=")
64+
request=request.where(*current_pair_array)
65+
end
66+
return request
67+
end
68+
69+
MySQLite.new
70+
# select name,age from nba_player_data.csv

mysqlite/my_sqlite_request.rb

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ def delete
8484
def run
8585

8686
if File.exist?(@table_name)
87-
@hashedDataA=table_to_hashed(@table_name)
87+
@hashedData=table_to_hashed(@table_name)
8888
else
89-
@hashedDataA=create_csv_file(@table_name,@dataToInsert) if !File.exist?(table_name)
89+
@hashedData=create_csv_file(@table_name,@dataToInsert) if !File.exist?(table_name)
9090
end
9191
@selected_hash_array=[]
9292
@filtered_hash_array=[]
@@ -95,15 +95,15 @@ def run
9595

9696

9797
if @isJoin
98-
joined_tables=join_tables(@hashedDataB,@hashedDataA,@filename_db_b,@column_on_db_b,@column_on_db_a)
99-
@hashedDataA=joined_tables
98+
joined_tables=join_tables(@hashedDataB,@hashedData,@filename_db_b,@column_on_db_b,@column_on_db_a)
99+
@hashedData=joined_tables
100100
end
101101

102102

103103
#convert table data in CSV::Row to a HashedData
104104
case @request
105105
when 'select' # select the columns from the each table row and corresponding data
106-
@hashedDataA.each do |current_row|
106+
@hashedData.each do |current_row|
107107
result_hash={}
108108
@all_conditions_met=true;
109109

@@ -163,13 +163,13 @@ def run
163163
164164
when 'delete'
165165
166-
table = CSV.table(@table_name) #delete_if is available in a tableMode
166+
table = CSV.table(@table_name) #delete_if is available in a tableMode,headers in it are symbols
167167
header=CSV.read(@table_name,headers:true).headers
168168
169169
@where_conditions.each do |current_condition|
170170
current_condition.each do |key, value|
171171
# Delete rows that match the condition
172-
table.delete_if do |row|
172+
table.delete_if do |row|
173173
row[key.to_sym] == value
174174
end
175175
end
@@ -187,17 +187,13 @@ def run
187187
188188
@final=csv_array
189189
190-
191-
192-
193-
194-
end#case
190+
end#case
195191
196192
197193
198194
199195
200-
puts @final.inspect
196+
@final
201197
end#of def run
202198
end#of class
203199
@@ -305,11 +301,11 @@ def merge(left, right, &block)
305301
306302
result
307303
end
308-
request = MySqliteRequest.new
309-
request = request.delete()
310-
request = request.from('nba_player_data.csv')
311-
request = request.where('name', 'Paul Zipser')
312-
request.run
304+
# request = MySqliteRequest.new
305+
# request = request.delete()-__+++
306+
# request = request.from('nba_player_data.csv')
307+
# request = request.where('name', 'Paul Zipser')
308+
# request.run
313309
# request = MySqliteRequest.new
314310
# request = request.update('nba_player_data.csv')
315311
# request = request.values('name' => 'Alaa Renamed')

mysqlite/my_sqlite_request.rb.csv

Whitespace-only changes.

mysqlite/nba_player_data.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ 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
44
Bill Zopf,1971,1971,G,6-1,170,"June 7, 1948",Duquesne University
5-
Ivica Zubac,2017,2018,C,7-1,265,"March 18, 1997",
5+
Ivica Zubac,2017,2018,C,7-1,265,"March 18, 1997",agege
66
Matt Zunic,1949,1949,G-F,6-3,195,"December 19, 1919",George Washington University

0 commit comments

Comments
 (0)