Skip to content

Commit

Permalink
feat: go:vtuberページデータを返す処理 #149
Browse files Browse the repository at this point in the history
  • Loading branch information
shari-sushi committed Mar 2, 2024
1 parent ac228f0 commit aa45208
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 3 deletions.
1 change: 1 addition & 0 deletions t0016Go/infra/routing.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ func Routing(r *gin.Engine) {
vcontents := ver.Group("/vcontents")
{
vcontents.GET("/", Controller.ReturnTopPageData)
vcontents.GET("/vtuber/:id", Controller.ReturnVtuberPageData)
vcontents.GET("/sings", Controller.GetJoinVtubersMoviesKaraokes)
vcontents.GET("/original-song", Controller.ReturnOriginalSongPage)
// /vtuber, /movie, /karaokeの文字列はフロント側で比較演算に使われてる
Expand Down
44 changes: 44 additions & 0 deletions t0016Go/interfaces/controllers/vtuber_content.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package controllers
import (
"fmt"
"net/http"
"strconv"

"github.com/gin-gonic/gin"
"github.com/sharin-sushi/0016go_next_relation/domain"
Expand Down Expand Up @@ -32,6 +33,49 @@ func (controller *Controller) GetJoinVtubersMoviesKaraokes(c *gin.Context) {
})
return
}

func (controller *Controller) ReturnVtuberPageData(c *gin.Context) {
id, _ := strconv.Atoi((c.Param("id")))
vtuber_id := domain.VtuberId(id)
fmt.Println("id", vtuber_id)
var errs []error

MosOfVtu, err := controller.VtuberContentInteractor.GetMoviesUrlTitlebyVtuber(vtuber_id)
if err != nil {
fmt.Print("err:", err)
errs = append(errs, err)
}

VtsMosKasWithFavofVtu, err := controller.FavoriteInteractor.GetVtubersMoviesKaraokesByVtuerWithFavCnts(vtuber_id)
if err != nil {
fmt.Print("err:", err)
errs = append(errs, err)
}
////

listenerId, err := common.TakeListenerIdFromJWT(c) //非ログイン時でもデータは送付する
if err != nil || listenerId == 0 {
errs = append(errs, err)
c.JSON(http.StatusOK, gin.H{
"vtubers_movies": MosOfVtu,
"vtubers_movies_karaokes": VtsMosKasWithFavofVtu,
"error": errs,
"message": "dont you Loged in ?",
})
return
}
myFav, err := controller.FavoriteInteractor.FindFavoritesCreatedByListenerId(listenerId)
// fmt.Printf("myFav= \n %v\n", myFav)
TransmitKaraokes := common.AddIsFavToKaraokeWithFav(VtsMosKasWithFavofVtu, myFav)

c.JSON(http.StatusOK, gin.H{
"vtubers_movies": MosOfVtu,
"vtubers_movies_karaokes": TransmitKaraokes,
"error": errs,
})
return
}

func (controller *Controller) CreateVtuber(c *gin.Context) {
listenerId, err := common.TakeListenerIdFromJWT(c)
if err != nil {
Expand Down
25 changes: 25 additions & 0 deletions t0016Go/interfaces/database/favorite_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,31 @@ func (db *FavoriteRepository) GetVtubersMoviesKaraokesWithFavCnts() ([]domain.Tr
return TmKas, nil
}

func (db *FavoriteRepository) GetVtubersMoviesKaraokesByVtuerWithFavCnts(id domain.VtuberId) ([]domain.TransmitKaraoke, error) {
fmt.Print("interfaces/database/favorite.go \n")
var TmKas []domain.TransmitKaraoke
var err error

var vt domain.Vtuber
selectQu1 := "vtubers.vtuber_id, vtubers.vtuber_name, vtubers.vtuber_kana, vtubers.intro_movie_url, vtubers.vtuber_inputter_id "
selectQu2 := "m.movie_url, m.movie_title, m.movie_inputter_id "
selectQu3 := "k.karaoke_id, k.sing_start, k.song_name, k.karaoke_inputter_id "
selectQu4 := "COUNT(f.karaoke_id) AS count"
joinQu1 := "LEFT JOIN movies as m USING(vtuber_id) "
joinQu2 := "LEFT JOIN karaokes as k ON m.movie_url = k.movie_url "
joinQu3 := "LEFT JOIN favorites as f ON k.karaoke_id = f.karaoke_id AND f.karaoke_id != 0 AND f.deleted_at IS NULL"
joinQu := fmt.Sprint(joinQu1, joinQu2, joinQu3)
whereQu := fmt.Sprintf("vtubers.vtuber_id = %v AND m.movie_url IS NOT NULL AND k.karaoke_id != 0 ", id)
groupQu := "k.karaoke_id"
err = db.Model(vt).Select(selectQu1, selectQu2, selectQu3, selectQu4).
Joins(joinQu).Where(whereQu).Group(groupQu).
Scan(&TmKas).Error
if err != nil {
return nil, err
}
return TmKas, nil
}

func (db *FavoriteRepository) GetLatest50VtubersMoviesKaraokesWithFavCnts(guestId domain.ListenerId) ([]domain.TransmitKaraoke, error) {
fmt.Print("interfaces/database/favorite.go \n")
var TmKas []domain.TransmitKaraoke
Expand Down
12 changes: 12 additions & 0 deletions t0016Go/interfaces/database/vtuber_content_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,18 @@ func (db *VtuberContentRepository) GetKaraokes() ([]domain.Karaoke, error) {
return Kas, nil
}

func (db *VtuberContentRepository) GetMoviesUrlTitleByVtuber(id domain.VtuberId) ([]domain.Movie, error) {
fmt.Print("interfaces/database/vtuber_content_db.go \n")
var Mos []domain.Movie
selectQ := fmt.Sprint("movie_url, movie_title")
whereQ := fmt.Sprint("vtuber_id = ", id)
err := db.Select(selectQ).Where(whereQ).Find(&Mos).Error
if err != nil {
return nil, err
}
return Mos, nil
}

func (db *VtuberContentRepository) GetVtubersMovies() ([]domain.VtuberMovie, error) {
fmt.Print("interfaces/database/vtuber_content_db.go \n")
var Mos []domain.Movie
Expand Down
7 changes: 7 additions & 0 deletions t0016Go/useCase/favorite_interactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ func (interactor *FavoriteInteractor) GetVtubersMoviesKaraokesWithFavCnts() ([]d
VtsMosKasWitFav, err := interactor.FavoriteRepository.GetVtubersMoviesKaraokesWithFavCnts()
return VtsMosKasWitFav, err
}

func (interactor *FavoriteInteractor) GetVtubersMoviesKaraokesByVtuerWithFavCnts(id domain.VtuberId) ([]domain.TransmitKaraoke, error) {
fmt.Print("useCase/favorite_interactor.go \n")
VtsMosKasWitFav, err := interactor.FavoriteRepository.GetVtubersMoviesKaraokesByVtuerWithFavCnts(id)
return VtsMosKasWitFav, err
}

func (interactor *FavoriteInteractor) GetLatest50VtubersMoviesKaraokesWithFavCnts(guestId domain.ListenerId) ([]domain.TransmitKaraoke, error) {
fmt.Print("useCase/favorite_interactor.go \n")
VtsMosKasWitFav, err := interactor.FavoriteRepository.GetLatest50VtubersMoviesKaraokesWithFavCnts(guestId)
Expand Down
7 changes: 4 additions & 3 deletions t0016Go/useCase/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ type VtuberContentRepository interface {
GetMovies() ([]domain.Movie, error) //
GetKaraokes() ([]domain.Karaoke, error) //
GetVtubersMovies() ([]domain.VtuberMovie, error) //
GetMoviesUrlTitleByVtuber(domain.VtuberId) ([]domain.Movie, error)
// GetVtubersMoviesKaraokes() ([]domain.VtuberMovieKaraoke, error) //
GetVtubersMoviesKaraokes() ([]domain.TransmitKaraoke, error) //
CreateVtuber(domain.Vtuber) error //
Expand Down Expand Up @@ -55,10 +56,10 @@ type FavoriteRepository interface {
FindFavoriteUnscopedByFavOrUnfavRegistry(domain.Favorite) domain.Favorite //
FindFavoritesCreatedByListenerId(domain.ListenerId) ([]domain.ReceivedFavorite, error) //

GetVtubersMoviesWithFavCnts() ([]domain.TransmitMovie, error) //
GetVtubersMoviesKaraokesWithFavCnts() ([]domain.TransmitKaraoke, error) //
GetVtubersMoviesWithFavCnts() ([]domain.TransmitMovie, error) //
GetVtubersMoviesKaraokesWithFavCnts() ([]domain.TransmitKaraoke, error) //
GetVtubersMoviesKaraokesByVtuerWithFavCnts(domain.VtuberId) ([]domain.TransmitKaraoke, error)
GetLatest50VtubersMoviesKaraokesWithFavCnts(domain.ListenerId) ([]domain.TransmitKaraoke, error) //

// 以下、開発中
FindMoviesFavoritedByListenerId(domain.ListenerId) ([]domain.TransmitMovie, error)
FindKaraokesFavoritedByListenerId(domain.ListenerId) ([]domain.TransmitKaraoke, error)
Expand Down
5 changes: 5 additions & 0 deletions t0016Go/useCase/vtuber_content_interactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ func (interactor *VtuberContentInteractor) GetVtubers() ([]domain.Vtuber, error)
allVts, err := interactor.VtuberContentRepository.GetVtubers()
return allVts, err
}
func (interactor *VtuberContentInteractor) GetMoviesUrlTitlebyVtuber(id domain.VtuberId) ([]domain.Movie, error) {
fmt.Print("useCase/vtuber_content_interactor.go \n")
Mos, err := interactor.VtuberContentRepository.GetMoviesUrlTitleByVtuber(id)
return Mos, err
}
func (interactor *VtuberContentInteractor) GetMovies() ([]domain.Movie, error) {
fmt.Print("useCase/vtuber_content_interactor.go \n")
allMos, err := interactor.VtuberContentRepository.GetMovies()
Expand Down

0 comments on commit aa45208

Please sign in to comment.