from flask import Flask,request import pymongo import time from bson import ObjectId from datetime import datetime, timezone client = pymongo.MongoClient("mongodb://localhost:27017") db = client["bank"] users_collection = db["users"] account_collection = db["accounts"] transaction_collection = db["transactions"] class User: username = None password = None codemeli = None is_deleted = None created_at = None updated_at =None deleted_at= None def __init__(self): self.created_at = get_current_time() def get_current_time(): return datetime.now(timezone.utc) class Account: acc_type = None acc_num = None balance = None username = None def __init__(self): self.balance=100 class Transaction: acc_num= None time= None transaction_type= None amount= None def __init__(self): self.time= time.time() app = Flask(__name__) @app.route("/") def home(): return "hello world" @app.route("/user-list") def get_users(): users = [] users_in_db = users_collection.find() for user in users_in_db: users.append({ "codemeli": user["codemeli"], "username": user["username"] }) return users @app.route("/add-user",methods=["POST"]) def add_user(): body=request.json newUser = User() newUser.updated_at = None newUser.deleted_at = None newUser.username = body["username"] newUser.codemeli = body["codemeli"] newUser.password = body["password"] newUser.is_deleted = False if body["username"] == "" or body["codemeli"] == "" or body["password"] == "": return {"message": "Fields cannot be empty"}, 400 users_collection.insert_one(newUser.__dict__) return {'message':'You are registered successfully'},201 @app.route("/login",methods=["POST"]) def login(): body=request.json find_user= users_collection.find_one({"username":body["username"],"password":body["password"]}) if find_user ==None: return {'message':'couldnt find'},404 else: return {'message':'You are login successfully'} @app.route('/user/') def get_user_detail(id): user = users_collection.find_one({ "_id": ObjectId(id) }) if user == None: return {"message": "user not found"}, 404 return { "username": user["username"], "codemeli": user["codemeli"] } @app.route('/hard-delete-user', methods=["DELETE"]) def hard_delete_user(): body = request.json id = body["id"] result = users_collection.delete_one({ "_id": ObjectId(id) }) if result.deleted_count == 0: return { "message": "user not found"}, 404 return { "message": "user deleted successfully"}, 204 @app.route('/soft-delete-user', methods=["DELETE"]) def soft_delete_user(): body = request.json id=body["id"] result = users_collection.update_one({"_id":ObjectId(id),"is_deleted":False},{"$set":{"is_deleted":True,"deleted_at": get_current_time() }}) if result.matched_count==0: return{"message":"delete failed"},404 return {"message":"user is deleted successfully"} @app.route('/restore-user', methods=["POST"]) def restore_user(): body = request.json id=body["id"] result = users_collection.update_one({"_id":ObjectId(id),"is_deleted":True},{"$set":{"is_deleted":False,"is_deleted":None}}) if result.matched_count==0: return{"message":"restore failed"},404 return {"message":"user is restored successfully"} @app.route('/update-user', methods=["PUT"]) def update_user(): body = request.json id = body["id"] codemeli = body["codemeli"] username = body["username"] result = users_collection.update_one({ "_id": ObjectId(id) }, {"$set":{"codemeli": codemeli, "username": username, "updated_at":get_current_time()}}) if result.matched_count == 0: return { "message": "user not found"}, 404 return { "message": "user updated successfully"} app.run(debug=True)