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"}