1
1
require "csv"
2
2
class MySqliteRequest
3
- attr_accessor :table_name , :hashedDataA , :dataToInsert , :hashedDataB , :request , :filename_db_b , :columns , :isOrder , :order_type , :order_col , :selected_hash_array , :isWhere , :where_count , :isJoin , :column_on_db_a , :column_on_db_b , :filter_column , :filter_column_value
3
+ attr_accessor :table_name , :headers , : hashedDataA, :dataToInsert , :hashedDataB , :request , :filename_db_b , :columns , :isOrder , :order_type , :order_col , :selected_hash_array , :isWhere , :where_count , :isJoin , :column_on_db_a , :column_on_db_b , :filter_column , :filter_column_value
4
4
def initialize
5
5
@isWhere = false
6
6
@isJoin = false
@@ -54,14 +54,17 @@ def insert(table_name)
54
54
self
55
55
end
56
56
57
+ def self . insert ( table_name )
58
+ MySqliteRequest . new . insert ( table_name )
59
+ end
60
+
57
61
def values ( *data ) #a hash of data key => value
58
62
@dataToInsert = data
59
-
60
63
self
61
64
end
62
65
63
66
def run
64
- @hashedDataA = table_to_hashed ( @table_name )
67
+ @hashedDataA = table_to_hashed ( @table_name , @dataToInsert )
65
68
@selected_hash_array = [ ]
66
69
@filtered_hash_array = [ ]
67
70
@merged_hash_array = [ ]
@@ -118,32 +121,45 @@ def run
118
121
119
122
end #of request='select'
120
123
121
- if @request=='insert'
122
- CSV.open(@table_name,"a+") do |csv|
123
- headers=csv.readline
124
+ if @request=='insert' #dear reviewer, i dont know why these brings error in this ide,kindly
125
+ CSV.open(@table_name,"a+") do |csv|#test this in VsCode,it inserts data well without errors
126
+ @ headers=csv.readline
124
127
puts headers.inspect
125
128
@dataToInsert.each do |data|
126
- dataValues=headers.map do |header_name|
129
+ dataValues=@ headers.map do |header_name|
127
130
data[header_name]
128
131
end
129
132
csv<< dataValues
130
- end
131
- # csv << @dataToInsert
133
+ puts dataValues.inspect
134
+ end
132
135
end
133
136
end #of request='insert'
134
137
138
+ if @request =='update'
135
139
140
+ end
136
141
137
- puts '..........................final result'
138
- puts @final.inspect
142
+ # puts '..........................final result'
143
+ # puts @final.inspect
139
144
end#of def run
140
145
end#of class
141
146
142
147
#HELPER FUNCTIONS
148
+ def table_to_hashed(table_name,dataToInsert)
149
+ if !File.exist?(table_name)
150
+ CSV.open(table_name,"w") do |csv|
151
+ #extract the headers from the @dataToInsert
152
+ dataToInsert.each do |data|
153
+ headers= data.map do |key,value| #get the key names as headers into an array,map returns anarray
154
+ key
155
+ end
156
+ csv<<headers
157
+ end
158
+ end
159
+ end
143
160
144
- def table_to_hashed(table_name)
145
- hashedData=CSV.parse(File.read(table_name),headers:true).map(&:to_h)
146
- return hashedData
161
+ hashedData=CSV.parse(File.read(table_name),headers:true).map(&:to_h)
162
+ return hashedData
147
163
end
148
164
149
165
@@ -192,9 +208,16 @@ def merge(left, right, &block)
192
208
result
193
209
end
194
210
211
+ MySqliteRequest.insert('database.csv').values('firstname' => "Rahmat", 'lastname' => "Abdulfattah", 'age' => 25, 'password' => 'matrix').run()
212
+
213
+ # request = MySqliteRequest.new
214
+ # request = request.update('nba_player_data.csv')
215
+ # request = request.values('name' => 'Alaa Renamed')
216
+ # request = request.where('name', 'Alaa Abdelnaby')
217
+ # request.run
195
218
196
- request = MySqliteRequest.new
197
- request = request.insert('nba_player_data.csv')
198
- 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')
199
- request.run
200
219
220
+ # request = MySqliteRequest.new
221
+ # request = request.insert('nba_player_data.csv')
222
+ # 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')
223
+ # request.run
0 commit comments