Skip to content

Sequence Diagrams

Oğuz Kağnıcı edited this page Oct 15, 2024 · 7 revisions

Post

Create

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User->>UserInterface: createPost(title, content, category, challenged_post)
  UserInterface->>Database: savePost(user_id, title, content, category, challenged_post)
  alt Success
    Database-->>UserInterface: <OK>
    UserInterface-->>User: Post created successfully.
  else Failure
    Database-->>UserInterface: <ERROR>
    UserInterface-->>User: <ERR_CODE, errorMessage>
  end

Loading

Delete

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: deletePost(post_id)
  UserInterface->>Database: deletePost(post_id)
  alt Success
   Database-->>UserInterface: <OK>
   UserInterface-->>User: Post deleted successfully.
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
Loading

View

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: viewPost(post_id)
  UserInterface->>Database: getPostDetails(post_id)
  
  alt Success
    Database-->>UserInterface: <OK, content, post_type, comments>
    
    alt Text-Only Post
      UserInterface-->>User: displayContent(content)
      UserInterface-->>User: displayComments(comments)
    else Visual Post
      UserInterface-->>User: displayContent(content)
      UserInterface-->>User: displayComments(comments)
      UserInterface-->>User: display3DModelViewer(model_file)
    end
    
  else Failure
    Database-->>UserInterface: <ERROR>
    UserInterface-->>User: <ERR_CODE, errorMessage>
  end

Loading

Like

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: likePost(post_id, value)
  UserInterface->>Database: likePost(user_id, post_id, value)
  alt Success
   Database-->>UserInterface: <OK, post_likes>
   UserInterface-->>User: displayPostLikes(post_id)
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
Loading

Bookmark

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: bookmarkPost(post_id)
  UserInterface->>Database: bookmarkPost(user_id, post_id)
  alt Success
   Database-->>UserInterface: <OK>
   UserInterface-->>User: Bookmark added successfully.
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end

Loading

Comment

Create

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User->>UserInterface: createComment(post_id, content)
  UserInterface->>Database: saveComment(user_id, post_id, content)
  alt Success
    Database-->>UserInterface: <OK>
    UserInterface-->>User: Comment created successfully.
  else Failure
    Database-->>UserInterface: <ERROR>
    UserInterface-->>User: <ERR_CODE, errorMessage>
  end
Loading

Delete

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User->>UserInterface: deleteComment(post_id, comment_id)
  UserInterface->>Database: deleteComment(post_id, comment_id)
  alt Success
    Database-->>UserInterface: <OK>
    UserInterface-->>User: Comment deleted successfully.
  else Failure
    Database-->>UserInterface: <ERROR>
    UserInterface-->>User: <ERR_CODE, errorMessage>
  end
Loading

Like

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: likeComment(post_id, comment_id, value)
  UserInterface->>Database: likeComment(user_id, post_id, comment_id, value)
  alt Success
   Database-->>UserInterface: <OK, comment_likes>
   UserInterface-->>User: displayCommentLikes(post_id, comment_id)
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

Feed

View Following

sequenceDiagram
  actor User
  participant UserInterface
  participant FeedController
  participant Database

  User ->>UserInterface: viewFollowing(user_id)
  UserInterface->>FeedController: fetchFollowing(user_id)
  FeedController->>Database: fetchFollowing(user_id)
  alt Success
   Database-->>FeedController: <OK, following>
   FeedController-->>UserInterface: <following>
   UserInterface-->>User: displayFollowingFeed(following)
  else Failure
   Database-->>FeedController: <ERROR>
   FeedController-->>UserInterface: <ERR_CODE>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

Category

Follow

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: follow(category)
  UserInterface->>Database: follow(user_id,category)
  alt Success
   Database-->>UserInterface: <OK>
   UserInterface-->>User: Followed category successfully.
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
Loading

Unfollow

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: unfollow(category)
  UserInterface->>Database: unfollow(user_id,category)
  alt Success
   Database-->>UserInterface: <OK>
   UserInterface-->>User: Unfollowed category successfully.
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
Loading

View Gallery

sequenceDiagram
  actor User
  participant UserInterface
  participant CategoryController
  participant Database

  User ->>UserInterface: viewGallery(category)
  UserInterface->>CategoryController: fetchGallery(category)
  CategoryController->>Database: fetchGallery(category)
  alt Success
   Database-->>CategoryController: <OK, gallery>
   CategoryController-->>UserInterface: <gallery>
   UserInterface-->>User: displayGallery(gallery)
  else Failure
   Database-->>CategoryController: <ERROR>
   CategoryController-->>UserInterface: <ERR_CODE>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

View Discussions

sequenceDiagram
  actor User
  participant UserInterface
  participant CategoryController
  participant Database

  User ->>UserInterface: viewDiscussions(category)
  UserInterface->>CategoryController: fetchDiscussions(category)
  CategoryController->>Database: fetchDiscussions(category)
  alt Success
   Database-->>CategoryController: <OK, discussions>
   CategoryController-->>UserInterface: <discussions>
   UserInterface-->>User: displayDiscussions(discussions)
  else Failure
   Database-->>CategoryController: <ERROR>
   CategoryController-->>UserInterface: <ERR_CODE>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

User Interactions

View User

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: viewProfile(user_id)
  UserInterface->>Database: fetchProfile(user_id)
  alt Success
   Database-->>UserInterface: <OK, details, posts, comments>
   UserInterface-->>User: displayProfile(details, posts, comments)
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

Follow User

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: followUser(user_id, value)
  UserInterface->>Database: followUser(user_id, value)
  alt Success
   Database-->>UserInterface: <OK, follower_count>
   UserInterface-->>User: displayFollowers(follower_count)
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

Account

View Own Profile

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: viewOwnProfile(user_id)
  UserInterface->>Database: fetchOwnProfile(user_id)
  alt Success
   Database-->>UserInterface: <OK, details, posts, comments>
   UserInterface-->>User: displayProfile(details, posts, comments)
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

Edit Profile

sequenceDiagram
  actor User
  participant UserInterface
  participant Database

  User ->>UserInterface: updateAttribute(user_id, attribute)
  UserInterface->>Database: updateAttribute(user_id, attribute)
  alt Success
   Database-->>UserInterface: <OK, attribute>
   UserInterface-->>User: displayAttribute(attribute)
  else Failure
   Database-->>UserInterface: <ERROR>
   UserInterface-->>User: <ERR_CODE, errorMessage>
  end
 
Loading

Search

sequenceDiagram
    participant User
    participant UserInterface
    participant WikidataAPI
    participant Database
    

    User->>UserInterface: search(query)
    UserInterface->>WikidataAPI: fetchKeywords(query)

    alt Keywords
     WikidataAPI-->>Database: searchDatabase(query, keywords)
    else No Keywords
     WikidataAPI-->>Database: searchDatabase(query)
    end
   
    alt Success
     Database-->>UserInterface: <OK, results>
     UserInterface-->>User: displayResults(results)
    else Failure
     Database-->>UserInterface: <ERROR>
     UserInterface-->>User: <ERR_CODE, message>
    end

Loading

Tournament

Trigger

sequenceDiagram
    participant TournamentController
    participant CategoryController
    participant Database
    participant PostController
    participant UserProfileController

    TournamentController ->> CategoryController: startWeeklyTournament(category_id)
    CategoryController ->> Database: getPosts(category_id, week)
    Database -->> CategoryController: <OK, post_list_with_likes>
    
    CategoryController ->> PostController: findMostLikedPost(post_list)
    PostController -->> CategoryController: <OK, most_liked_post>
    
    CategoryController ->> TournamentController: declareWinner(most_liked_post)
    TournamentController ->> UserProfileController: awardPoints(user_id, points)
    UserProfileController ->> Database: updateUserPoints(user_id, points)
    Database -->> UserProfileController: <OK>
    TournamentController -->> UserProfileController: displayPointsOnProfile(user_id)

Loading

Enter

sequenceDiagram
  actor User
  participant UserInterface
  participant Database
  participant TournamentController

  User ->> UserInterface: createPost(title, content, category, tournament_entry)
  UserInterface ->> TournamentController: checkTournamentStatus(category)

  alt Tournament Active
    TournamentController -->> UserInterface: <tournament_active>
    UserInterface ->> TournamentController: savePost(user_id, title, content, category, tournament_entry)
    alt Success
      Database -->> UserInterface: <OK>
      UserInterface -->> User: Post created and entered into tournament successfully.
    else Failure
      Database -->> UserInterface: <ERROR>
      UserInterface -->> User: <ERR_CODE, errorMessage>
    end
  else Tournament Not Active
    TournamentController -->> UserInterface: <no_tournament>
    UserInterface ->> TournamentController: savePost(user_id, title, content, category)
    alt Success
      Database -->> UserInterface: <OK>
      UserInterface -->> User: Post created but no active tournament.
    else Failure
      Database -->> UserInterface: <ERROR>
      UserInterface -->> User: <ERR_CODE, errorMessage>
    end
  end



Loading

Prepared By Oğuz Kağnıcı, Improved and Reviewed By Deniz Ulaş Poyraz

🏠Home

🛠️Project

🔍Labs

📁Assignments

📝Meeting Notes

👥Team Members

📄Templates

⚽️352 Material

352 Material

🛠️Project

🔍Research

📁Assignments

📝Meeting Notes

👥Team Members

📄Templates

Clone this wiki locally