Add the module
Add the Database module
In order to connect to our database and run operations on it, we would want to have a generic module and class that we can use anywhere in our application code.
# database.py
import pymongo
class DB(object):
URI = "mongodb://localhost:27017"
@staticmethod
def init():
client = pymongo.MongoClient(DB.URI)
DB.DATABASE = client['event_cafe_cloud']
@staticmethod
def insert(collection, data):
DB.DATABASE[collection].insert_one(data)
@staticmethod
def delete(collection, data):
return DB.DATABASE[collection].delete_one(data)
@staticmethod
def find_one(collection, query):
return DB.DATABASE[collection].find_one(query)
@staticmethod
def update_one(collection, query, update):
return DB.DATABASE[collection].update_one(query, update)
@staticmethod
def list(collection, query1, query2):
return list(DB.DATABASE[collection].find(query1, query2))
@staticmethod
def count_documents(collection, query1, query2):
return DB.DATABASE[collection].find(query1, query2)
@staticmethod
def count(collection):
return DB.DATABASE[collection].estimated_document_count({})
@staticmethod
def idx_plus(collection):
return DB.DATABASE[collection].find_one(sort=[("idx", -1)])['idx'] + 1
# main_controller.py
import jwt
from flask import request, render_template, Blueprint, jsonify, url_for, redirect
from database import DB
from controller.auth_controller import SECRET_KEY
from ectoekn import ECTOKEN
bp = Blueprint('main', __name__)
@bp.route('/')
def home():
user = ECTOKEN.get_token(object)
if user is not None:
cafes = DB.list('cafes', {}, {'_id': False})
return render_template('index.html', user=user, cafes=cafes)
else:
return render_template('index.html', msg="로그인 정보가 없습니다")
@bp.route('/api/main', methods=['GET'])
def show_cafes():
msg = request.args.get('msg')
cafes = DB.list('cafes', {}, {'_id': False}) # 사용
return jsonify({'result': 'success', 'cafes': cafes})