-
Notifications
You must be signed in to change notification settings - Fork 0
/
documentatie.txt
20 lines (20 loc) · 4.67 KB
/
documentatie.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Clientul este unul simplu. Va citi mesajul si il va trimite serverului. Dupa aceea, va primi mesajul de la server si il va afisa. Acest procedeu se va repeta pana cand va fi inchis fortat sau va fi citit mesajul "quit" de la tastatura. Serverul va fi notificat si la randul sau va inchide conexiunea cu clientul respectiv.
Serverul este de tip TCP. Prima functie apelata este initializare_bd(). Aceasta functie deschide baza de date. Daca nu exista, o va creea, va construi cele doua tabele: useri si melodii si va insera cateva linii de valori in ele.
A doua functie, construire_argv() va construi char-ul argv[][] si va incrementa integer-ul argc in functie de cate cuvinte sunt. Acest lucru va fi realizat cu ajutorul lui strtok().
Functia de callback este apelata de sqlite3_exec() pentru a concatena in mesaj numele coloanei si informatia memorata in ea pentru fiecare linie din tabelul generat.
Urmatoarele functii sunt apelate in functie de cuvintele regasite in argv. Daca in argv[1] se regaseste cuvantul login si user-ul nu este logat, va fi apelata functia login(). Aceasta va compara argv[2] si argv[3] cu userii si parolele din baza de date. Daca se regaseste o potrivire pentru amandoua simultan, logarea va fi realizata. Char-urile userStatus, voteStatus precum si integer-ele k si l vor lua valori in functie de tipul de user. userStatus poatedeveni "User" sau "Admin". Daca este de tipul "Admin", va avea acces la mai multe comenzi fata de tipul "User". voteStatus poate deveni "Yes" sau "No". Prima optiune va acorda dreptul de vot user-ului. Daca user-ul este deja logat, in loc sa fie apelata functia aceasta va fi trimis mesajul "User deja logat".
Daca in argv[1] se regaseste cuvantul inregistrare si user-ul nu este logat, va fi apelata functia inregistrare(). Aceasta ca insera o noua linie in tabela Useri. argv[2] va da numele user-ului si argv[3] parola user-ului. User-ul va fi de tip normal si va avea drept de vot. Daca user-ul este deja logat, in loc sa fie apelata functia aceasta va fi trimis mesajul "User deja logat".
Daca in argv[1] se regaseste cuvantul help, va fi afisata o lista de comenzi impreuna cu tipul de user care le poate folosi.
Daca in argv[1] se regaseste cuvantul quit, server-ul va inchide conexiunea cu clientul.
Urmatoarele functii pot fi apelate doar de useri logati. Daca in argv[1] se regaseste cuvantul melodii, va fi apelata functia melodii(). Aceasta va afisa toate melodiile din baza de date impreuna cu informatiile lor precum si comentariile postate.
Daca in argv[1] se regaseste cuvantul adaugare si in argv[2] cuvantul melodie, va fi apelata functia adaugare_melodie(). Daca restul argumentelor sunt completate corect, va fi adaugata o noua melodie in baza de date.
Daca in argv[1] se regaseste cuvantul adaugare si in argv[2] cuvantul comentariu, va fi apelata functia adaugare_comentariu(). Daca restul argumentelor sunt completate corect, va fi adaugat un nou comentariu la melodia specificata.
Daca in argv[1] se regaseste cuvantul vot, va fi apelata functia vot(). Numarul de voturi al melodiei specificate va fi incrementat.
Daca in argv[1] se regaseste cuvantul afisare, in argv[2] cuvantul top, in argv[3] cuvantul dupa si in argv[4] cuvantul voturi va fi apelata functia afisare_dupa_voturi(), care va afisa numele si numarul de voturi al tuturor melodiilor din baza de date ordonat descrescator dupa numarul de voturi.
Daca in argv[1] se regaseste cuvantul afisare, in argv[2] cuvantul top, in argv[3] cuvantul dupa si in argv[4] cuvantul genul va fi apelata functia afisare_dupa_gen(), care va afisa numele si numarul de voturi al tuturor melodiilor care au genul respectiv ordonat descrescator dupa numarul de voturi.
Daca in argv[1] se regaseste cuvantul logout, va fi apelata functia logout(). Char-urile userStatus, voteStatus precum si integer-ele k si l vor reveni la valorile initiale.
Urmatoarele functii pot fi apelate doar de useri cu drept de administrator. Daca in argv[1] se regaseste cuvantul conturi, va fi apelata functia conturi(). Aceasta va afisa informatiile din tabela useri.
Daca in argv[1] se regaseste cuvantul sterge, va fi apelata functia stergere(). Aceasta va sterge din tabela melodiilor linia corespunzatoare melodiei specificate.
Daca in argv[1] se regaseste cuvantul restrictionare, va fi apelata functia restrictionare(). Aceasta va restrictionata dreptul de vot al user-ului specificat. Nu va merge daca user-ul specificat este de tip administrator.
Daca in argv[1] se regaseste cuvantul permitere, va fi apelata functia permitere(). Aceasta va permite dreptul de vot al user-ului specificat.
Daca in argv[1] se regaseste cuvantul promovare, va fi apelata functia promovare(). Aceasta va promova user-ul specificat la statusul de administrator.