Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
1e12a1e
Initial commit
germandouce Aug 27, 2024
a3e45ce
second commit. Agrego comandos xa compilar al README.md
germandouce Aug 27, 2024
5bf3ea0
formateo el README.md
germandouce Aug 27, 2024
7b6ea4f
leo args por consola y sepoato path a la carpeta de la consulta
germandouce Aug 27, 2024
843b20d
agrego funcion para parsear la consulta y obtener nombre tabla
germandouce Aug 27, 2024
0d54ccd
cambio completamente el enfoque dsps de 4 hrs de no llegar a nada. Mi…
germandouce Aug 28, 2024
dd10719
agrego logica a parse_select y ejecutar select. El struct select ya g…
germandouce Aug 28, 2024
e95a50c
cargo fmt
germandouce Aug 29, 2024
f82a03c
implemento select col1, col2 from table. Parece funcar. Al linter no …
germandouce Aug 29, 2024
3ef9b03
modularizo dividiendo en varios archivos
germandouce Aug 29, 2024
eb6b1ab
agrego logica para ejecutar restricciones select
germandouce Aug 30, 2024
60303a8
agrego encabezados y ordenamiento
germandouce Aug 30, 2024
0278963
parseo el update y mando un cargo fmt
germandouce Aug 31, 2024
3b926b9
corrijo un detalle del clippy
germandouce Aug 31, 2024
0cae027
agrego funcion ejecutar a update. Faltan restricciones. Tengo q ver c…
germandouce Sep 1, 2024
ca2c8b3
mi dios no juega dados quizas esta a mi favor
germandouce Sep 1, 2024
c9d6c91
parseo insert into
germandouce Sep 1, 2024
1c77e0e
cargo fmt y permito que imprimir_resultado no hagan nada en update e …
germandouce Sep 2, 2024
ee3f61f
agrego codigo para ejcutar insert. Cambio csv's para ue tengan el sal…
germandouce Sep 2, 2024
263a2c8
agrego codigo para parsear delete
germandouce Sep 3, 2024
a221054
agrego codigo para parsear ejecutar delete. Por ahora borra todas las…
germandouce Sep 3, 2024
5a646c3
codigo para restriccione del delete. FUNCIONA MUY MAL.No andan los O…
germandouce Sep 4, 2024
8d5f95f
agrego las condidiones del WHERE para delete. Falta pasar esa logica …
germandouce Sep 6, 2024
3fbee8f
agrego las condidiones del WHERE para update
germandouce Sep 6, 2024
ce6233d
agrego 2 tests para delete
germandouce Sep 6, 2024
b4b8100
agrego logica correcta del where al select
germandouce Sep 6, 2024
9c66d65
cargo fmt
germandouce Sep 6, 2024
b3c9dd3
agrego soporte para SELECT * FROM y levanto error si se selecciona un…
germandouce Sep 6, 2024
340a2e4
corrijo parse_select paar que soporte que no haya WHERE pero si ORDER BY
germandouce Sep 6, 2024
10a6eb9
corrijo ordenamiento para que soporte ordeanr por varias columnas
germandouce Sep 7, 2024
b3e2356
agrego operadores >= y <= que me habia olvidado
germandouce Sep 7, 2024
7b43d07
agrego tests a a update y corrijo warns de clippy
germandouce Sep 7, 2024
44cbb4d
delete sin restricciones borra todos los registros menos encabezados
germandouce Sep 7, 2024
4f4f859
agrego tests a select e insert
germandouce Sep 7, 2024
d9ad324
hago un poco mas robusto un test
germandouce Sep 7, 2024
e301324
empiezo a modificar errores para q cumplan con consigna
germandouce Sep 7, 2024
138ef5c
adapto errores para que cumplan con consigna.
germandouce Sep 8, 2024
3b89427
corrijo delete xa q borre el archivo temporal si hay error!!
germandouce Sep 8, 2024
2071be1
corrijo update xa q borre el archivo temporal si hay error!! :))))
germandouce Sep 8, 2024
aa0fdf9
corrijo update xa q borre el temp si no existe columna del SET y tira…
germandouce Sep 8, 2024
d7f777d
adapto errores de insert y delete y otros detalles menores
germandouce Sep 8, 2024
06310b0
corrijo insert xa que salte si se mandan columnas de mas o de menos
germandouce Sep 8, 2024
8928e5b
cargo fmt
germandouce Sep 8, 2024
d2f1578
cargo fmt
germandouce Sep 8, 2024
c92afb3
agrego tests de integracion antes de seguir modularizando
germandouce Sep 8, 2024
eff4e51
modularizo el parser
germandouce Sep 8, 2024
85ca0a8
cargo fmt
germandouce Sep 8, 2024
a429960
modularizo y escribo docu de delete y de comnados
germandouce Sep 9, 2024
3c0ce52
modularizo insert y agrego docu
germandouce Sep 9, 2024
be1e888
modularizo select
germandouce Sep 9, 2024
a48de5b
modularizo update y agrego docu
germandouce Sep 9, 2024
e7124f2
modularizo un poco mas delete y corrijo paarq ue se borre el temporal…
germandouce Sep 9, 2024
086e989
corrijo comando xa q no imprmia cunaod es update
germandouce Sep 9, 2024
1101661
deatlles
germandouce Sep 9, 2024
e38b423
Merge branch 'main' into entrega
noahmasri Sep 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/target
6 changes: 6 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/tp-individual-taller-9508.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[package]
name = "tp_individual_taller_9508"
version = "0.1.0"
edition = "2021"

[dependencies]
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# tp-individual-taller-95.08
repo xa el tp individual

Crear un nuevo proyecto: cargo new

I Crear un nuevo proyecto en un directorio existente: cargo init
(basta con ejecutarlo estando parado en ese directorio)

I Compilar el proyecto: cargo build

I Compilar el proyecto en modo release: cargo build –-release

I Ejecutar el proyecto: cargo run

I Ejecutar los tests: cargo test

I Generar la documentación HTML: cargo doc

I Analizar el proyecto, sin compilar: cargo check

I Formatear el código: cargo fmt

I linter: cargo clippy
1 change: 1 addition & 0 deletions output.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
InvalidTable: Ocurrio un error al procesar la tabla.
51 changes: 51 additions & 0 deletions src/comandos.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//! Módulo para gestionar la ejecución de comandos SQL.
//!
//! Este módulo define un `enum` llamado `Comando` que puede representar operaciones SQL de tipo `SELECT`, `INSERT`, `UPDATE` y `DELETE`.
//! También proporciona métodos para ejecutar estos comandos y para imprimir los resultados de una consulta `SELECT`.
use crate::delete::Delete;
use crate::errores::SqlError;
use crate::insert::Insert;
use crate::select::Select;
use crate::update::Update;

/// Enum que representa los diferentes comandos SQL soportados.
pub enum Comando {
Select(Select),
Insert(Insert),
Update(Update),
Delete(Delete),
}

impl Comando {
pub fn ejecutar(&self, ruta_carpeta: &str) -> Result<Vec<Vec<String>>, SqlError> {
match self {
Comando::Select(select) => select.ejecutar(ruta_carpeta),
Comando::Update(update) => update.ejecutar(ruta_carpeta),
Comando::Insert(insert) => insert.ejecutar(ruta_carpeta),
Comando::Delete(delete) => delete.ejecutar(ruta_carpeta),
}
}
/// Imprime los resultados de una consulta `SELECT`.
///
/// Esta función imprime los resultados de una consulta si el comando es un `Select`. Para otros tipos de comando (`Insert`, `Update`, `Delete`),
/// la función no hace mnada
///
/// # Parámetros
///
/// - `results`: Una referencia a un vector de vectores de `String` que contiene los resultados de la consulta.
pub fn imprimir_resultados(&self, results: &[Vec<String>]) {
match self {
Comando::Select(_select) => Select::imprimir_resultados(results),
Comando::Update(_update) => {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no hace falta poner en los 3 algo vacío, podes poner

pub fn imprimir_resultados(&self, results: &[Vec<String>]) {
        match self {
            Comando::Select(_select) => Select::imprimir_resultados(results),
            _ => {
                // establece default que no hace nada
            }
        }
    }

//nadaaa
}
// }
Comando::Insert(_insert) => {
// nadaaa
}
Comando::Delete(_delete) => {
// nadaaa
}
}
}
}
Loading