add templates for kontor-gin
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 5s

This commit is contained in:
Thomas Peetz
2026-09-22 19:19:51 +02:00
parent f2f4a0aaf6
commit 044da5353a
24 changed files with 603 additions and 101 deletions
+17 -5
View File
@@ -3,10 +3,10 @@ package controllers
import (
"kontor-api-gin/pkg/globals"
"kontor-api-gin/pkg/helpers"
"log"
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/slog"
"github.com/gin-gonic/gin"
)
@@ -14,10 +14,13 @@ import (
func LoginGetHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
logger := slog.Get(c)
logger.Info("LoginGetHandler", "user", user)
if user != nil {
c.HTML(http.StatusBadRequest, "login.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"login": globals.LoginUrl,
"content": "Please logout first",
"user": user,
})
@@ -26,6 +29,7 @@ func LoginGetHandler(c *gin.Context) {
c.HTML(http.StatusOK, "login.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"login": globals.LoginUrl,
"content": "",
"user": user,
})
@@ -34,10 +38,13 @@ func LoginGetHandler(c *gin.Context) {
func LoginPostHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
logger := slog.Get(c)
logger.Info("LoginPostHandler", "user", user)
if user != nil {
c.HTML(http.StatusBadRequest, "login.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"login": globals.LoginUrl,
"content": "Please logout first",
})
return
@@ -50,6 +57,7 @@ func LoginPostHandler(c *gin.Context) {
c.HTML(http.StatusBadRequest, "login.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"login": globals.LoginUrl,
"content": "Parameters can't be empty",
})
}
@@ -58,6 +66,7 @@ func LoginPostHandler(c *gin.Context) {
c.HTML(http.StatusUnauthorized, "login.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"login": globals.LoginUrl,
"content": "Incorrect username or password",
})
}
@@ -67,10 +76,12 @@ func LoginPostHandler(c *gin.Context) {
c.HTML(http.StatusInternalServerError, "login.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"login": globals.LoginUrl,
"content": "Failed to save session",
})
return
}
logger.Info("LoginGetHandler: redirect to index")
c.Redirect(http.StatusMovedPermanently, "/")
}
@@ -78,16 +89,17 @@ func LoginPostHandler(c *gin.Context) {
func LogoutGetHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
log.Printf("logging out user %v", user)
logger := slog.Get(c)
logger.Info("LogoutGetHandler", "user", user)
if user == nil {
log.Println("Invalid session token")
logger.Info("Invalid session token")
return
}
session.Delete(globals.UserKey)
if err := session.Save(); err != nil {
log.Printf("Failed to save session: %v", err)
logger.Info("Failed to save session", "error", err)
return
}
logger.Info("LogoutGetHandler: redirect to index page")
c.Redirect(http.StatusMovedPermanently, "/")
}
+30
View File
@@ -0,0 +1,30 @@
package controllers
import (
"kontor-api-gin/pkg/globals"
"kontor-api-gin/pkg/schema"
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/slog"
"github.com/gin-gonic/gin"
)
func ListComicsGetHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
logger := slog.Get(c)
var comics []schema.Comic
result := schema.DB.Find(&comics)
logger.Info("found Comics", "count", result.RowsAffected)
c.HTML(http.StatusOK, "comic_comics.tmpl", gin.H{
"title": "Kontor Comics",
"version": "0.4.0",
"content": "Media Files...",
"comics": comics,
"user": user,
})
}
+92
View File
@@ -0,0 +1,92 @@
package controllers
import (
"kontor-api-gin/pkg/schema"
"net/http"
"github.com/gin-contrib/slog"
"github.com/gin-gonic/gin"
)
func ListComics(c *gin.Context) {
var comics []schema.Comic
logger := slog.Get(c)
// query := schema.DB.Model(&schema.MediaFile{})
// result := query.Find(&files)
result := schema.DB.Find(&comics)
logger.Info("found Comics", "count", result.RowsAffected)
c.JSON(http.StatusOK, comics)
}
func ListComicPublishers(c *gin.Context) {
var publishers []schema.Publisher
logger := slog.Get(c)
result := schema.DB.Find(&publishers)
logger.Info("found Comic Publishers", "count", result.RowsAffected)
c.JSON(http.StatusOK, publishers)
}
func ListComicArtists(c *gin.Context) {
var artists []schema.Artist
logger := slog.Get(c)
result := schema.DB.Find(&artists)
logger.Info("found Comic Artists", "count", result.RowsAffected)
c.JSON(http.StatusOK, artists)
}
func ListComicIssues(c *gin.Context) {
var issues []schema.Issue
logger := slog.Get(c)
result := schema.DB.Find(&issues)
logger.Info("found Comic Issues", "count", result.RowsAffected)
c.JSON(http.StatusOK, issues)
}
func ListComicWorkTypes(c *gin.Context) {
var worktypes []schema.WorkType
logger := slog.Get(c)
result := schema.DB.Find(&worktypes)
logger.Info("found Comic WorkTypes", "count", result.RowsAffected)
c.JSON(http.StatusOK, worktypes)
}
func ListComicVolumes(c *gin.Context) {
var items []schema.Volume
logger := slog.Get(c)
result := schema.DB.Find(&items)
logger.Info("found Comic Volumes", "count", result.RowsAffected)
c.JSON(http.StatusOK, items)
}
func ListComicStoryArcs(c *gin.Context) {
var items []schema.StoryArc
logger := slog.Get(c)
result := schema.DB.Find(&items)
logger.Info("found Comic StoryArcs", "count", result.RowsAffected)
c.JSON(http.StatusOK, items)
}
func ListComicWorks(c *gin.Context) {
var items []schema.ComicWork
logger := slog.Get(c)
result := schema.DB.Find(&items)
logger.Info("found Comic ComicWorks", "count", result.RowsAffected)
c.JSON(http.StatusOK, items)
}
func ListComicIssueWorks(c *gin.Context) {
var items []schema.IssueWork
logger := slog.Get(c)
result := schema.DB.Find(&items)
logger.Info("found Comic IssueWorks", "count", result.RowsAffected)
c.JSON(http.StatusOK, items)
}
+4
View File
@@ -5,16 +5,20 @@ import (
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/slog"
"github.com/gin-gonic/gin"
)
func IndexGetHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
logger := slog.Get(c)
logger.Info("IndexGetHandler", "user", user)
c.HTML(http.StatusOK, "index.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"content": "This is an index page...",
"logout": globals.LogoutUrl,
"user": user,
})
}
+15
View File
@@ -0,0 +1,15 @@
package controllers
import (
"kontor-api-gin/pkg/globals"
"net/http"
"github.com/gin-gonic/gin"
)
func HealthGetHandler(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": "healthy",
"version": globals.Version,
})
}
+59
View File
@@ -1,10 +1,13 @@
package controllers
import (
"kontor-api-gin/pkg/globals"
"kontor-api-gin/pkg/schema"
"log"
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/slog"
"github.com/gin-gonic/gin"
)
@@ -32,3 +35,59 @@ func ListMediaLoFis(c *gin.Context) {
// "lofis": lofis,
// })
}
func ListMediaActorsGetHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
var actors []schema.MediaActor
result := schema.DB.Find(&actors)
log.Printf("found %d MediaActors", result.RowsAffected)
c.HTML(http.StatusOK, "media_actor.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"content": "Media Actors...",
"actors": actors,
"user": user,
})
}
func ListMediaFilesGetHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
logger := slog.Get(c)
var files []schema.MediaFile
result := schema.DB.Find(&files)
logger.Info("found MediaFiles", "count", result.RowsAffected)
c.HTML(http.StatusOK, "media_files.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"content": "Media Files...",
"files": files,
"user": user,
})
}
func ListMediaLoFisGetHandler(c *gin.Context) {
session := sessions.Default(c)
user := session.Get(globals.UserKey)
logger := slog.Get(c)
var lofis []schema.MediaLoFi
result := schema.DB.Find(&lofis)
logger.Info("found MediaActors", "count", result.RowsAffected)
c.HTML(http.StatusOK, "media_lofi.tmpl", gin.H{
"title": "Kontor Gin",
"version": "0.4.0",
"content": "Media LoFis...",
"lofis": lofis,
"logout": globals.LogoutUrl,
"user": user,
})
}