Compare commits

...

2 Commits

4 changed files with 166 additions and 146 deletions

161
app.py
View File

@ -1,147 +1,16 @@
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/<id>')
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"}
from flask import Flask
from .modules.userModuls import *
from flask_restful import Resource,Api
app = Flask(__name__)
api = Api(app)
api.add_resource(home,'/')
api.add_resource(CreateUser,'/add-user')
api.add_resource(loginUser,'/login')
api.add_resource(GetDetailUser,'/user/detail')
api.add_resource(HardDeleteUser, '/user/hard-delete')
api.add_resource(SoftDeleteUser, '/user/soft-delete')
api.add_resource(RestoreUser, '/user/restore')
api.add_resource(UpdateUser, '/user/update')
app.run(debug=True)

6
config.py Normal file
View File

@ -0,0 +1,6 @@
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017")
db = client["bank"]
users_collection = db["users"]
account_collection = db["accounts"]
transaction_collection = db["transactions"]

32
models.py Normal file
View File

@ -0,0 +1,32 @@
from datetime import datetime, timezone
import time
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()

113
modules/userModuls.py Normal file
View File

@ -0,0 +1,113 @@
from flask import request
from bson import ObjectId
from models import User,get_current_time
from config import users_collection
from flask_restful import Resource
class home (Resource):
def home():
return "hello world"
class UserList (Resource):
def get():
query=request.args
filter ={}
search = query.get('search',None)
if search:
filter["username"]={'$regex':search}
users = []
users_in_db = users_collection.find(filter)
for user in users_in_db:
users.append({
"codemeli": user["codemeli"],
"username": user["username"]
})
return users
class CreateUser (Resource):
def add_user(self):
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
class loginUser (Resource):
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'}
class GetDetailUser(Resource):
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"]
}
class HardDeleteUser(Resource):
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
class SoftDeleteUser(Resource):
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"}
class RestoreUser(Resource):
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"}
class UpdateUser(Resource):
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"}