Compare commits

...

2 Commits

Author SHA1 Message Date
ee54f223f5
Fix database schema 2020-06-14 03:12:42 +02:00
3e4ed97de1
Add database queries 2020-06-14 03:12:32 +02:00
3 changed files with 97 additions and 13 deletions

View File

@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS paciente (
fecha_de_nacimiento DATE NOT NULL, fecha_de_nacimiento DATE NOT NULL,
documento_identificativo VARCHAR(50) PRIMARY KEY, documento_identificativo VARCHAR(50) PRIMARY KEY,
tipo_documento VARCHAR(10) NOT NULL, tipo_documento VARCHAR(10) NOT NULL,
dirección VARCHAR(255) NOT NULL, direccion VARCHAR(255) NOT NULL,
localidad VARCHAR(100) NOT NULL, localidad VARCHAR(100) NOT NULL,
provincia VARCHAR(50) NOT NULL, provincia VARCHAR(50) NOT NULL,
pais VARCHAR(100) NOT NULL pais VARCHAR(100) NOT NULL
@ -32,7 +32,7 @@ CREATE TABLE IF NOT EXISTS usuario(
contraseña VARCHAR(100) NOT NULL, contraseña VARCHAR(100) NOT NULL,
rol INT NOT NULL, rol INT NOT NULL,
especialidad VARCHAR(50), especialidad VARCHAR(50),
correo VARCHAR(100), correo VARCHAR(100) NOT NULL,
fecha_alta DATE NOT NULL, fecha_alta DATE NOT NULL,
fecha_baja DATE, fecha_baja DATE,
FOREIGN KEY (rol) FOREIGN KEY (rol)
@ -40,7 +40,8 @@ CREATE TABLE IF NOT EXISTS usuario(
); );
CREATE TABLE IF NOT EXISTS festivos ( CREATE TABLE IF NOT EXISTS festivo (
id INT PRIMARY KEY AUTO_INCREMENT,
fecha_festivo DATE NOT NULL, fecha_festivo DATE NOT NULL,
tipo_festivo VARCHAR(15) NOT NULL, tipo_festivo VARCHAR(15) NOT NULL,
medico VARCHAR(50), medico VARCHAR(50),
@ -49,7 +50,7 @@ CREATE TABLE IF NOT EXISTS festivos (
); );
CREATE TABLE IF NOT EXISTS calendario ( CREATE TABLE IF NOT EXISTS calendario (
id INT NOT NULL, id INT NOT NULL AUTO_INCREMENT,
hora_inicio_mañana TIME, hora_inicio_mañana TIME,
hora_fin_mañana TIME, hora_fin_mañana TIME,
hora_inicio_tarde TIME, hora_inicio_tarde TIME,
@ -65,7 +66,7 @@ CREATE TABLE IF NOT EXISTS calendario (
); );
CREATE TABLE IF NOT EXISTS cita( CREATE TABLE IF NOT EXISTS cita(
id INT NOT NULL, id INT NOT NULL AUTO_INCREMENT,
fecha DATE NOT NULL, fecha DATE NOT NULL,
hora TIME NOT NULL, hora TIME NOT NULL,
duracion INT, duracion INT,
@ -80,7 +81,7 @@ CREATE TABLE IF NOT EXISTS cita(
); );
CREATE TABLE IF NOT EXISTS informe( CREATE TABLE IF NOT EXISTS informe(
id INT NOT NULL, id INT NOT NULL AUTO_INCREMENT,
fecha DATE NOT NULL, fecha DATE NOT NULL,
hora TIME NOT NULL, hora TIME NOT NULL,
paciente VARCHAR(50) NOT NULL, paciente VARCHAR(50) NOT NULL,

View File

@ -3,8 +3,7 @@
with pkgs; with pkgs;
mkShell { mkShell {
buildInputs = buildInputs = [ php74 php74Extensions.pdo_mysql mysql57 ];
[ php74 php74Extensions.pdo_mysql php74Packages.composer mysql57 ];
shellHook = '' shellHook = ''
pkill mysql pkill mysql
@ -15,5 +14,7 @@ mkShell {
sleep 1 sleep 1
mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql
alias mysql='mysql --socket="$(pwd)/.mysql/mysql.sock" -u root'
''; '';
} }

View File

@ -1,13 +1,95 @@
<?php <?php
function connectDatabase($user, $pass, $db) { function connectDatabase(str $user, str $pass, str $db) {
$unix_socket = '.mysql/mysql.sock'; $unix_socket = '.mysql/mysql.sock';
$charset = 'utf8mb4'; $charset = 'utf8mb4';
$dsn = "mysql:unix_socket=$unix_socket;dbname=$db;charset=$charset"; $dsn = "mysql:unix_socket=$unix_socket;dbname=$db;charset=$charset";
$db_connection = new PDO($dsn, $user, $pass); $pdo = new PDO($dsn, $user, $pass);
return $db_connection; return $pdo;
} }
function closeDatabase($db_connection) { function closeDatabase($pdo) {
$db_connection = null; $pdo = null;
} }
function displayResults($query) {
while($row = $query->fetch()){
echo $row . "\n";
}
}
function listRows($pdo, $table) {
$query = "SELECT * FROM ?";
$result = $pdo->prepare($query)->execute([$table]);
displayResults($query);
}
function findRows($pdo, str $table, str $attr, str $param) {
$query = "SELECT * FROM ? WHERE ? = ?";
$result = $pdo->prepare($query)->execute([$table, $attr, $param]);
displayResults($query);
}
function createPatient($pdo, $data) {
$query = "INSERT INTO paciente (nombre, apellido, fecha_de_nacimiento, documento_identificativo, tipo_documento, direccion, localidad, provincia, pais) VALUES (? ? ? ? ? ? ? ? ?)";
$pdo->prepare($query)->execute([$data["nombre"], $data["apellido"], $data["fecha_de_nacimiento"], $data["documento_identificativo"], $data["tipo_documento"], $data["direccion"], $data["localidad"], $data["provincia"], $data["pais"]]);
return "Paciente creado con éxito";
}
function editPatient($pdo, str $attr, str $param, str $id) {
$query = "UPDATE paciente SET ? = ? WHERE documento_identificativo = ?";
$pdo->prepare($query)->execute([$attr, $param, $id]);
return "Paciente modificado con éxito";
}
function deletePatient($pdo, str $id) {
$check = "SELECT * FROM informes where paciente = ?";
$result = $pdo->prepare($check)->execute([$id]);
if($result->columnCount() == 0){
$statement = "DELETE FROM paciente where document_identificado = ?";
$pdo->prepare($statement)->execute([$id]);
return "El paciente se ha eliminado correctamente";
}
return "No se puede eliminar el paciente dado que tiene citas";
}
function createHoliday($pdo, $data) {
$query = "INSERT INTO festivo (fecha_festivo, tipo_festivo, medico) VALUES (? ? ?)";
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"], $data["medico"]]);
return "Festivo creado con éxito";
}
function editHoliday($pdo, $attr, $param, $id) {
$query = "UPDATE festivo SET ? = ? WHERE id = ?";
$pdo->prepare($query)->execute([$attr, $param, $id]);
return "Festivo modificado con éxito";
}
function deleteHoliday($pdo, str $id) {
$statement = "DELETE FROM festivo where id = ?";
$pdo->prepare($statement)->execute([$id]);
return "Festivo borrado con éxito";
}
function createUser($pdo, $data) {
$query = "INSERT INTO usuario (nombre, usuario, contraseña, rol, correo) VALUES (? ? ? ? ?)";
$pdo->prepare($query)->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data[$correo]]);
return "Usuario creado con éxito";
}
function editUser($pdo, $attr, $param, $id) {
$query = "UPDATE usuario SET ? = ? WHERE usuario = ?";
$pdo->prepare($query)->execute([$attr, $param, $id]);
return "Usuario modificado con éxito";
}
function deactivateUser($pdo, str $id) {
editUser($pdo, "fecha_baja", "CURRENT_TIMESTAMP", $id);
return "Usuario desactivado con éxito";
}
function listAppointments($pdo, str $doctor) {
findRows($pdo, "cita", "medico", $doctor);
}
?>