Skip to content

UnderABloodySky/cloud-UNQfy

 
 

Repository files navigation

Seminario: Taller de Desarrollos de Servicios Web / Cloud Modernos - 2020 2s -

UNQfy

El presente software toma como motivación principal el trabajo practico de la materia Seminario: Taller de Desarrollos de Servicios Web / Cloud Modernos, el cual pide modelar (diseñar e implementar) una aplicación similar a Spotify, llamada UNQfy . En esta, existe una gran cantidad de temas musicales (tracks) los cuales siempre pertenecen a un álbum. Un álbum tiene un sólo artista como autor pero un artista puede ser autor de múltiples albumes. Cada track tiene asociado uno o más géneros, que son strings. También existen playlists, que son conjuntos de tracks que pueden pertenecer a diferentes álbumes. En UNQfy, además de las típicas operaciones de alta, baja y modificación de todos estos elementos (tracks, albums, artistas), es posible:

  • Realizar búsquedas de temas.
  • Recuperar todas las canciones (tracks) que fueron interpretadas por un determinado artista, y todas las canciones que se correspondan con un determinado género.
  • Autogenerar una Playlist en base a una lista de géneros, es decir, rellenar una playlist con canciones de determinados géneros y con una duración máxima.

Para operar con UNQfy vamos a usar, en principio, la línea de comando. Esto implica tener una serie de comandos que permitan alterar e inspeccionar el modelo de objetos de UNQfy.

Integrantes:

Integrante Legajo email github user
- Facundo Pacheco Leg. 40340 pache.facundo@gmail.com pache0015
- Horacio Valenzuela Leg. 38613 valenzuelahoracioe@gmail.com UnderABloodySky

UML

UML

Pre-requisitos 📋

Los requisitos necesarios para correr el proyecto:_

Construido con 🛠️

Se menciona brevemente las herramientas que se utilizon para crear el proyecto_

  • Se utilizó Programacion Orientada a Objetos para el desarrollo del mismo, definiendo clases con la sintaxis ECMA Script 6.
  • Javascript
  • nodejs - Para el back-end (Utilizamos la version 12.8.x).
  • mocha - Para los tests.

Instalación 🔧

Más allá de la instalación de los pre-requisitos, el proyecto no necesita de ninguna instalación previa.

Comenzando 🚀

Una vez clonado el repositorio, se interactúa con el programa desde la línea de comandos (CLI), para esto se debe contar con nodejs instalado y ejecutar npm install en una terminal desde la carpeta /unquify.

Aclaración: Todos los comandos se deben correr desde la carpeta /unquify

Despliegue 📦

Ejecutar npm testdesde la carpeta /unquify para correr los tests del proyecto.

Para ejercitar el modelo, se recomienda ejecutar el script de la carpeta ./script el archivo script_ejercicio_modelo.sh.

Su ejecucion implica darle ciertos privilegios

chmod +x script_ejercicio_modelo.sh
./script_ejercicio_modelo.sh
  

Documentación de uso

A continuación se listan los comandos que acepta y cómo deben ser usados los mismos:

tabla de contenidos

Links a tipos de comandos:

Instanciadores

Aclaración A: Al ingresar tracks, álbumes y artistas, hay que tener en cuenta que para dar de alta, por ejemplo, un álbum el artista debe existir, y para agregar un track el álbum al que pertenece debe existir. Si los mismos, no existen entonces se reporta en la consola que no se pudo completar dicha operación, indicando el error correspondiente.

  1. Agregar artista
node main.js addArtist <aName> <aCountry>

Reemplazar aName por el nombre del artista y aCountry por el país del mismo.

  1. Agregar album
node main.js addAlbum <aName> <aArtistID> <aYear>

Reemplazar aName por el nombre del albúm, aArtistID por el ID del artista autor del mismo, aYear por su año de lanzamiento.

  1. Agregar track
node main.js addTrack <aAlbumID> <aName>  <aDuration> <genre1> <genre2> .. <genreN>

Reemplazar aAlbumID por el ID de su _album, aName por el nombre del track, _, aDuration por la duración del mismo, y el resto de los argumentos, los géneros (genre1, genre2, etc. Hasta el genreN).

Aclaración: Debe darse al menos un genero

  1. Agregar usuario
node main.js addUser <aNickname> 

Reemplazar aNickname por el alías del usuario a crear.

  1. Generar un playlist con duración máxima y de ciertos géneros
node main.js createPlaylist <name> <maxDuration> <genre1> <genre2> .. <genreN>

Reemplazar aName por el nombre del playlist, aMaxDuration por la duración máxima de la misma, y genre1, genre2,etc, hasta genreN para los posibles géneros para sus tracks.


Getters

  1. Obtener todxs lxs artistas de la aplicación
node main.js getArtists
  1. Obtener todos los albumes de unx artista dado
node main.js getAlbums <aArtistID>

Reemplazar aArtistID por el id del artista a buscar, que es autor de los albumes.

  1. Obtener todos los tracks de un album
node main.js getTracks <aAlbumID>

Reemplazar aAlbumID por el ID del album a buscar, donde pertenecen los tracks.

  1. Obtener todas las playlists
node main.js getPlaylists
  1. Obetener todxs lxs users
node main.js getUsers
  1. Obtener artista
node main.js getArtist <aArtistID>

Reemplazar aArtistID por el id del artista a buscar.

  1. Obtener album
node main.js getAlbum <aAlbumID>

Reemplazar aAlbumID por el Id del album a buscar.

  1. Obtener track
node main.js getTrack <aTrackID>

Reemplazar aTrackID por el ID del track a buscar.

  1. Obtener playlist
node main.js getPlaylist <aPlaylistID>

Reemplazar aPlaylistID por el ID de la playlist a buscar.

  1. Obtener user
node main.js getUser <aUserID>

Reemplazar aUserID por el ID del user a buscar.

  1. Buscar todos los tracks de un artista
node main.js getTracksMatchingArtist <aArtistID>

Reemplazar aArtistsID por el ID del artista a buscar.

  1. Buscar tracks por géneros
node main.js getTracksMatchingGenres <genre1> <genre2> .. <genreN>

Reemplazar genre1, genre2 y todos los siguientes argumentos por los géneros de todos los tracks a buscar.


Eliminadores

  1. Eliminar artista
node main.js removeArtist <aArtistID>

Reemplazar aArtistID por el id del artista.

  1. Elminar album
node main.js removeAlbum <aAlbumID>

Reemplazar aAlbumID el iD del album.

  1. Eliminar track
node main.js removeTrack <aTrackID>

Reemplazar aTrackID por el iD del track.

  1. Eliminar playlist
node main.js removePlaylist <aPlaylistID>

Reemplazar aPlaylistID por el ID del playlist.


Search&Print

  1. Buscar todas las entidades por nombre parcial (artistas, albumes, tracks y playlists)
node main.js searchByName <stringToSearch>

Reemplazar stringToSearch por el nombre parcial a buscar.

  1. Buscar tracks por nombre parcial
node main.js searchTracksWithPartialName <stringToSearch>

Reemplazar stringToSearch por el nombre parcial a buscar.

  1. Buscar albumes por nombre parcial
node main.js searchAlbumsWithPartialName <stringToSearch>

Reemplazar stringToSearch por el nombre parcial a buscar.

  1. Buscar artistas por nombre parcial
node main.js searchArtistsWithPartialName <stringToSearch>

Reemplazar stringToSearch por el nombre parcial a buscar.

  1. Buscar playlists por nombre parcial
node main.js searchPlaylistsWithPartialName <stringToSearch>

Reemplazar stringToSearch por el nombre parcial a buscar.


Miscelaneos:

  1. Cantidad de veces que un user escuchó un track particular
node main.js timesUserListenedTrack <userId> <trackId>

Reemplazar userId por el id del user, y trackId por el id del track.

  1. Top 3 tracks más escuchados de un artista
node main.js top3TracksFromArtist <artistId>

Reemplazar artistId por el id del artista.

  1. Unx usuarix escucha un track
node main.js userListenTrack <aUserID> <aTrackID>

Reemplazar aUserID por el ID del usuario, y aTrackID por el ID del track.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 97.2%
  • Shell 2.8%