@@ -89,6 +89,77 @@ func InsertInto(command string) {
8989}
9090
9191func SelectFrom (command string ) {
92+ if strings .Contains (command , "*" ) {
93+ SelectAllFrom (command )
94+ return
95+ }
96+
97+ //pegar o nome das colunas que vao estar na query
98+ // select nome, idade from tabela -> exemplo
99+ //depois de select, pega o que vem depois do select e antes do from que vai estar separado por virgula
100+ //depois de from, pega o que vem depois do from que vai ser o nome da tabela
101+
102+ //salvar as colunas em um array
103+ //salvar o nome da tabela em uma variavel
104+
105+ arrayColumns := strings .Split (command , " " )[1 ]
106+ arrayColumns = strings .Split (arrayColumns , "from" )[0 ]
107+ arrayColumns = strings .Replace (arrayColumns , " " , "" , - 1 )
108+ arrayColumns = strings .Split (arrayColumns , "," )[0 ]
109+
110+ fmt .Println ("Colunas: " + arrayColumns )
111+
112+ table := strings .Split (command , " " )[3 ]
113+
114+ if _ , err := os .Stat ("data/" + table + ".csv" ); os .IsNotExist (err ) {
115+ fmt .Println ("Tabela não existe" )
116+ return
117+ }
118+
119+ file , err := os .Open ("data/" + table + ".csv" )
120+ if err != nil {
121+ fmt .Println ("Erro ao abrir arquivo" )
122+ return
123+ }
124+
125+ defer file .Close ()
126+
127+ fmt .Println ("Tabela: " + table )
128+
129+ //pegar as colunas do arquivo, vao ser a primeira linha do arquivo separada por ;
130+ var columnsTable string
131+ fmt .Fscanf (file , "%s\n " , & columnsTable )
132+ columnsTableArray := strings .Split (columnsTable , ";" )
133+
134+ //pegar os dados somente das colunas que foram passadas na query
135+
136+ for i := 0 ; i < len (columnsTableArray ); i ++ {
137+ if columnsTableArray [i ] == arrayColumns {
138+ fmt .Println (columnsTableArray [i ])
139+ }
140+ }
141+
142+ //pegar os dados das colunas que foram passadas na query
143+ var line string
144+ for {
145+ _ , err := fmt .Fscanf (file , "%s\n " , & line )
146+ if err != nil {
147+ break
148+ }
149+ lineArray := strings .Split (line , ";" )
150+ for i := 0 ; i < len (lineArray ); i ++ {
151+ if columnsTableArray [i ] == arrayColumns {
152+ fmt .Println (lineArray [i ])
153+ }
154+ }
155+ }
156+
157+
158+ }
159+
160+
161+
162+ func SelectAllFrom (command string ) {
92163
93164 table := strings .Split (command , " " )[3 ]
94165
0 commit comments