mirror of
				https://github.com/yanislav-igonin/micrach
				synced 2025-11-04 10:27:02 +03:00 
			
		
		
		
	feat: add thread is archived check on posting
This commit is contained in:
		
							parent
							
								
									cb4eaa9fc2
								
							
						
					
					
						commit
						25d91e5742
					
				@ -111,7 +111,7 @@ func CreateThread(c *gin.Context) {
 | 
				
			|||||||
		errorHtmlData := Repositories.BadRequestHtmlData{
 | 
							errorHtmlData := Repositories.BadRequestHtmlData{
 | 
				
			||||||
			Message: validationErrorMessage,
 | 
								Message: validationErrorMessage,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		c.HTML(http.StatusInternalServerError, "400.html", errorHtmlData)
 | 
							c.HTML(http.StatusBadRequest, "400.html", errorHtmlData)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -122,7 +122,7 @@ func CreateThread(c *gin.Context) {
 | 
				
			|||||||
		errorHtmlData := Repositories.BadRequestHtmlData{
 | 
							errorHtmlData := Repositories.BadRequestHtmlData{
 | 
				
			||||||
			Message: Repositories.InvalidCaptchaErrorMessage,
 | 
								Message: Repositories.InvalidCaptchaErrorMessage,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		c.HTML(http.StatusInternalServerError, "400.html", errorHtmlData)
 | 
							c.HTML(http.StatusBadRequest, "400.html", errorHtmlData)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -233,6 +233,7 @@ func CreateThread(c *gin.Context) {
 | 
				
			|||||||
	c.Redirect(http.StatusFound, "/"+strconv.Itoa(threadID))
 | 
						c.Redirect(http.StatusFound, "/"+strconv.Itoa(threadID))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Add new post in thread
 | 
				
			||||||
func UpdateThread(c *gin.Context) {
 | 
					func UpdateThread(c *gin.Context) {
 | 
				
			||||||
	threadIDString := c.Param("threadID")
 | 
						threadIDString := c.Param("threadID")
 | 
				
			||||||
	threadID, err := strconv.Atoi(threadIDString)
 | 
						threadID, err := strconv.Atoi(threadIDString)
 | 
				
			||||||
@ -241,6 +242,20 @@ func UpdateThread(c *gin.Context) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						isArchived, err := Repositories.Posts.GetIfThreadIsArchived(threadID)
 | 
				
			||||||
 | 
						if isArchived {
 | 
				
			||||||
 | 
							errorHtmlData := Repositories.BadRequestHtmlData{
 | 
				
			||||||
 | 
								Message: Repositories.ThreadIsArchivedErrorMessage,
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							c.HTML(http.StatusBadRequest, "400.html", errorHtmlData)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							log.Println("error:", err)
 | 
				
			||||||
 | 
							c.HTML(http.StatusInternalServerError, "500.html", nil)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	form, err := c.MultipartForm()
 | 
						form, err := c.MultipartForm()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Println("error:", err)
 | 
							log.Println("error:", err)
 | 
				
			||||||
@ -256,7 +271,7 @@ func UpdateThread(c *gin.Context) {
 | 
				
			|||||||
		errorHtmlData := Repositories.BadRequestHtmlData{
 | 
							errorHtmlData := Repositories.BadRequestHtmlData{
 | 
				
			||||||
			Message: validationErrorMessage,
 | 
								Message: validationErrorMessage,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		c.HTML(http.StatusInternalServerError, "400.html", errorHtmlData)
 | 
							c.HTML(http.StatusBadRequest, "400.html", errorHtmlData)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -267,7 +282,7 @@ func UpdateThread(c *gin.Context) {
 | 
				
			|||||||
		errorHtmlData := Repositories.BadRequestHtmlData{
 | 
							errorHtmlData := Repositories.BadRequestHtmlData{
 | 
				
			||||||
			Message: Repositories.InvalidCaptchaErrorMessage,
 | 
								Message: Repositories.InvalidCaptchaErrorMessage,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		c.HTML(http.StatusInternalServerError, "400.html", errorHtmlData)
 | 
							c.HTML(http.StatusBadRequest, "400.html", errorHtmlData)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -166,6 +166,24 @@ func (r *PostsRepository) GetThreadByPostID(ID int) ([]Post, error) {
 | 
				
			|||||||
	return posts, nil
 | 
						return posts, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Check if thread is archived
 | 
				
			||||||
 | 
					func (r *PostsRepository) GetIfThreadIsArchived(ID int) (bool, error) {
 | 
				
			||||||
 | 
						sql := `
 | 
				
			||||||
 | 
							SELECT is_archived
 | 
				
			||||||
 | 
							FROM posts
 | 
				
			||||||
 | 
							WHERE id = $1
 | 
				
			||||||
 | 
							LIMIT 1
 | 
				
			||||||
 | 
						`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						row := Db.Pool.QueryRow(context.TODO(), sql, ID)
 | 
				
			||||||
 | 
						var isArchived bool
 | 
				
			||||||
 | 
						err := row.Scan(&isArchived)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return false, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return isArchived, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (r *PostsRepository) CreateInTx(tx pgx.Tx, p Post) (int, error) {
 | 
					func (r *PostsRepository) CreateInTx(tx pgx.Tx, p Post) (int, error) {
 | 
				
			||||||
	sql := `
 | 
						sql := `
 | 
				
			||||||
		INSERT INTO posts (is_parent, parent_id, title, text, is_sage, updated_at)
 | 
							INSERT INTO posts (is_parent, parent_id, title, text, is_sage, updated_at)
 | 
				
			||||||
 | 
				
			|||||||
@ -64,3 +64,4 @@ const InvalidTextLengthErrorMessage = "TEXT SHOULD NOT EXCEED 1000 CHARS"
 | 
				
			|||||||
const InvalidFilesLengthErrorMessage = "MAXIMUM 4 FILES CAN BE UPLOADED"
 | 
					const InvalidFilesLengthErrorMessage = "MAXIMUM 4 FILES CAN BE UPLOADED"
 | 
				
			||||||
const InvalidFileSizeErrorMessage = "FILE SIZE EXCIDED (3MB PER FILE)"
 | 
					const InvalidFileSizeErrorMessage = "FILE SIZE EXCIDED (3MB PER FILE)"
 | 
				
			||||||
const InvalidFileExtErrorMessage = "AVALIABLE FILE EXT: PNG, JPG"
 | 
					const InvalidFileExtErrorMessage = "AVALIABLE FILE EXT: PNG, JPG"
 | 
				
			||||||
 | 
					const ThreadIsArchivedErrorMessage = "THREAD IS ARCHIVED"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user