-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6 from RECYTHNG/develop
Develop
- Loading branch information
Showing
10 changed files
with
175 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package dto | ||
|
||
type DataLeaderboard struct { | ||
Id string `json:"id"` | ||
Name string `json:"name"` | ||
PictureURL string `json:"picture_url"` | ||
Point int `json:"point"` | ||
Badge string `json:"badge"` | ||
} | ||
|
||
type LeaderboardResponse struct { | ||
DataLeaderboard []*DataLeaderboard `json:"data_leaderboard"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package handler | ||
|
||
import "github.com/labstack/echo/v4" | ||
|
||
type LeaderboardHandler interface { | ||
GetLeaderboardHandler(c echo.Context) error | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package handler | ||
|
||
import ( | ||
"net/http" | ||
|
||
"github.com/labstack/echo/v4" | ||
"github.com/sawalreverr/recything/internal/helper" | ||
"github.com/sawalreverr/recything/internal/leaderboard/usecase" | ||
) | ||
|
||
type LeaderboardHandlerImpl struct { | ||
LeaderboardUsecase usecase.LeaderboardUsecase | ||
} | ||
|
||
func NewLeaderboardHandler(leaderboardUsecase usecase.LeaderboardUsecase) LeaderboardHandler { | ||
return LeaderboardHandlerImpl{LeaderboardUsecase: leaderboardUsecase} | ||
} | ||
|
||
func (handler LeaderboardHandlerImpl) GetLeaderboardHandler(c echo.Context) error { | ||
leaderboard, err := handler.LeaderboardUsecase.GetLeaderboardUsecase() | ||
if err != nil { | ||
return helper.ErrorHandler(c, http.StatusInternalServerError, "internal server error, detail : "+err.Error()) | ||
} | ||
|
||
responseData := helper.ResponseData(http.StatusOK, "data successfully retrieved", leaderboard.DataLeaderboard) | ||
return c.JSON(http.StatusOK, responseData) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package repository | ||
|
||
import user "github.com/sawalreverr/recything/internal/user" | ||
|
||
type LeaderboardRepository interface { | ||
GetLeaderboard() (*[]user.User, error) | ||
} |
25 changes: 25 additions & 0 deletions
25
internal/leaderboard/repository/leaderboard_repository_impl.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package repository | ||
|
||
import ( | ||
"github.com/sawalreverr/recything/internal/database" | ||
user "github.com/sawalreverr/recything/internal/user" | ||
) | ||
|
||
type LeaderboardRepositoryImpl struct { | ||
DB database.Database | ||
} | ||
|
||
func NewLeaderboardRepository(db database.Database) *LeaderboardRepositoryImpl { | ||
return &LeaderboardRepositoryImpl{DB: db} | ||
} | ||
|
||
func (repository *LeaderboardRepositoryImpl) GetLeaderboard() (*[]user.User, error) { | ||
var users []user.User | ||
if err := repository.DB.GetDB(). | ||
Order("point desc"). | ||
Limit(10). | ||
Find(&users).Error; err != nil { | ||
return nil, err | ||
} | ||
return &users, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package usecase | ||
|
||
import "github.com/sawalreverr/recything/internal/leaderboard/dto" | ||
|
||
type LeaderboardUsecase interface { | ||
GetLeaderboardUsecase() (*dto.LeaderboardResponse, error) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package usecase | ||
|
||
import ( | ||
"github.com/sawalreverr/recything/internal/leaderboard/dto" | ||
"github.com/sawalreverr/recything/internal/leaderboard/repository" | ||
) | ||
|
||
type LeaderboardUsecaseImpl struct { | ||
LeaderboardRepository repository.LeaderboardRepository | ||
} | ||
|
||
func NewLeaderboardUsecase(leaderboardRepository repository.LeaderboardRepository) *LeaderboardUsecaseImpl { | ||
return &LeaderboardUsecaseImpl{LeaderboardRepository: leaderboardRepository} | ||
} | ||
|
||
func (usecase *LeaderboardUsecaseImpl) GetLeaderboardUsecase() (*dto.LeaderboardResponse, error) { | ||
users, err := usecase.LeaderboardRepository.GetLeaderboard() | ||
if err != nil { | ||
return nil, err | ||
} | ||
var dataLeaderboard []*dto.DataLeaderboard | ||
for _, user := range *users { | ||
dataLeaderboard = append(dataLeaderboard, &dto.DataLeaderboard{ | ||
Id: user.ID, | ||
Name: user.Name, | ||
PictureURL: user.PictureURL, | ||
Point: int(user.Point), | ||
Badge: user.Badge, | ||
}) | ||
} | ||
return &dto.LeaderboardResponse{DataLeaderboard: dataLeaderboard}, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters