diff --git a/microservices/admins_service/admin.py b/microservices/admins_service/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..6922c762a881a275f44b21875a38f775111cdfa6 --- /dev/null +++ b/microservices/admins_service/admin.py @@ -0,0 +1,80 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/admins_service/main.py b/microservices/admins_service/main.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/admins_service/requirements.txt b/microservices/admins_service/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/bikes_service/bikes.db b/microservices/bikes_service/bikes.db new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/bikes_service/bikes.py b/microservices/bikes_service/bikes.py new file mode 100644 index 0000000000000000000000000000000000000000..80520b5d691db6bcc2e2a00e8bb7c998aed5931d --- /dev/null +++ b/microservices/bikes_service/bikes.py @@ -0,0 +1,89 @@ +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 Bikes table if it doesn't exist +cursor.execute(''' + CREATE TABLE IF NOT EXISTS Bikes ( + bike_id INTEGER PRIMARY KEY, + model TEXT, + status TEXT, + location TEXT, + condition TEXT, + price_per_hour DECIMAL(10, 2), + last_maintenance_date DATE, + maintenance_history TEXT + ) +''') +conn.commit() + + +# Bike model +class Bike(BaseModel): + model: str + status: str + location: str + condition: str + price_per_hour: float + last_maintenance_date: str + maintenance_history: str + + +# Routes +@app.post("/bikes/", response_model=Bike) +async def create_bike(bike: Bike): + cursor.execute(''' + INSERT INTO Bikes + (model, status, location, condition, price_per_hour, last_maintenance_date, maintenance_history) + VALUES (?, ?, ?, ?, ?, ?, ?) + ''', ( + bike.model, bike.status, bike.location, bike.condition, + bike.price_per_hour, bike.last_maintenance_date, bike.maintenance_history + )) + conn.commit() + return bike + + +@app.get("/bikes/", response_model=List[Bike]) +async def read_bikes(): + cursor.execute('SELECT * FROM Bikes') + bikes = cursor.fetchall() + return bikes + + +@app.get("/bikes/{bike_id}", response_model=Bike) +async def read_bike(bike_id: int): + cursor.execute('SELECT * FROM Bikes WHERE bike_id = ?', (bike_id,)) + bike = cursor.fetchone() + if bike is None: + raise HTTPException(status_code=404, detail="Bike not found") + return bike + + +@app.put("/bikes/{bike_id}", response_model=Bike) +async def update_bike(bike_id: int, bike: Bike): + cursor.execute(''' + UPDATE Bikes + SET model = ?, status = ?, location = ?, condition = ?, + price_per_hour = ?, last_maintenance_date = ?, maintenance_history = ? + WHERE bike_id = ? + ''', ( + bike.model, bike.status, bike.location, bike.condition, + bike.price_per_hour, bike.last_maintenance_date, bike.maintenance_history, bike_id + )) + conn.commit() + return bike + + +@app.delete("/bikes/{bike_id}") +async def delete_bike(bike_id: int): + cursor.execute('DELETE FROM Bikes WHERE bike_id = ?', (bike_id,)) + conn.commit() + return {"message": "Bike deleted successfully"} diff --git a/microservices/bikes_service/main.py b/microservices/bikes_service/main.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/bikes_service/requirements.txt b/microservices/bikes_service/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/rentals_service/main.py b/microservices/rentals_service/main.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/rentals_service/rentals.db b/microservices/rentals_service/rentals.db new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/rentals_service/rentals.py b/microservices/rentals_service/rentals.py new file mode 100644 index 0000000000000000000000000000000000000000..d183201077a061495db93c2f74dd7ba418f2330a --- /dev/null +++ b/microservices/rentals_service/rentals.py @@ -0,0 +1,109 @@ +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"} diff --git a/microservices/rentals_service/requirements.txt b/microservices/rentals_service/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/reviews_service/main.py b/microservices/reviews_service/main.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/reviews_service/requirements.txt b/microservices/reviews_service/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/reviews_service/review.db b/microservices/reviews_service/review.db new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/reviews_service/reviews.py b/microservices/reviews_service/reviews.py new file mode 100644 index 0000000000000000000000000000000000000000..7034387f149d8537381a76a8e4f4bde86582700e --- /dev/null +++ b/microservices/reviews_service/reviews.py @@ -0,0 +1,85 @@ +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 Reviews table if it doesn't exist +cursor.execute(''' + CREATE TABLE IF NOT EXISTS Reviews ( + review_id INTEGER PRIMARY KEY, + user_id INT, + bike_id INT, + rating INT, + comment TEXT, + review_date DATETIME, + FOREIGN KEY (user_id) REFERENCES Users(user_id), + FOREIGN KEY (bike_id) REFERENCES Bikes(bike_id) + ) +''') +conn.commit() + + +# Review model +class Review(BaseModel): + user_id: int + bike_id: int + rating: int + comment: str + review_date: str + + +# Routes +@app.post("/reviews/", response_model=Review) +async def create_review(review: Review): + cursor.execute(''' + INSERT INTO Reviews + (user_id, bike_id, rating, comment, review_date) + VALUES (?, ?, ?, ?, ?) + ''', ( + review.user_id, review.bike_id, review.rating, review.comment, review.review_date + )) + conn.commit() + return review + + +@app.get("/reviews/", response_model=List[Review]) +async def read_reviews(): + cursor.execute('SELECT * FROM Reviews') + reviews = cursor.fetchall() + return reviews + + +@app.get("/reviews/{review_id}", response_model=Review) +async def read_review(review_id: int): + cursor.execute('SELECT * FROM Reviews WHERE review_id = ?', (review_id,)) + review = cursor.fetchone() + if review is None: + raise HTTPException(status_code=404, detail="Review not found") + return review + + +@app.put("/reviews/{review_id}", response_model=Review) +async def update_review(review_id: int, review: Review): + cursor.execute(''' + UPDATE Reviews + SET user_id = ?, bike_id = ?, rating = ?, comment = ?, review_date = ? + WHERE review_id = ? + ''', ( + review.user_id, review.bike_id, review.rating, review.comment, + review.review_date, review_id + )) + conn.commit() + return review + + +@app.delete("/reviews/{review_id}") +async def delete_review(review_id: int): + cursor.execute('DELETE FROM Reviews WHERE review_id = ?', (review_id,)) + conn.commit() + return {"message": "Review deleted successfully"} diff --git a/microservices/users_service/main.py b/microservices/users_service/main.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/users_service/requirements.txt b/microservices/users_service/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/users_service/users.db b/microservices/users_service/users.db new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/microservices/users_service/users.py b/microservices/users_service/users.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391