11"""
22 app init
33"""
4-
54from flask import Flask , render_template , jsonify
65from flask_restplus import Resource , Api , fields , reqparse
76from flask_sqlalchemy import SQLAlchemy
87from sqlalchemy .exc import SQLAlchemyError
98from sqlalchemy .sql import text
109from flask_marshmallow import Marshmallow
10+ from app .api .database import DB
11+ from app .users .views import API
1112
12- DB = SQLAlchemy ()
1313SQLALCHEMY_DATABASE_URI = \
1414 ("mysql+pymysql://{USER}:{PASSWORD}@{ADDR}:{PORT}/{NAME}?charset=utf8" )
15- # API Doc에 대한 설명을 덧 붙이기 위한 생성자
16- API = Api (version = '1.0' , title = 'Board API' ,
17- description = 'A simple Board RESTPlus API' ,)
1815# 설명할 API에 대한 것
19- api_ns = API .namespace ('userinfo' , description = 'UserInfo operations' )
2016MA = Marshmallow ()
21-
22- class UserInfo (DB .Model ):
23- """ UserInfo model """
24- __tablename__ = "userinfo"
25- __table_args__ = {'mysql_collate' : 'utf8_general_ci' }
26- id = DB .Column ("id" , DB .Integer , primary_key = True )
27- name = DB .Column ("name" , DB .String (250 ), nullable = False )
28- age = DB .Column ("age" , DB .Integer , nullable = False )
29- tel = DB .Column ("tel" , DB .String (20 ), nullable = False )
30- email = DB .Column ("email" , DB .String (50 ), nullable = False )
31- created = DB .Column (DB .TIMESTAMP , server_default = text ("CURRENT_TIMESTAMP" ), nullable = False )
32-
33- def __init__ (self , name , age , tel , email ):
34- self .name = name
35- self .age = age
36- self .tel = tel
37- self .email = email
38-
3917def create_app () -> (Flask ):
4018 """ create_app() 함수를 호출해 앱을 초기화 """
4119
@@ -58,116 +36,5 @@ def create_app() -> (Flask):
5836 API .init_app (app )
5937 MA .init_app (app )
6038
61- """ API model을 보이기 위한 설명 추가 """
62- # 나중에 따로 빼야 할 것 같다.
63- user_info = API .model ('UserInfo' , {
64- 'name' : fields .String (required = True , description = "User's name" ),
65- 'age' : fields .Integer (required = True , description = "User's age" ),
66- 'tel' : fields .String (required = True , description = "User's tel" ),
67- 'email' : fields .String (required = True , description = "User's email" )
68- })
69-
70- class UserSchema (MA .Schema ):
71- class Meta :
72- # Fields to expose
73- fields = ("name" , "age" , "tel" , "email" )
74-
75-
76-
77- """ API.route part"""
78- @api_ns .route ("/hello" )
79- class HelloWorld (Resource ):
80- def get (self ):
81- return {'hello' : 'world' }
82-
83- @api_ns .route ('/users' )
84- class Show (Resource ):
85- post_parser = reqparse .RequestParser (bundle_errors = True )
86- post_parser .add_argument ('name' , required = True , type = str , help = "user name" ,location = 'json' )
87- post_parser .add_argument ('age' , required = True , type = int , help = "user age" ,location = 'json' )
88- post_parser .add_argument ('tel' , required = True , type = str , help = "user tel" ,location = 'json' )
89- post_parser .add_argument ('email' , required = True , type = str , help = "user email" ,location = 'json' )
90- def get (self ):
91- user_schema = UserSchema (many = True )
92- all_users = DB .session .query (UserInfo ).all ()
93- result = user_schema .dump (all_users )
94- return jsonify (result .data )
95-
96- @api_ns .expect (user_info )
97- def post (self ):
98- args_ = self .post_parser .parse_args ()
99- user = UserInfo (name = args_ ['name' ], age = args_ ['age' ], tel = args_ ['tel' ], email = args_ ['email' ])
100- message = "not working"
101- try :
102- DB .session .add (user )
103- DB .session .commit ()
104- message = "success"
105- except SQLAlchemyError as err :
106- message = str (err )
107- DB .session .rollback ()
108- finally :
109- DB .session .close ()
110- return message
111-
112- @api_ns .expect (user_info )
113- def delete (self ):
114- args_ = self .post_parser .parse_args ()
115- user = UserInfo .query .filter_by (name = args_ ['name' ]).first ()
116- try :
117- DB .session .delete (user )
118- DB .session .commit ()
119- message = "success"
120- except SQLAlchemyError as err :
121- message = str (err )
122- DB .session .rollback ()
123- finally :
124- DB .session .close ()
125- return message
126-
127- @api_ns .route ('/test' )
128- class Test (Resource ):
129- post_parser = reqparse .RequestParser (bundle_errors = True )
130- post_parser .add_argument ('name' , required = True , type = str , help = "user name" ,location = 'json' )
131- post_parser .add_argument ('age' , required = True , type = int , help = "user age" ,location = 'json' )
132- post_parser .add_argument ('tel' , required = True , type = str , help = "user tel" ,location = 'json' )
133- post_parser .add_argument ('email' , required = True , type = str , help = "user email" ,location = 'json' )
134- def get (self ):
135- return {'test' : 'test' }
136-
137- @api_ns .expect (user_info )
138- def post (self ):
139- args_ = self .post_parser .parse_args ()
140- user = UserInfo (name = args_ ['name' ], age = args_ ['age' ], tel = args_ ['tel' ], email = args_ ['email' ])
141- return {'name' : 'server' + user .name , 'age' : user .age , 'tel' : user .tel , 'email' : user .email }
142-
143-
144- @api_ns .route ('/test' )
145- class HelloWorld (Resource ):
146- post_parser = reqparse .RequestParser (bundle_errors = True )
147- post_parser .add_argument ('name' , required = True , type = str , help = "user name" ,location = 'json' )
148- post_parser .add_argument ('tel' , type = str , help = "user tel" ,location = 'json' )
149-
150- def get (self ):
151- userInfo = DB .session .query (UserInfo ).all ()
152- import pdb ; pdb .set_trace ()
153- return {'hello' : 'world' }
154-
155- @api_ns .expect (user_info )
156- def post (self ):
157- """ 유저 생성 """
158- args_ = self .post_parser .parse_args ()
159- user = UserInfo (name = args_ ['name' ], tel = args_ ['tel' ])
160- message = "not working"
161- try :
162- DB .session .add (user )
163- DB .session .commit ()
164- message = "success"
165- except SQLAlchemyError as err :
166- message = str (err )
167- DB .session .rollback ()
168- finally :
169- DB .session .close ()
170- return message
171-
17239 """ return part """
173- return app
40+ return app
0 commit comments