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