Files
msw-open-music/pkg/database/method_review.go

124 lines
2.6 KiB
Go

package database
func (database *Database) InsertReview(review *Review) error {
database.singleThreadLock.Lock()
defer database.singleThreadLock.Unlock()
_, err := database.stmt.insertReview.Exec(
review.UserId,
review.FileId,
review.CreatedAt,
review.Content)
return err
}
func (database *Database) GetReviewsOnFile(fileId int64) ([]*Review, error) {
database.singleThreadLock.Lock()
defer database.singleThreadLock.Unlock()
rows, err := database.stmt.getReviewsOnFile.Query(fileId)
if err != nil {
return nil, err
}
defer rows.Close()
reviews := make([]*Review, 0)
for rows.Next() {
review := &Review{
User: &User{},
File: &File{},
}
err := rows.Scan(
&review.ID,
&review.CreatedAt,
&review.UpdatedAt,
&review.Content,
&review.User.ID,
&review.User.Username,
&review.User.Role,
&review.User.AvatarId,
&review.File.ID,
&review.File.Filename)
if err != nil {
return nil, err
}
reviews = append(reviews, review)
}
return reviews, nil
}
func (database *Database) GetReview(reviewId int64) (*Review, error) {
database.singleThreadLock.Lock()
defer database.singleThreadLock.Unlock()
row := database.stmt.getReview.QueryRow(reviewId)
review := &Review{}
err := row.Scan(
&review.ID,
&review.FileId,
&review.UserId,
&review.CreatedAt,
&review.UpdatedAt,
&review.Content)
if err != nil {
return nil, err
}
return review, nil
}
func (database *Database) UpdateReview(review *Review) error {
database.singleThreadLock.Lock()
defer database.singleThreadLock.Unlock()
_, err := database.stmt.updateReview.Exec(
review.Content,
review.UpdatedAt,
review.ID)
return err
}
func (database *Database) DeleteReview(reviewId int64) error {
database.singleThreadLock.Lock()
defer database.singleThreadLock.Unlock()
_, err := database.stmt.deleteReview.Exec(reviewId)
return err
}
func (database *Database) GetReviewsByUser(userId int64) ([]*Review, error) {
database.singleThreadLock.Lock()
defer database.singleThreadLock.Unlock()
rows, err := database.stmt.getReviewsByUser.Query(userId)
if err != nil {
return nil, err
}
defer rows.Close()
reviews := make([]*Review, 0)
for rows.Next() {
review := &Review{
User: &User{},
File: &File{},
}
err := rows.Scan(
&review.ID,
&review.CreatedAt,
&review.UpdatedAt,
&review.Content,
&review.User.ID,
&review.User.Username,
&review.User.Role,
&review.User.AvatarId,
&review.File.ID,
&review.File.Filename)
if err != nil {
return nil, err
}
reviews = append(reviews, review)
}
return reviews, nil
}