Skip to content

Commit 0c27d21

Browse files
committed
Server updates + begin the client dev
1 parent 0648e6d commit 0c27d21

File tree

5 files changed

+50
-3
lines changed

5 files changed

+50
-3
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
11
# SQLiteFinalProject
2+
3+
Ce projet est composé d'un serveur et d'un client
4+
5+
Pour lancer le serveur il est necessaire de lancer la commande : "uvicorn.exe server:app" dans le répertoire du projet
6+
Pour lancer le client il suffit de lancer le fichier python

client.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import requests
2+
3+
server_url = "localhost:8000"
4+
5+
while True:
6+
request_type = -1
7+
while request_type == -1 or request_type > 4:
8+
request_type = int(
9+
input(
10+
"Vous avez 4 choix dans l'utilisation de l'application (tapez le nombre qui correspond) :"
11+
+ "\n 1 : Donner un nom d'artiste pour récupérer la liste des artistes comprenant le nom donné"
12+
+ "\n 2 : Donner un identifiant d'artiste pour afficher les noms d'albums correspondants"
13+
+ "\n 3 : Donner un identifiant d'album pour afficher les pistes correspondantes"
14+
+ "\n 4 : Sortir de l'application \n"
15+
)
16+
)
17+
if request_type == 1:
18+
argument = input("Saisis le nom d'artiste : ")
19+
requete = requests.get(server_url + f"/artists/{argument}")
20+
21+
if request_type == 4:
22+
exit()
23+
else:
24+
print("Choix absent de la liste")

requirements.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
fastapi == 0.104.0
2+
SQLAlchemy == 2.0.22
3+
uvicorn == 0.23.2
4+
requests == 2.31.0

server/api.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1+
# Import des bibliothèques
12
from fastapi import FastAPI, Depends, HTTPException, status
23
from sqlalchemy.orm import Session
34
from . import models
45
from pydantic import BaseModel
56
from .database import SessionLocal, engine
67

7-
8+
# Association de la variable app à une instance de la classe FastAPI
89
app = FastAPI()
910

1011
models.Base.metadata.create_all(bind=engine)
1112

1213

14+
# Import des modèles de base de données
1315
class ArtistBase(BaseModel):
1416
artistId: int
1517
name: str
@@ -29,10 +31,11 @@ def get_db():
2931
db.close()
3032

3133

34+
# Requète get pour
3235
@app.get("/artists/{name}", status_code=status.HTTP_200_OK)
3336
async def read_artists(name: str, db: Session = Depends(get_db)):
3437
query = f"%{name}%"
35-
artist = db.query(models.Artist).where(models.Artist.name.like(query)).first()
38+
artist = db.query(models.Artist).where(models.Artist.name.like(query)).all()
3639
if artist is None:
3740
raise HTTPException(status_code=404, detail="Artist Name not in Database")
3841
return artist
@@ -47,3 +50,14 @@ async def read_albums(artistId: int, db: Session = Depends(get_db)):
4750
detail="This artist id does not exist or have no albums in database",
4851
)
4952
return albums
53+
54+
55+
@app.get("/tracks/{albumId}", status_code=status.HTTP_200_OK)
56+
async def read_tracks(albumId: int, db: Session = Depends(get_db)):
57+
tracks = db.query(models.Track).where(models.Track.albumId == albumId).all()
58+
if tracks is None:
59+
raise HTTPException(
60+
status_code=404,
61+
detail="This albumid has no tracks connected to, check your album id",
62+
)
63+
return tracks

server/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ class Track(Base):
2929
composer = Column(String)
3030
milliseconds = Column(Integer)
3131
bytes = Column(Integer)
32-
uniPrice = Column(Numeric)
32+
unitPrice = Column(Numeric)

0 commit comments

Comments
 (0)