示例#1
0
def create_app(test_config=None):
    app = Flask(__name__)
    app.config['JSON_AS_ASCII'] = False
    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    ## Persistenace Layer
    user_dao = UserDao(database)
    status_dao = StatusDao(database)

    ## Business Layer
    services = Services
    services.user_service = UserService(user_dao, config)
    services.status_service = StatusService(status_dao)

    ## 엔드포인트들을 생성
    create_endpoints(app, services)

    return app
示例#2
0
def create_app(test_config=None):
    app = Flask(__name__)

    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    # Persistenace Layer
    user_dao = UserDao(database)
    tweet_dao = TweetDao(database)

    # Business Layer
    s3_client = boto3.client("s3",
                             aws_access_key_id=app.config['S3_ACCESS_KEY'],
                             aws_secret_access_key=app.config['S3_SECRET_KEY'])

    services = Services
    services.user_service = UserService(user_dao, app.config, s3_client)
    services.tweet_service = TweetService(tweet_dao)

    # 엔드포인트들을 생성
    create_endpoints(app, services)

    return app
示例#3
0
def create_app(test_config=None):
    '''
        총 3개의 layer로 이루어 짐
        레이어드 패턴 (layered pattern)을 이용하였습니다.
        model, service, view
    '''
    app = Flask(__name__)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    ## model
    movie_dao = MovieDao(database)

    ## service
    services = Services
    services.movie_service = MovieService(movie_dao, config)

    ## end point 생성
    create_endpoints(app, services)

    return app
示例#4
0
def create_app(test_config = None):
    app = Flask(__name__)

    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database =create_engine(app.config['DB_URL'], encoding='utf-8', max_overflow =0 )

    ## Persistence layer
    user_dao = UserDao(database)
    tweet_dao = TweetDao(database)

    ## Business layer
    services =Services
    services.user_service = UserService(user_dao, app.config)
    services.tweet_service = TweetService(tweet_dao)

    ## 엔드포인트 생성
    create_endpoints(app, services)

    # persistence, business, presentation layer 모두 연결된 flask application 생성
    return app
示例#5
0
def create_app(test_config=None):

    app = Flask(__name__)

    if test_config is None:
        app.config.from_pyfile('config.py')
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    user_dao = UserDao(database)
    tweet_dao = TweetDao(database)

    s3_client = boto3.client('s3',
                             aws_access_key_id=app.config['S3_ACCESS_KEY'],
                             aws_secret_access_key=app.config['S3_SECRET_KEY'])
    services = Services
    services.user_service = UserService(user_dao, app.config, s3_client)
    services.tweet_service = TweetService(tweet_dao)

    create_endpoints(app, services)

    return app
示例#6
0
def create_app(test_config=None):
    app = Flask(__name__)
    app.config['JSON_AS_ASCII'] = False

    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    product_dao = ProductDao()
    seller_dao = SellerDao()
    order_dao = OrderDao()
    user_dao = UserDao()
    coupon_dao = CouponDao()
    event_dao = EventDao()

    services = Services

    services.product_service = ProductService(product_dao, app.config)
    services.seller_service = SellerService(seller_dao, app.config)
    services.order_service = OrderService(order_dao, app.config)
    services.user_service = UserService(user_dao, app.config)
    services.coupon_service = CouponService(coupon_dao, app.config)
    services.event_service = EventService(event_dao, app.config)

    create_endpoints(app, services)

    return app
示例#7
0
def create_app(test_config=None):
    app = Flask(__name__)
    app.debug = True

    # By default, submission of cookies across domains is disabled due to the security implications.
    CORS(app, resources={r'*': {'origins': '*'}})

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = app.config['DB']

    # persistence Layer
    sample_user_dao = SampleUserDao()

    # business Layer
    services = Services
    services.sample_user_service = SampleUserService(sample_user_dao)

    # presentation Layer
    create_endpoints(app, services, database)

    return app
示例#8
0
文件: app.py 项目: s2zan/miniter
def create_app(test_config=None):
    app = Flask(__name__)

    CORS(app)

    if test_config is None:
        # app.config.from_pyfile("config.py")
        app.config.update({
            'DB': config.db,
            'DB_URL': config.db_url,
            'JWT_SECRET_KEY': config.jwt_secret_key
        })
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    user_dao = UserDao(database)
    tweet_dao = TweetDao(database)

    services = Services
    services.user_service = UserService(user_dao, app.config)
    services.tweet_service = TweetService(tweet_dao)

    create_endpoints(app, services)

    return app
示例#9
0
文件: app.py 项目: taeha7b/apptestai
def create_app(test_config=None):

    app = Flask(__name__)

    #SetUp config
    if test_config is None:
        app.config.from_pyfile('config.py')
    else:
        app.config.update(test_config)

    # database engin와 연동된 session maker 생성, connection 필요시마다 session instance 생성
    database = create_engine(DB_URL,
                             encoding='utf-8',
                             pool_size=10,
                             max_overflow=5,
                             poolclass=QueuePool)

    Session = sessionmaker(bind=database)
    session = Session()

    #SetUp CORS
    CORS(app)

    #SetUp Persistence Layer
    user_dao = UserDao()

    #SetUp Business Layer
    services = Services
    services.user_service = UserService(user_dao)

    #SetUp Presentation Layer
    create_endpoints(app, services, session)

    return app
示例#10
0
def create_app():
    app = Flask(__name__)
    services = Services
    services.team_service = TeamService()

    create_endpoints(app, services)
    return app
示例#11
0
文件: app.py 项目: cs097/BackEnd_Prj
def create_app(test_config=None):
    app = Flask(__name__)

    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    ## Persistenace Layer
    user_dao = UserDao(database)
    tweet_dao = TweetDao(database)

    ## Business Layer
    services = Services
    services.user_service = UserService(user_dao, config)
    services.tweet_service = TweetService(tweet_dao)

    ## Create Endpoints
    create_endpoints(app, services)

    return app
示例#12
0
文件: app.py 项目: datstar2/BACK
def create_app(test_config=None):
    app = Flask(__name__)

    CORS(app)

    app.config['CORS_HEADERS'] = 'Content-Type'

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    app.config['SQLALCHEMY_DATABASE_URI'] = config.DB_URL
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    db.init_app(app)

    app.app_context().push()

    ## Persistenace Layer
    user_dao = UserDAO(db)
    tag_dao = TagDAO(db)
    image_dao = ImageDAO(db)
    model_dao = ModelDAO(db)
    test_dao = testDAO(db)
    model_controller = ModelController(model_dao)


    print("APP실행중")

    # ## Threading_Timer


    print("쓰레드 실행 뒤")



    ## Business Layer
    s3_client = boto3.client(
        "s3",
        aws_access_key_id     = app.config['S3_ACCESS_KEY'],
        aws_secret_access_key = app.config['S3_SECRET_KEY']
    )


    services = Services
    services.user_service = UserService(user_dao, app.config)
    services.tag_service = TagService(tag_dao)
    services.image_service = ImageService(image_dao, app.config, s3_client, test_dao)
    services.model_service = ModelService(model_controller)


    ## 엔드포인트들을 생성
    create_endpoints(app, services)



    return app
示例#13
0
文件: app.py 项目: taeha7b/Service
def create_app(test_config=None):
    """
    Returns :
        생성된 플라스크 앱 객체
    Authors :
        [email protected](김기욱)
        [email protected](김태하)
    History :
        2020-10-11 : Caching 구현
        2020-10-02 : ASCCI형식 False로 변경(김기욱)
        2020-09-17 : 초기 생성(김기욱 김태하)
    """

    app = Flask(__name__)
    app.config['JSON_AS_ASCII'] = False

    app.config['CACHE_TYPE'] = 'simple'
    cache.init_app(app)

    #SetUp CORS
    CORS(app)

    #SetUp config
    if test_config is None:
        app.config.from_pyfile('config.py')
    else:
        app.config.update(test_config)

    #SetUp Persistence Layer
    product_dao = ProductDao()
    search_dao = SearchDao()
    user_dao = UserDao()
    question_dao = QuestionDao()
    coupon_dao = CouponDao()
    purchase_dao = PurchaseDao()

    #SetUp Business Layer
    services = Services
    services.product_service = ProductService(product_dao)
    services.user_service = UserService(user_dao)
    services.question_service = QuestionService(question_dao)
    services.coupon_service = CouponService(coupon_dao)
    services.search_service = SearchService(search_dao)
    services.purchase_service = PurchaseService(purchase_dao)

    #SetUp Presentation Layer
    create_endpoints(app, services)

    return app
示例#14
0
def create_app():
    app = Flask(__name__)
    app.json_encoder = CustomJSONEncoder

    CORS(app, resources={r"*": {"origins": "*"}})

    create_endpoints(app)

    @app.errorhandler(CustomError)
    def handle_errors(e):
        return jsonify({'message': e.message}), e.status_code

    @app.errorhandler(InvalidRequestError)
    def handle_data_errors(e):
        return jsonify(demo_error_formatter(e)), 400

    @app.errorhandler(Exception)
    def handle_exceptions(e):
        traceback.print_exc()
        return jsonify({'message': UNKNOWN_ERROR}), 500

    return app
示例#15
0
def create_app(test_config = None):
    #import한 Flask 클래스 객체화시켜서 app에 저
    app = Flask(__name__)
    #CORS 문제 해결 위함
    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)
    database = create_engine(app.config['DB_URL'], encoding= 'utf-8', max_overflow = 0)

    user_dao = UserDao(database)
    tweet_dao = TweetDao(database)

    services = Services
    services.user_service = UserService(user_dao, app.config)
    services.tweet_service = TweetService(tweet_dao)

    create_endpoints(app, services)

    return app
示例#16
0
def create_app(test_config=None):
    app = Flask(__name__)
    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(
        app.config['DB_URL'], encoding='UTF-8', max_overflow=0)

    userDao = UserDao(database)
    tweetDao = TweetDao(database)

    service = Service()
    service.tweet_service = TweetService(tweetDao)
    service.user_service = UserService(userDao, app.config)

    create_endpoints(app, service)

    return app
示例#17
0
def create_app(test_config=None):
    app = Flask(__name__)

    cors = CORS(app, resources={r"/*": {"origins": "*"}})

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    ## Persistenace Layer
    user_dao = UserDao(database)
    store_dao = StoreDao(database)
    category_dao = CategoryDao(database)
    menu_dao = MenuDao(database)
    order_dao = OrderDao(database)

    ## Business Layer
    s3_client = boto3.client("s3",
                             aws_access_key_id=app.config['S3_ACCESS_KEY'],
                             aws_secret_access_key=app.config['S3_SECRET_KEY'],
                             region_name='ap-northeast-2')
    services = Services
    services.user_service = UserService(user_dao, app.config, s3_client)
    services.store_service = StoreService(store_dao, app.config, s3_client)
    services.menu_service = MenuService(menu_dao, app.config, s3_client)
    services.order_service = OrderService(order_dao)
    services.category_service = CategoryService(category_dao)
    socket_io = SocketIO(app, cors_allowed_origins="*")
    ## 엔드포인트들을 생성
    create_endpoints(app, services, socket_io)

    return app, socket_io
示例#18
0
文件: app.py 项目: taeha7b/apptestai
def create_app(test_config = None):

    app = Flask(__name__)

    #SetUp CORS
    CORS(app)

    #SetUp config
    if test_config is None:
        app.config.from_pyfile('config.py')
    else:
        app.config.update(test_config)

    #SetUp Persistence Layer
    user_dao = UserDao()

    #SetUp Business Layer
    services = Services
    services.user_service = UserService(user_dao)

    #SetUp Presentation Layer
    create_endpoints(app, services)

    return app
示例#19
0
import config

from flask import Flask
from sqlalchemy import create_engine
from flask_cors import CORS

from model import WestaDao
from service import WestaService
from view import create_endpoints

def create_app(test_config - None):
    app = Flask(__name__)

    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'], encoding = 'utf-8', max_overflow = 0)
    
    ## WestaDao Layer
    westa_dao = WestaDao(database)

    service = WestaService
    service.westa_service = WestaService(westa_dao, app.config)

    create_endpoints(app, service)

    return app 
示例#20
0
def create_app(test_config=None):
    app = Flask(__name__)

    CORS(app)

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    ## Persistenace Layer
    user_dao = UserDao(database)
    tweet_dao = TweetDao(database)

    ## Business Layer
    services = Services
    services.user_service = UserService(user_dao, config)
    services.tweet_service = TweetService(tweet_dao)

    ## 엔드포인트들을 생성
    create_endpoints(app, services)

    return app


# import jwt
# import bcrypt
#
# from flask import Flask, request, jsonify, current_app, Response, g
# from flask.json import JSONEncoder
# from sqlalchemy import create_engine, text
# from datetime import datetime, timedelta
# from functools import wraps
# from flask_cors import CORS
#
#
# ## Default JSON encoder는 set를 JSON으로 변환할 수 없다.
# ## 그럼으로 커스텀 엔코더를 작성해서 set을 list로 변환하여
# ## JSON으로 변환 가능하게 해주어야 한다.
# class CustomJSONEncoder(JSONEncoder):
#     def default(self, obj):
#         if isinstance(obj, set):
#             return list(obj)
#
#         return JSONEncoder.default(self, obj)
#
#
# def get_user(user_id):
#     user = current_app.database.execute(text("""
#         SELECT
#             id,
#             name,
#             email,
#             profile
#         FROM users
#         WHERE id = :user_id
#     """), {
#         'user_id': user_id
#     }).fetchone()
#
#     return {
#         'id': user['id'],
#         'name': user['name'],
#         'email': user['email'],
#         'profile': user['profile']
#     } if user else None
#
#
# def insert_user(user):
#     return current_app.database.execute(text("""
#         INSERT INTO users (
#             name,
#             email,
#             profile,
#             hashed_password
#         ) VALUES (
#             :name,
#             :email,
#             :profile,
#             :password
#         )
#     """), user).lastrowid
#
#
# def insert_tweet(user_tweet):
#     return current_app.database.execute(text("""
#         INSERT INTO tweets (
#             user_id,
#             tweet
#         ) VALUES (
#             :id,
#             :tweet
#         )
#     """), user_tweet).rowcount
#
#
# def insert_follow(user_follow):
#     return current_app.database.execute(text("""
#         INSERT INTO users_follow_list (
#             user_id,
#             follow_user_id
#         ) VALUES (
#             :id,
#             :follow
#         )
#     """), user_follow).rowcount
#
#
# def insert_unfollow(user_unfollow):
#     return current_app.database.execute(text("""
#         DELETE FROM users_follow_list
#         WHERE user_id = :id
#         AND follow_user_id = :unfollow
#     """), user_unfollow).rowcount
#
#
# def get_timeline(user_id):
#     timeline = current_app.database.execute(text("""
#         SELECT
#             t.user_id,
#             t.tweet
#         FROM tweets t
#         LEFT JOIN users_follow_list ufl ON ufl.user_id = :user_id
#         WHERE t.user_id = :user_id
#         OR t.user_id = ufl.follow_user_id
#     """), {
#         'user_id': user_id
#     }).fetchall()
#
#     return [{
#         'user_id': tweet['user_id'],
#         'tweet': tweet['tweet']
#     } for tweet in timeline]
#
#
# def get_user_id_and_password(email):
#     row = current_app.database.execute(text("""
#         SELECT
#             id,
#             hashed_password
#         FROM users
#         WHERE email = :email
#     """), {'email': email}).fetchone()
#
#     return {
#         'id': row['id'],
#         'hashed_password': row['hashed_password']
#     } if row else None
#
#
# #########################################################
# #       Decorators
# #########################################################
# def login_required(f):
#     @wraps(f)
#     def decorated_function(*args, **kwargs):
#         access_token = request.headers.get('Authorization')
#         if access_token is not None:
#             try:
#                 payload = jwt.decode(access_token, current_app.config['JWT_SECRET_KEY'], 'HS256')
#             except jwt.InvalidTokenError:
#                 payload = None
#
#             if payload is None: return Response(status=401)
#
#             user_id = payload['user_id']
#             g.user_id = user_id
#             g.user = get_user(user_id) if user_id else None
#         else:
#             return Response(status=401)
#
#         return f(*args, **kwargs)
#
#     return decorated_function
#
#
# def create_app(test_config=None):
#     app = Flask(__name__)
#
#     CORS(app)
#
#     app.json_encoder = CustomJSONEncoder
#
#     if test_config is None:
#         app.config.from_pyfile("config.py")
#     else:
#         app.config.update(test_config)
#
#     database = create_engine(app.config['DB_URL'], encoding='utf-8', max_overflow=0)
#     app.database = database
#
#     @app.route("/ping", methods=['GET'])
#     def ping():
#         return "pong"
#
#     @app.route("/sign-up", methods=['POST'])
#     def sign_up():
#         new_user = request.json
#         new_user['password'] = bcrypt.hashpw(
#             new_user['password'].encode('UTF-8'),
#             bcrypt.gensalt()
#         )
#
#         new_user_id = insert_user(new_user)
#         new_user = get_user(new_user_id)
#
#         return jsonify(new_user)
#
#     @app.route('/login', methods=['POST'])
#     def login():
#         credential = request.json
#         email = credential['email']
#         password = credential['password']
#         user_credential = get_user_id_and_password(email)
#
#         if user_credential and bcrypt.checkpw(password.encode('UTF-8'),
#                                               user_credential['hashed_password'].encode('UTF-8')):
#             user_id = user_credential['id']
#             payload = {
#                 'user_id': user_id,
#                 'exp': datetime.utcnow() + timedelta(seconds=60 * 60 * 24)
#             }
#             token = jwt.encode(payload, app.config['JWT_SECRET_KEY'], 'HS256')
#
#             return jsonify({
#                 'user_id': user_id,
#                 'access_token': token.decode('UTF-8')
#             })
#         else:
#             return '', 401
#
#     @app.route('/tweet', methods=['POST'])
#     @login_required
#     def tweet():
#         user_tweet = request.json
#         user_tweet['id'] = g.user_id
#         tweet = user_tweet['tweet']
#
#         if len(tweet) > 300:
#             return '300자를 초과했습니다', 400
#
#         insert_tweet(user_tweet)
#
#         return '', 200
#
#     @app.route('/follow', methods=['POST'])
#     @login_required
#     def follow():
#         payload = request.json
#         payload['id'] = g.user_id
#
#         insert_follow(payload)
#
#         return '', 200
#
#     @app.route('/unfollow', methods=['POST'])
#     @login_required
#     def unfollow():
#         payload = request.json
#         payload['id'] = g.user_id
#
#         insert_unfollow(payload)
#
#         return '', 200
#
#     @app.route('/timeline/<int:user_id>', methods=['GET'])
#     def timeline(user_id):
#         return jsonify({
#             'user_id': user_id,
#             'timeline': get_timeline(user_id)
#         })
#
#     @app.route('/timeline', methods=['GET'])
#     @login_required
#     def user_timeline():
#         user_id = g.user_id
#
#         return jsonify({
#             'user_id': user_id,
#             'timeline': get_timeline(user_id)
#         })
#
#     return app
示例#21
0
def create_app(test_config=None):
    class Services:
        pass

    app = Flask(__name__)

    CORS(app)

    app.config.from_pyfile("config.py")

    # 테스트 데이터 베이스 업데이트
    if test_config:
        app.config.update(test_config)
    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)
    app.database = database
    # 에러 처리
    app.register_error_handler(KeyError, handle_key_error)
    app.register_error_handler(ValidationError, handle_validation_error)
    app.register_error_handler(LoginError, handle_login_error)

    ## Persistenace Layer
    user_dao = UserDao(database)
    company_dao = CompanyDao(database)
    request_dao = RequestDao(database)
    car_dao = CarDao(database)
    suggestion_dao = SuggestionDao(database)

    ## Business Layer
    services = Services
    services.user_service = UserService(user_dao, company_dao, config,
                                        database)
    services.company_service = CompanyService(company_dao)
    services.request_service = RequestService(request_dao, database)
    services.suggestion_service = SuggestionService(suggestion_dao,
                                                    request_dao, database)

    ## 엔드포인트들을 생성
    create_endpoints(app, services)

    ## 채팅을 위한 socket생성
    socketio = SocketIO(app, cors_allowed_origins='*')

    @socketio.on('connect')
    def connect():
        print('Client connected')
        messages = database.execute("""
        SELECT *
        FROM chats
        """).fetchall()

        messages = [dict(message) for message in messages]

        for message in messages:
            message['created_at'] = str(message['created_at'])

        socketio.emit('message', messages)

    @socketio.on('send_message')
    def handle_message(message):
        request_id = message['request_id']
        name = message['name']
        text = message['text']

        try:
            connection = database.connect()
            trans = connection.begin()

            connection.execute(
                """
            INSERT INTO chats (
                request_id,
                name,
                text
            ) VALUES (
                %s,
                %s,
                %s
                )
            """, (request_id, name, text))

            trans.commit()

        except:
            trans.rollback()

        chat_messages = database.execute("""
        SELECT *
        FROM chats
        """).fetchall()

        messages = [dict(chat_message) for chat_message in chat_messages]

        for msg in messages:
            msg['created_at'] = str(msg['created_at'])

        socketio.emit('message', messages)

    return app
示例#22
0
def create_app(test_config=None):
    app = Flask(__name__)
    app.debug = True
    app.json_encoder = CustomJSONEncoder
    app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024

    # By default, submission of cookies across domains is disabled due to the security implications.
    CORS(app, resources={r'*': {'origins': '*'}})

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = app.config['DB']

    # persistence Layer
    destination_dao = DestinationDao()
    cart_item_dao = CartItemDao()
    sender_dao = SenderDao()
    event_dao = EventDao()
    store_order_dao = StoreOrderDao()
    order_dao = OrderDao()
    enquiry_dao = EnquiryDao()
    seller_shop_dao = SellerShopDao()

    # admin2
    order_detail_dao = OrderDetailDao()
    seller_info_dao = SellerInfoDao()

    # service
    services = Services

    services.user_service = UserService(app.config)
    services.destination_service = DestinationService(destination_dao)
    services.cart_item_service = CartItemService(cart_item_dao)
    services.store_order_service = StoreOrderService(store_order_dao)
    services.product_list_service = ProductListService()
    services.category_list_service = CategoryListService()

    services.event_list_service = EventListService()
    services.sender_service = SenderService(sender_dao)
    services.event_service = EventService(event_dao)
    services.seller_service = SellerService(app.config)
    services.bookmark_service = BookmarkService()
    services.product_enquiry_list_service = ProductEnquiryService()
    services.seller_shop_service = SellerShopService(seller_shop_dao)
    services.seller_info_service = SellerInfoService(seller_info_dao)

    #admin1
    services.event_service = EventService(event_dao)
    services.order_service = OrderService(order_dao)
    services.order_detail_service = OrderService(order_detail_dao)
    services.enquiry_service = EnquiryService(enquiry_dao)

    #admin2
    services.seller_service = SellerService(app.config)
    services.seller_info_service = SellerInfoService(seller_info_dao)
    services.product_manage_service = ProductManageService()

    # presentation Layer
    create_endpoints(app, services, database)

    return app