1
1
Fork 0
novelmetrix-python/ras/api/modules/crud.py

102 lines
3.9 KiB
Python
Raw Normal View History

2023-11-10 11:57:38 +01:00
import jwt, json
from django.contrib.auth import get_user_model
from rest_framework.decorators import api_view
import ras.settings
from sqlalchemy import create_engine
from sqlalchemy.sql import text
from django.http import JsonResponse
import pandas as pd
from rest_framework.response import Response
2023-11-21 08:24:48 +01:00
from .functions import isAuthorized, getBooksData, filterData
2023-11-10 11:57:38 +01:00
2023-11-13 16:09:59 +01:00
engine = create_engine('mysql+mysqldb://' + ras.settings.DATABASES['default']['USER'] + ':' + ras.settings.DATABASES['default']['PASSWORD'] + '@' + ras.settings.DATABASES['default']['HOST'] + ':3306/' + ras.settings.DATABASES['default']['NAME'])
conn = engine.connect()
2023-11-10 11:57:38 +01:00
2023-11-13 16:09:59 +01:00
# -------------------------------
# Get all books in the database
# -------------------------------
2023-11-10 11:57:38 +01:00
@api_view(['GET'])
def getAllBooks(request):
2023-11-13 16:09:59 +01:00
if(request.headers.get('Authorization')):
2023-11-21 08:24:48 +01:00
isLoggedIn = isAuthorized(request.headers.get('Authorization'));
if(isLoggedIn):
books = getBooksData(request.headers.get('userid'))
2023-12-20 08:30:32 +01:00
data = books.apply(lambda row: {
"id": row['id'],
"name": row['name'],
"author": row['author'],
"genre": row['genre'],
"readed": row['readed'],
"rating": row['rating']
}, axis=1).tolist()
2023-11-21 08:24:48 +01:00
return Response(data)
else:
return JsonResponse({'error': 'No user detected'}, safe=False)
2023-11-13 16:09:59 +01:00
else:
return JsonResponse({'error': 'Unauthorized'}, safe=False)
# -------------------------------
# Add a book into the database
# -------------------------------
2023-11-10 11:57:38 +01:00
@api_view(['POST'])
def addBook(request):
if(request.headers.get('Authorization')):
2023-11-21 08:24:48 +01:00
isLoggedIn = isAuthorized(request.headers.get('Authorization'));
if(isLoggedIn):
2023-11-22 08:56:12 +01:00
userid = request.headers.get('userid')
book = request.body
book = json.loads(book)
conn.execute(text("INSERT INTO api_books (userid, name, author, genre, readed, rating) VALUES ('" + str(userid) + "', '" + str(book['name']) + "', '" + str(book['author']) + "', '" + str(book['genre']) + "', '" + str(book['readed']) + "', " + str(book['rating']) + ")"))
2023-11-21 08:24:48 +01:00
return JsonResponse("OK", safe=False)
else:
return JsonResponse({'error': 'No user detected'}, safe=False)
2023-11-10 11:57:38 +01:00
else:
2023-11-13 16:09:59 +01:00
return JsonResponse({'error': 'Unauthorized'}, safe=False)
# -------------------------------
# Update a book in the database
# -------------------------------
2023-11-10 11:57:38 +01:00
@api_view(['PUT'])
def updateBook(request):
if(request.headers.get('Authorization')):
2023-11-21 08:24:48 +01:00
isLoggedIn = isAuthorized(request.headers.get('Authorization'));
if(isLoggedIn):
book = request.POST.get('book')
book = json.loads(book)
bookid = request.headers.get('bookid')
2023-11-22 08:56:12 +01:00
conn.execute(text("UPDATE api_books set name='" + str(book['name']) + "', author='" + str(book['author']) + "', genre='" + str(book['genre']) + "', readed='" + str(book['readed']) + "', rating='" + str(book['rating']) + "' WHERE id=" + str(bookid)))
2023-11-21 08:24:48 +01:00
return JsonResponse("OK", safe=False)
else:
return JsonResponse({'error': 'No user detected'}, safe=False)
2023-11-10 11:57:38 +01:00
else:
2023-11-13 16:09:59 +01:00
return JsonResponse({'error': 'Unauthorized'}, safe=False)
# -------------------------------
# Delete a book in the database
# -------------------------------
2023-11-10 11:57:38 +01:00
@api_view(['DELETE'])
def deleteBook(request):
if(request.headers.get('Authorization')):
2023-11-21 08:24:48 +01:00
isLoggedIn = isAuthorized(request.headers.get('Authorization'));
if(isLoggedIn):
bookid = request.headers.get('bookid')
conn.execute(text("DELETE FROM api_books WHERE id = " + str(bookid)))
return JsonResponse("OK", safe=False)
else:
return JsonResponse({'error': 'No user detected'}, safe=False)
2023-11-10 11:57:38 +01:00
else:
2023-11-13 16:09:59 +01:00
return JsonResponse({'error': 'Unauthorized'}, safe=False)