1. Section Overview
2.1 day 3 - lectures.zip
2. Lecture Resources.html
3. PostgreSQL
4. The Precompiled Alternative
5. Database Server
6. Connecting
7. Query Execution
8. Parametrization
9. Dynamic Query Generation
10. Dynamic Queries Part II
11. Quick Refactor
12. Lets Build!
13.1 day 3 - challenges.zip
13.2 playground.zip
13. Project Resources - All Challenge Solutions.html
14. New Virtual Env
15. The Web-based API
16. Automatic Documentation
17. Our Database
18. Object-Oriented Helper Part I
19. Object-Oriented Helper Part II
20. Connection URL As Env Variable
21. Dependency Injection
22. Challenge 1 - DDL
23. Creating Our First Tables
24. The Register Endpoint
25. Data Validation With Pydantic
26. User Registration Data Validation
27. Hashing Passwords
28. Registration With Hashed Passwords
29. Challenge 2 - Persisting To Database
30. Inserting Users
31. Adding The UNIQUE Constraint
32. HTTPExceptions And Status Codes
33. Challenge 3 - Object-Oriented Refactor
34. OOP Write Returning Id
35. Challenge 4 - Registration Tokens
36. Saving Tokens
37. The Activate Endpoint + Cleanup
38. Challenge 5 - Get One
39. Implementing Database get_one()
40. Challenge 6 - Get One As Special Case Of Get
41. Implementing A Generalized Get
42. Challenge 7 - Update
43. Implementing Database .update()
44. Challenge 8 - Endpoint Integration
45. The Activate Flow
46. Challenge 9 - Activate Once
47. Enforcing One Time Activation
48. Messages Prep
49. Form vs Query Params
50. Code Reorg Using Routers
51. Challenge 10 - Messages DDL + Path
52. Persisting Messages
53. Fixing A Typo
54. Authentication
55. Authenticated POST messages
56. Fixing An Old Bug
57. Challenge 11 - Updating Messages
58. PATCH messages
59. Challenge 12 - Get Message By Id
60. Getting Public + Own Messages
61. Challenge 13 - Get All Messages
62. Getting Public And Own Messages
63. or_where Refactor
64. Challenge 14 - Database Delete
65. Implementing .delete()
66. Refactoring Database Methods
67. Challenge 15 - Integrating Delete
68. Deleting Messages From The Interface
69. Challenge 16 - New Get Contains
70. Implementing Get With Like Operator
71. Challenge 17 - Get With Contains
72. Refactoring Get
73. Challenge 18 - Search Messages
74. Implementing Message Search
75. A More Coherent Database .get()
76. The Final .get() Refactor
77. Challenge 19 - Upvotes
78. Upvotes DDL
79. Challenge 20 - Upvoting
80. The Upvote Interface
81. Quick Bug Fix
82. Challenge 21 - Most Popular Messages
83. Most Upvoted
84. Preparing To Send Emails
85. Sending Generated Tokens
86. Two Little Tweaks
87. Preparing To Deploy
88. Deployment