Below is the diagram that describes the tables.
classDiagram class User { + userId: string + username: string + email: string + passwordHash: string } class Post { + postId: string + userId: string + subredditId: string + title: string + content: string + createdAt: date + updatedAt: date } class Comment { + commentId: string + postId: string + userId: string + content: string + createdAt: date + updatedAt: date } class Subreddit { + subredditId: string + name: string + description: string + createdAt: date + updatedAt: date } User "1"--o "*" Post : creates User "1"--o "*" Comment : writes User "1"--o "*" Subreddit : moderates Post "1"--o "*" Comment : has Subreddit "1"--o "*" Post : contains Comment "1"--o "1" Post : belongs to
graph TD; subgraph Client_Applications WebApp(Web Application) MobileApp(Mobile Application) end subgraph Frontend_Services LB1(Load Balancer) Auth(Authentication Service) Notif(Notification Service) LB1 --> Auth LB1 --> Notif end subgraph Backend_Services API(API Gateway) User(User Service) Post(Post Service) Comment(Comment Service) Subreddit(Subreddit Service) Search(Search Service) Recommend(Recommendation Service) Moderate(Moderation Service) Notify(Notification Service) Analytics(Analytics Service) API --> User API --> Post API --> Comment API --> Subreddit API --> Search API --> Recommend API --> Recommendation end subgraph Infrastructure_Components LB(Load Balancer) Cache(Caching Layer) CDN(Content Delivery Network) DB(Database Clusters) ObjStore(Object Storage) end Client_Applications --> |Routes Requests| API API --> Frontend_Services Backend_Services --> LB Client_Applications --> CDN DB --> ObjStore Monitor --> Backend_Services Security --> Backend_Services
sequenceDiagram participant ClientUser as Regular User participant ClientMod as Moderator participant API as API Gateway participant Post as Post Service participant Mod as Moderation Service participant DB as Database ClientUser ->> API: Create New Post API ->> Post: Create New Post Request Post ->> DB: Save New Post DB -->> Post: Post Saved Post -->> API: Post Saved Response API -->> ClientUser: Post Saved Response ClientMod ->> ClientMod: Review Pending Posts ClientMod ->> API: Retrieve Pending Posts Request API ->> Mod: Retrieve Pending Posts Request Mod ->> DB: Retrieve Pending Posts DB -->> Mod: Pending Posts Retrieved Mod -->> API: Pending Posts Retrieved API -->> ClientMod: Pending Posts Retrieved ClientMod ->> ClientMod: Review and Approve Post ClientMod ->> API: Approve Post Request API ->> Mod: Approve Post Request Mod ->> DB: Update Post Status to Approved DB -->> Mod: Post Status Updated Mod -->> API: Post Status Updated API -->> ClientMod: Post Status Updated