From 2b8fdfa18df09af0107bc2d2d8704f90f5eb1af0 Mon Sep 17 00:00:00 2001 From: Navin Chandra <nc01009@surrey.ac.uk> Date: Tue, 30 Apr 2024 18:30:45 +0530 Subject: [PATCH] added new endpoint --- .../__pycache__/main.cpython-39.pyc | Bin 0 -> 2596 bytes microservices/admins_service/admin.py | 80 ----------- microservices/admins_service/bikes.db | Bin 0 -> 8192 bytes microservices/admins_service/main.py | 93 +++++++++++++ .../__pycache__/main.cpython-39.pyc | Bin 0 -> 3629 bytes microservices/rentals_service/main.py | 128 ++++++++++++++++++ microservices/rentals_service/rentals.db | Bin 0 -> 8192 bytes microservices/rentals_service/rentals.py | 109 --------------- 8 files changed, 221 insertions(+), 189 deletions(-) create mode 100644 microservices/admins_service/__pycache__/main.cpython-39.pyc delete mode 100644 microservices/admins_service/admin.py create mode 100644 microservices/rentals_service/__pycache__/main.cpython-39.pyc delete mode 100644 microservices/rentals_service/rentals.py diff --git a/microservices/admins_service/__pycache__/main.cpython-39.pyc b/microservices/admins_service/__pycache__/main.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1904b053b79bfcbac7d8579d77b369c94bc1cd95 GIT binary patch literal 2596 zcmZuzO>@&m7~Yj+S#g}igwJpQO+RBM6EoB4fteHtL_ns&WMb2TW;z;0yGaDHBz9#W zCb^VcIdrB+4#|;Ye?$L4kGl3me?SlYnD%{Fw&NJ&?5o{<cUQa5`@GM_pPH%=cz*li z>ekZ<LVm}_=wm?RCKUN67)BV4NQb(#qq!Qzwif9f!!=Z0k4hcWHC5e+%5Is{*Tl7W z`EY`jj;LGVmBYy+;!g6(!zwe6C?(J{bwnt+OIVp%2ZUMNc&)qB+<G#@Cipa~ywSi; zzNM_nrVfnP)UAQ<6!=U&Jx9>brrFE^0ne=R)cUhdvr{l@mYr6!&VcVM8~R|(nYS7{ z%g!n9Ic^=EXSE~Bi&^K{1=W9n87)$udk<$PbuBO7@nyEWzM4<nYq!^(mjO?+Fp29l zpSa~qem`M6f`+jc%B<P5Hp8b}F0#$uFBKb}+Z)bu+p*irx7Hkc^^V<q(6*gNtF3m+ zUS^#zmiD|Fhhu&0@Iq#<Hrvi!XTx6KSiQfz@!0;>dAu+j)s<Yteuvv_=TZB(JN2b} zkq9={%{zV=jrFBFNzA>t+u7toxzyVAN`NOGeROEtgd!KgaN<%%T<sy@IyV?yD&AWE zt@q!?5@994&&*5efVnl;aBdCun3vSH^6KbLn)Om{c^)3k^YV)4brRN%uwM1NXI($) zdvuwJe8%(qI8HJjLm@ry9T7FyqcVT3HFlB?Z^ZudFm9|QLAS%>Og3Kd&5Q>-jct*1 z(`#PvqR|NhkpP^}!+^_%f?s<5b_0Nm7t>u~!nzj`1Pe@sTI#2Idscr=qfXsv!DR}2 z;ka)ey`y<aEf`RkHh8dJhVm;EIS(cyhm_Gh@<fB8LouL~wu~c4w9Gs#W18#{fKzMs z(jf&_n=NOfjWl^MVA0SwKY)9|9>Bd|E4ZO!B=B{6IOV(LwTDj2p1-kR_y6k3_s+`A zpetk|@-lzPgKowJ?p`1g0)&GI)REi>k~oH;Nv9KLVix;{!4Ri#L^TlH&$y=$`2>1o z6%5hLQtdzOAERthF$e7v1k|7d38=983@QayC?HVNj>tX;5z`L<pA`^-eY!^hC!^WB z+H%&M+im+8h>slKzO(V*ejmIOA;Qn%AzM)77htyG13z5ary1D;{?DPM%4(oQ`WyWx z?HTHYAuzb_mBBUYdV$ptraD!m0Y%XkuZq(!WE`c+QUn?TFs9e9fm>l@mb8B~YU1zT z-eo|M6(GvRr6>vfNM47^U>1DyEUtSFjB9Q2EZFg*sIIw_eQq;9^IfxOjDLM{Wbv;D zpC=kJ9yal}Sr(U|w>LZB{42E#$kje@-5NALz!L8g6++aI0o}K#B6tx-2pl6_BCcdQ z29z0Zv>%ILmYTgU`@y_28Zi6&d(MV)te4-|H^QF*`QFSjN~jIOU~eVem;u<65=5da zy#TV(H5t!94<T6NIDsMxWZOGU*zo#ze2x*i4P&IbM73!p2vsUR#d%2X0OLP+u#Wkn zFt`GhJ_Zz0o<hn~NO}6Cv`4l|Cz2k?3`zfLn57TbSMVlLCzQv@+j5SXZUYd<X<xL8 z3!rd}q(3@`OMeKba)~prU3H>yu2j1zP^q8KYcOh<&$EMk#*95d2F#2h8IVe2WY7+E zR6C?V*w5t8S0Iz&%p<w_k<jPm4wus3=DmwW_(6Vo#+fa<0qDBi>PFG-XvoER_`0}& z<}#Xbu`1>ldG;6vNW21w3ba5)sL#3OE%>LvPeXy>Rm5?vbeH*Y23HE6GB>l`G>o@J z2^wx$K8wPPf0gTgn&xHHOCDs!K88#zc7)%`jWmH<4ka<yw|S;AFW193QzXmvw3`V8 zI0r)GS=F{i&Y@1El-F7+uF>lVztXcBt-{aJOdV2NuS{4*&8pJcY>if?;0^WJszv_? DsuWyA literal 0 HcmV?d00001 diff --git a/microservices/admins_service/admin.py b/microservices/admins_service/admin.py deleted file mode 100644 index 6922c76..0000000 --- a/microservices/admins_service/admin.py +++ /dev/null @@ -1,80 +0,0 @@ -from fastapi import FastAPI, HTTPException -from pydantic import BaseModel -from typing import List -import sqlite3 - -app = FastAPI() - -# SQLite connection -conn = sqlite3.connect('bikes.db') -cursor = conn.cursor() - -# Create the Admins table if it doesn't exist -cursor.execute(''' - CREATE TABLE IF NOT EXISTS Admins ( - admin_id INTEGER PRIMARY KEY, - username TEXT, - password TEXT, - email TEXT, - phone_number TEXT - ) -''') -conn.commit() - - -# Admin model -class Admin(BaseModel): - username: str - password: str - email: str - phone_number: str - - -# Routes -@app.post("/admins/", response_model=Admin) -async def create_admin(admin: Admin): - cursor.execute(''' - INSERT INTO Admins - (username, password, email, phone_number) - VALUES (?, ?, ?, ?) - ''', ( - admin.username, admin.password, admin.email, admin.phone_number - )) - conn.commit() - return admin - - -@app.get("/admins/", response_model=List[Admin]) -async def read_admins(): - cursor.execute('SELECT * FROM Admins') - admins = cursor.fetchall() - return admins - - -@app.get("/admins/{admin_id}", response_model=Admin) -async def read_admin(admin_id: int): - cursor.execute('SELECT * FROM Admins WHERE admin_id = ?', (admin_id,)) - admin = cursor.fetchone() - if admin is None: - raise HTTPException(status_code=404, detail="Admin not found") - return admin - - -@app.put("/admins/{admin_id}", response_model=Admin) -async def update_admin(admin_id: int, admin: Admin): - cursor.execute(''' - UPDATE Admins - SET username = ?, password = ?, email = ?, phone_number = ? - WHERE admin_id = ? - ''', ( - admin.username, admin.password, admin.email, admin.phone_number, admin_id - )) - conn.commit() - return admin - - -@app.delete("/admins/{admin_id}") -async def delete_admin(admin_id: int): - cursor.execute('DELETE FROM Admins WHERE admin_id = ?', (admin_id,)) - conn.commit() - return {"message": "Admin deleted successfully"} diff --git a/microservices/admins_service/bikes.db b/microservices/admins_service/bikes.db index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..827cf0623a57f5ff3882cd088bf01bf0e21d9050 100644 GIT binary patch literal 8192 zcmeI#y9&ZE6b9f#1VIqp#O;g<;vzU(B^2?3)(kpHq!A0ImA2xnkLy#IdIc9}<^M?< z&dH&}w`D#X1*xV@6dRRNn^hR+tV_fg<96rlekQB)&%&Nr{VkleHkXo};$@fFg+KrT z5P$##AOHafKmY;|fB*!3S>V*+g=($F&u*&LJMH);2$TCa*Y|`Y1xcqj5_IoTy-1I! zY;+a)G?+-?3Xi7VVC;BH8j5A}HFZdI94ezpiiLc)_bN$_QS5)TwNb(DqqpBip<aat ov)1wL>h|wO_BOYVegpy#fB*y_009U<00Izz00bZafj<_w0!?E%Y5)KL literal 0 HcmV?d00001 diff --git a/microservices/admins_service/main.py b/microservices/admins_service/main.py index e69de29..bfa1cb5 100644 --- a/microservices/admins_service/main.py +++ b/microservices/admins_service/main.py @@ -0,0 +1,93 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import List +import sqlite3 + +app = FastAPI() + +# SQLite connection +conn = sqlite3.connect('bikes.db') +cursor = conn.cursor() + +# Create the Admins table if it doesn't exist +cursor.execute(''' + CREATE TABLE IF NOT EXISTS Admins ( + admin_id INTEGER PRIMARY KEY, + username TEXT, + password TEXT, + email TEXT, + phone_number TEXT + ) +''') +conn.commit() + + +# Admin model +class Admin(BaseModel): + username: str + password: str + email: str + phone_number: str + + +# Routes +@app.post("/admins/", response_model=Admin) +async def create_admin(admin: Admin): + cursor.execute(''' + INSERT INTO Admins + (username, password, email, phone_number) + VALUES (?, ?, ?, ?) + ''', ( + admin.username, admin.password, admin.email, admin.phone_number + )) + conn.commit() + return admin + + +# @app.get("/admins/", response_model=List[Admin]) +# async def read_admins(): +# cursor.execute('SELECT * FROM Admins') +# admins = cursor.fetchall() +# return admins + +@app.get("/admins/", response_model=List[Admin]) +async def read_admins(): + cursor.execute('SELECT username, email, phone_number FROM Admins') + admins_data: List[Tuple[str, str, str]] = cursor.fetchall() + admins = [ + Admin( + username=admin[0], + email=admin[1], + phone_number=admin[2] + ) for admin in admins_data + ] + return admins + + +@app.get("/admins/{admin_id}", response_model=Admin) +async def read_admin(admin_id: int): + cursor.execute('SELECT * FROM Admins WHERE admin_id = ?', (admin_id,)) + admin = cursor.fetchone() + if admin is None: + raise HTTPException(status_code=404, detail="Admin not found") + return admin + + +@app.put("/admins/{admin_id}", response_model=Admin) +async def update_admin(admin_id: int, admin: Admin): + cursor.execute(''' + UPDATE Admins + SET username = ?, password = ?, email = ?, phone_number = ? + WHERE admin_id = ? + ''', ( + admin.username, admin.password, admin.email, admin.phone_number, admin_id + )) + conn.commit() + return admin + + +@app.delete("/admins/{admin_id}") +async def delete_admin(admin_id: int): + cursor.execute('DELETE FROM Admins WHERE admin_id = ?', (admin_id,)) + conn.commit() + return {"message": "Admin deleted successfully"} diff --git a/microservices/rentals_service/__pycache__/main.cpython-39.pyc b/microservices/rentals_service/__pycache__/main.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ea2d7749d2668bedbf38f1657b4b0d5ed013382 GIT binary patch literal 3629 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 HGU)#RBo9$E literal 0 HcmV?d00001 diff --git a/microservices/rentals_service/main.py b/microservices/rentals_service/main.py index e69de29..e204743 100644 --- a/microservices/rentals_service/main.py +++ b/microservices/rentals_service/main.py @@ -0,0 +1,128 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import List +import sqlite3 + +app = FastAPI() + +# SQLite connection +conn = sqlite3.connect('rentals.db') +cursor = conn.cursor() + +# Create the Rentals table if it doesn't exist +cursor.execute(''' + CREATE TABLE IF NOT EXISTS Rentals ( + rental_id INTEGER PRIMARY KEY, + id INT, + user_id INT, + bike_id INT, + year INT, + hour INT, + season INT, + holiday BOOLEAN, + workingday BOOLEAN, + weather INT, + temp DECIMAL(5, 2), + atemp DECIMAL(5, 2), + humidity DECIMAL(5, 2), + windspeed DECIMAL(5, 2), + count INT, + FOREIGN KEY (user_id) REFERENCES Users(user_id), + FOREIGN KEY (bike_id) REFERENCES Bikes(bike_id) + ) +''') +conn.commit() + + +# Rental model +class Rental(BaseModel): + id: int + user_id: int + bike_id: int + year: int + hour: int + season: int + holiday: bool + workingday: bool + weather: int + temp: float + atemp: float + humidity: float + windspeed: float + count: int + + +# Routes +@app.post("/rentals/", response_model=Rental) +async def create_rental(rental: Rental): + cursor.execute(''' + INSERT INTO Rentals + (id, user_id, bike_id, year, hour, season, holiday, workingday, weather, temp, atemp, humidity, windspeed, count) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ''', ( + rental.id, rental.user_id, rental.bike_id, rental.year, rental.hour, + rental.season, rental.holiday, rental.workingday, rental.weather, + rental.temp, rental.atemp, rental.humidity, rental.windspeed, rental.count + )) + conn.commit() + return rental + + +@app.get("/rentals/", response_model=List[Rental]) +async def read_rentals(): + cursor.execute('SELECT * FROM Rentals') + rentals = cursor.fetchall() + rental_objects = [] + for rental in rentals: + rental_objects.append(Rental( + id=rental[0], + user_id=rental[1], + bike_id=rental[2], + year=rental[3], + hour=rental[4], + season=rental[5], + holiday=bool(rental[6]), + workingday=bool(rental[7]), + weather=rental[8], + temp=float(rental[9]), + atemp=float(rental[10]), + humidity=float(rental[11]), + windspeed=float(rental[12]), + count=rental[13] + )) + + return rental_objects + + +@app.get("/rentals/{rental_id}", response_model=Rental) +async def read_rental(rental_id: int): + cursor.execute('SELECT * FROM Rentals WHERE rental_id = ?', (rental_id,)) + rental = cursor.fetchone() + if rental is None: + raise HTTPException(status_code=404, detail="Rental not found") + return rental + + +@app.put("/rentals/{rental_id}", response_model=Rental) +async def update_rental(rental_id: int, rental: Rental): + cursor.execute(''' + UPDATE Rentals + SET id = ?, user_id = ?, bike_id = ?, year = ?, hour = ?, season = ?, + holiday = ?, workingday = ?, weather = ?, temp = ?, atemp = ?, + humidity = ?, windspeed = ?, count = ? + WHERE rental_id = ? + ''', ( + rental.id, rental.user_id, rental.bike_id, rental.year, rental.hour, + rental.season, rental.holiday, rental.workingday, rental.weather, + rental.temp, rental.atemp, rental.humidity, rental.windspeed, + rental.count, rental_id + )) + conn.commit() + return rental + + +@app.delete("/rentals/{rental_id}") +async def delete_rental(rental_id: int): + cursor.execute('DELETE FROM Rentals WHERE rental_id = ?', (rental_id,)) + conn.commit() + return {"message": "Rental deleted successfully"} diff --git a/microservices/rentals_service/rentals.db b/microservices/rentals_service/rentals.db index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b9e3d839ec0a26d0ceca6587137ffe766d990c68 100644 GIT binary patch literal 8192 zcmeI#K~KUk6bJCmn2?x|c+-T-JC1~S(0F%XAw(Qn@W9CwSEK<pvUMTcJ@`ev_$lmg zuz;c`FXsQUrD@-L&HCG^z59+fibhd9lZGzXF>@StMZ_3$?0aC}b!79y^~8?Z{I_t} z+33A&tDN#1vkw9S5P$##AOHafKmY;|fB*#kQsCv(DV<a*&TGlY;Zz9~8aYk!;h-V7 z*XPvt>K#t`BDqJDN4%<j)B&~qK5ubBccOjki2>d4L2Xm^nJ?yPqT;-%SRCq!`m(rG zGS2oc%EnQ;vyv#8MB#4LR0ncN^=`MrJ-=vQMDaw2&)?^iG-I{1yHT?_UGs)LR>!@p z(RsDlO#YM{r!yUBv)tFb&|#3wl?wJ1JVj|}wvW~93f^w{nJ&4xVwD7Ma>4xu@6m&m zO*Wb0OSc+x>8-}P)lb}YX7%T)+1=b;`VkO-00bZa0SG_<0uX=z1Rwwb2>fG#4@zN? ANB{r; literal 0 HcmV?d00001 diff --git a/microservices/rentals_service/rentals.py b/microservices/rentals_service/rentals.py deleted file mode 100644 index d183201..0000000 --- a/microservices/rentals_service/rentals.py +++ /dev/null @@ -1,109 +0,0 @@ -from fastapi import FastAPI, HTTPException -from pydantic import BaseModel -from typing import List -import sqlite3 - -app = FastAPI() - -# SQLite connection -conn = sqlite3.connect('bikes.db') -cursor = conn.cursor() - -# Create the Rentals table if it doesn't exist -cursor.execute(''' - CREATE TABLE IF NOT EXISTS Rentals ( - rental_id INTEGER PRIMARY KEY, - id INT, - user_id INT, - bike_id INT, - year INT, - hour INT, - season INT, - holiday BOOLEAN, - workingday BOOLEAN, - weather INT, - temp DECIMAL(5, 2), - atemp DECIMAL(5, 2), - humidity DECIMAL(5, 2), - windspeed DECIMAL(5, 2), - count INT, - FOREIGN KEY (user_id) REFERENCES Users(user_id), - FOREIGN KEY (bike_id) REFERENCES Bikes(bike_id) - ) -''') -conn.commit() - - -# Rental model -class Rental(BaseModel): - id: int - user_id: int - bike_id: int - year: int - hour: int - season: int - holiday: bool - workingday: bool - weather: int - temp: float - atemp: float - humidity: float - windspeed: float - count: int - - -# Routes -@app.post("/rentals/", response_model=Rental) -async def create_rental(rental: Rental): - cursor.execute(''' - INSERT INTO Rentals - (id, user_id, bike_id, year, hour, season, holiday, workingday, weather, temp, atemp, humidity, windspeed, count) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - ''', ( - rental.id, rental.user_id, rental.bike_id, rental.year, rental.hour, - rental.season, rental.holiday, rental.workingday, rental.weather, - rental.temp, rental.atemp, rental.humidity, rental.windspeed, rental.count - )) - conn.commit() - return rental - - -@app.get("/rentals/", response_model=List[Rental]) -async def read_rentals(): - cursor.execute('SELECT * FROM Rentals') - rentals = cursor.fetchall() - return rentals - - -@app.get("/rentals/{rental_id}", response_model=Rental) -async def read_rental(rental_id: int): - cursor.execute('SELECT * FROM Rentals WHERE rental_id = ?', (rental_id,)) - rental = cursor.fetchone() - if rental is None: - raise HTTPException(status_code=404, detail="Rental not found") - return rental - - -@app.put("/rentals/{rental_id}", response_model=Rental) -async def update_rental(rental_id: int, rental: Rental): - cursor.execute(''' - UPDATE Rentals - SET id = ?, user_id = ?, bike_id = ?, year = ?, hour = ?, season = ?, - holiday = ?, workingday = ?, weather = ?, temp = ?, atemp = ?, - humidity = ?, windspeed = ?, count = ? - WHERE rental_id = ? - ''', ( - rental.id, rental.user_id, rental.bike_id, rental.year, rental.hour, - rental.season, rental.holiday, rental.workingday, rental.weather, - rental.temp, rental.atemp, rental.humidity, rental.windspeed, - rental.count, rental_id - )) - conn.commit() - return rental - - -@app.delete("/rentals/{rental_id}") -async def delete_rental(rental_id: int): - cursor.execute('DELETE FROM Rentals WHERE rental_id = ?', (rental_id,)) - conn.commit() - return {"message": "Rental deleted successfully"} -- GitLab