pavel-kalmykov / mantecabox

Servicio de almacenamiento de ficheros seguro en la nube para la asignatura de Seguridad en el Diseño de Software
GNU General Public License v3.0
2 stars 1 forks source link

Implementar control de versiones de ficheros #32

Closed pavel-kalmykov closed 6 years ago

pavel-kalmykov commented 6 years ago

Descripción

Actualmente, cuando subimos un archivo a nuestro servicio de almacenamiento, si este ya existía (si el usuario tenía ya uno con ese mismo nombre), se actualizaba borrando el anterior.

Sin embargo, nuestro esquema actual nos permite tener más de un fichero con el mismo nombre para un mismo usuario, ya que, si ejecutamos la siguiente consulta:

SELECT id, updated_at, name FROM files WHERE name = 'f1' AND owner = 'testuser1' ORDER BY id DESC;

Obtenemos el siguiente resultado: image

Podemos, entonces, implementar un sencillo control de versiones haciendo que, cuando se suba un fichero, este siempre se guarde; es decir, nunca busque antes si el fichero ya existe o no (eliminamos la opción de poder "actualizar" un fichero).

Deberemos modificar entonces las consultas de obtener los detalles de uno para que, en vez de recibir un único fichero, reciba todas las versiones de este; y el listado general, que reciba sólo las últimas versiones de cada fichero.

El borrado seguiría siendo el mismo: borrado un fichero, borradas todas sus versiones.

Las rutas del archivo deberán también ser actualizadas, haciendo que:

En el cliente, deberemos de añadir una opción para poder descargar diferentes versiones de un archivo (¿transfer version?) en este. Una vez seleccionado el archivo, obtendríamos las versiones del mismo y entonces seleccionaríamos cuál querríamos descargar.

Condiciones de satisfacción

pavel-kalmykov commented 6 years ago

Desarrollando en control-versiones.