diff --git a/kontor-gin/internal/handlers/media.go b/kontor-gin/internal/handlers/media.go index 0b7f37f..a187f12 100644 --- a/kontor-gin/internal/handlers/media.go +++ b/kontor-gin/internal/handlers/media.go @@ -5,18 +5,20 @@ import ( ) type MediaHandler struct { - MediaActorHandler *MediaActorHandler - MediaFileHandler *MediaFileHandler - MediaLoFiHandler *MediaLoFiHandler - MediaVideoHandler *MediaVideoHandler + MediaActorHandler *MediaActorHandler + MediaFileHandler *MediaFileHandler + MediaLoFiHandler *MediaLoFiHandler + MediaVideoHandler *MediaVideoHandler + MediaActorFileHandler *MediaActorFileHandler } func NewMediaHandler(db *gorm.DB) *MediaHandler { mediaHandler := &MediaHandler{ - MediaActorHandler: NewMediaActorHandler(db), - MediaFileHandler: NewMediaFileHandler(db), - MediaLoFiHandler: NewMediaLoFiHandler(db), - MediaVideoHandler: NewMediaVideoHandler(db), + MediaActorHandler: NewMediaActorHandler(db), + MediaFileHandler: NewMediaFileHandler(db), + MediaLoFiHandler: NewMediaLoFiHandler(db), + MediaVideoHandler: NewMediaVideoHandler(db), + MediaActorFileHandler: NewMediaActorFileHandler(db), } return mediaHandler } diff --git a/kontor-gin/internal/handlers/media_actor_file.go b/kontor-gin/internal/handlers/media_actor_file.go new file mode 100644 index 0000000..5e476b0 --- /dev/null +++ b/kontor-gin/internal/handlers/media_actor_file.go @@ -0,0 +1,51 @@ +package handlers + +import ( + "kontor-api-gin/internal/globals" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "kontor-api-gin/internal/service" + "net/http" + + "github.com/gin-contrib/sessions" + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +type MediaActorFileHandler struct { + Service *service.MediaActorFileService +} + +func NewMediaActorFileHandler(db *gorm.DB) *MediaActorFileHandler { + mediaActorFileHandler := &MediaActorFileHandler{ + Service: service.NewMediaActorFileService(repository.NewMediaActorFileRepository(db)), + } + return mediaActorFileHandler +} + +func (handler *MediaActorFileHandler) List(c *gin.Context) { + media_actor_files, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertMediaActorFilesToDtos(media_actor_files) + c.JSON(http.StatusOK, dtos) +} + +func (handler *MediaActorFileHandler) ListPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + media_actor_files, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.HTML(http.StatusOK, "mediaactorfiles", gin.H{ + "title": "Kontor MediaActorFiles", + "version": "0.4.0", + "message": "MediaActorFiles...", + "actors": media_actor_files, + "user": user, + }) +} diff --git a/kontor-gin/internal/repository/media_actor_file.go b/kontor-gin/internal/repository/media_actor_file.go new file mode 100644 index 0000000..e98b1fe --- /dev/null +++ b/kontor-gin/internal/repository/media_actor_file.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type MediaActorFileRepository struct { + db *gorm.DB +} + +func NewMediaActorFileRepository(db *gorm.DB) *MediaActorFileRepository { + repo := &MediaActorFileRepository{db: db} + return repo +} + +func (repository *MediaActorFileRepository) FindAll(context context.Context) ([]models.MediaActorFile, error) { + var actor_files []models.MediaActorFile + + result := repository.db.Find(&actor_files) + slog.Info("MediaActorFileRepository#FindAll", "count", result.RowsAffected) + + return actor_files, nil +} diff --git a/kontor-gin/internal/router/router.go b/kontor-gin/internal/router/router.go index 876c801..fabf600 100644 --- a/kontor-gin/internal/router/router.go +++ b/kontor-gin/internal/router/router.go @@ -91,20 +91,21 @@ func New(admin *handlers.AdminHandler, bookshelf *handlers.BookshelfHandler, com secured.GET("bookshelf/authors", bookshelf.AuthorHandler.List) secured.GET("bookshelf/articleauthors", bookshelf.ArticleAuthorHandler.List) secured.GET("bookshelf/bookauthors", bookshelf.BookAuthorHandler.List) - secured.GET("/comics/comics", comics.ComicHandler.List) - secured.GET("/comics/publishers", comics.PublisherHandler.List) - secured.GET("/comics/artists", comics.ArtistHandler.List) - secured.GET("/comics/issues", comics.IssueHandler.List) - secured.GET("/comics/tradepaperbacks", comics.TradePaperbackHandler.List) - secured.GET("/comics/worktypes", comics.WorkTypeHandler.List) - secured.GET("/comics/volumes", comics.VolumeHandler.List) - secured.GET("/comics/storyarcs", comics.StoryArcHandler.List) - secured.GET("/comics/comicworks", comics.ComicworkHandler.List) - secured.GET("/comics/issueworks", comics.IssueworkHandler.List) - secured.GET("/media/files", media.MediaFileHandler.List) - secured.GET("/media/videos", media.MediaVideoHandler.List) - secured.GET("/media/lofis", media.MediaLoFiHandler.List) - secured.GET("/media/actors", media.MediaActorHandler.List) + secured.GET("comics/comics", comics.ComicHandler.List) + secured.GET("comics/publishers", comics.PublisherHandler.List) + secured.GET("comics/artists", comics.ArtistHandler.List) + secured.GET("comics/issues", comics.IssueHandler.List) + secured.GET("comics/tradepaperbacks", comics.TradePaperbackHandler.List) + secured.GET("comics/worktypes", comics.WorkTypeHandler.List) + secured.GET("comics/volumes", comics.VolumeHandler.List) + secured.GET("comics/storyarcs", comics.StoryArcHandler.List) + secured.GET("comics/comicworks", comics.ComicworkHandler.List) + secured.GET("comics/issueworks", comics.IssueworkHandler.List) + secured.GET("media/files", media.MediaFileHandler.List) + secured.GET("media/videos", media.MediaVideoHandler.List) + secured.GET("media/lofis", media.MediaLoFiHandler.List) + secured.GET("media/actors", media.MediaActorHandler.List) + secured.GET("media/actorfiles", media.MediaActorFileHandler.List) } return router } diff --git a/kontor-gin/internal/service/media_actor_file.go b/kontor-gin/internal/service/media_actor_file.go new file mode 100644 index 0000000..f608c26 --- /dev/null +++ b/kontor-gin/internal/service/media_actor_file.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type MediaActorFileService struct { + repository *repository.MediaActorFileRepository +} + +func NewMediaActorFileService(repo *repository.MediaActorFileRepository) *MediaActorFileService { + service := &MediaActorFileService{repository: repo} + return service +} + +func (service *MediaActorFileService) List(context context.Context) ([]models.MediaActorFile, error) { + slog.Info("MediaActorFileService#List") + return service.repository.FindAll(context) +}