8
8
9
9
10
10
app = Flask (__name__ )
11
- app .config ["SQLALCHEMY_DATABASE_URI" ] = "sqlite:///database.file"
11
+ # app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"
12
+ app .config ["SQLALCHEMY_DATABASE_URI" ] = "sqlite:///database.db"
12
13
app .config ["SQLALCHEMY_TRACK_MODIFICATIONS" ] = True
13
14
14
15
15
- # configure sqlite3 to enforce foreign key constraints
16
- @event .listens_for (Engine , "connect" )
17
- def _set_sqlite_Pragma (dbapi_connection , connection_record ):
18
- if isinstance (dbapi_connection , SQLite3Connection ):
19
- cursor = dbapi_connection .cursor ()
20
- cursor .execute ("PRAGMA foreign_keys=ON;" )
21
- cursor .close ()
22
-
23
16
db = SQLAlchemy (app )
24
17
now = datetime .now ()
25
18
@@ -28,68 +21,121 @@ class User(db.Model):
28
21
id = db .Column (db .Integer , primary_key = True )
29
22
fname = db .Column (db .String (50 ), nullable = False )
30
23
lname = db .Column (db .String (50 ), nullable = False )
31
- username = db .Column (db .String (50 ), unique = True , nullable = False )
32
- dob = db .Column (db .String (50 ), unique = True , nullable = False )
33
- posts = db .relationship ("Post" )
24
+ username = db .Column (db .String (50 ), unique = True , nullable = False )
25
+ dob = db .Column (db .String (50 ), nullable = False )
26
+ posts = db .relationship (
27
+ "Post" , backref = db .backref ("posts" , lazy = True ), cascade = "all, delete"
28
+ )
29
+
34
30
35
31
class Post (db .Model ):
36
32
id = db .Column (db .Integer , primary_key = True )
37
- title = db .Column (db .String , unique = True , nullable = False )
38
- content = db .Column (db .Text ,nullable = False )
39
- date = db .Column (db .Date )
33
+ title = db .Column (db .String , nullable = False )
34
+ content = db .Column (db .Text ,nullable = False )
35
+ date = db .Column (db .DateTime , nullable = False , default = datetime . utcnow )
40
36
user_id = db .Column (db .Integer , db .ForeignKey ("user.id" ), nullable = False )
41
37
42
38
43
-
44
-
45
39
# Create a new user
46
- @app .route ("/user" , methods = [' POST' ])
40
+ @app .route ("/user" , methods = [" POST" ])
47
41
def create_user ():
48
42
49
43
data = request .get_json ()
50
44
new_user = User (
51
- fname = data ["fname" ],
52
- lname = data ["lname" ],
53
- username = data ["username" ],
54
- dob = data ["dob" ]
45
+ fname = data ["fname" ],
46
+ lname = data ["lname" ],
47
+ username = data ["username" ],
48
+ dob = data ["dob" ],
55
49
)
56
50
57
51
db .session .add (new_user )
58
52
db .session .commit ()
59
53
60
54
return jsonify ({"message" : "user created" }), 200
61
55
62
- @app .route ("/user/descending_id" , methods = ['GET' ])
63
- def get_all_users_descending ():
64
- pass
65
56
66
- @app .route ("/user/ascending_id" , methods = ['GET' ])
57
+ @app .route ("/user/descending_id" , methods = ["GET" ])
58
+ def get_all_users_descending ():
59
+ users = User .query .all ()
60
+ all_users_ll = linked_list .LinkedList ()
61
+
62
+ for user in users :
63
+ all_users_ll .insert_begining (
64
+ {
65
+ "id" : user .id ,
66
+ "first name" : user .fname ,
67
+ "last name" : user .lname ,
68
+ "username" : user .username ,
69
+ "date of birth" : user .dob ,
70
+ }
71
+ )
72
+ return jsonify (all_users_ll .to_list ()), 200
73
+
74
+
75
+ @app .route ("/user/ascending_id" , methods = ["GET" ])
67
76
def get_all_users_ascending ():
68
- pass
69
-
70
- @app .route ("/user/<user_id>" , methods = ['GET' ])
77
+ users = User .query .all ()
78
+ all_users_ll = linked_list .LinkedList ()
79
+
80
+ for user in users :
81
+ all_users_ll .insert_end (
82
+ {
83
+ "id" : user .id ,
84
+ "first name" : user .fname ,
85
+ "last name" : user .lname ,
86
+ "username" : user .username ,
87
+ "date of birth" : user .dob ,
88
+ }
89
+ )
90
+ return jsonify (all_users_ll .to_list ()), 200
91
+
92
+
93
+ @app .route ("/user/<user_id>" , methods = ["GET" ])
71
94
def get_user (user_id ):
72
- pass
95
+ users = User .query .all ()
96
+ all_users_ll = linked_list .LinkedList ()
97
+
98
+ for user in users :
99
+ all_users_ll .insert_begining (
100
+ {
101
+ "id" : user .id ,
102
+ "first name" : user .fname ,
103
+ "last name" : user .lname ,
104
+ "username" : user .username ,
105
+ "date of birth" : user .dob ,
106
+ }
107
+ )
108
+
109
+ user = all_users_ll .get_user_by_id (user_id )
110
+
111
+ return jsonify (user ), 200
112
+
73
113
74
- @app .route ("/user/<user_id>" , methods = [' DELETE' ])
114
+ @app .route ("/user/<user_id>" , methods = [" DELETE" ])
75
115
def delete_user (user_id ):
76
- pass
116
+ user = User .query .filter_by (id = user_id ).first ()
117
+ db .session .delete (user )
118
+ db .session .commit ()
119
+
120
+ return jsonify ({}), 204
77
121
78
- @app .route ("/blog_post/<user_id>" , methods = ['POST' ])
122
+
123
+ @app .route ("/blog_post/<user_id>" , methods = ["POST" ])
79
124
def create_blog_post (user_id ):
80
125
pass
81
126
82
- @app .route ("/user/<user_id>" , methods = ['GET' ])
127
+
128
+ @app .route ("/user/<user_id>" , methods = ["GET" ])
83
129
def get_all_blog_posts (user_id ):
84
130
pass
85
131
86
132
87
- @app .route ("/blog_post/<blog_post_id>" , methods = [' GET' ])
133
+ @app .route ("/blog_post/<blog_post_id>" , methods = [" GET" ])
88
134
def get_one_blog_post (blog_post_id ):
89
135
pass
90
136
91
137
92
- @app .route ("/blog_post/<blog_post_id>" , methods = [' DELETE' ])
138
+ @app .route ("/blog_post/<blog_post_id>" , methods = [" DELETE" ])
93
139
def delete_blog_post (blog_post_id ):
94
140
pass
95
141
0 commit comments