From f5abb444668c3e523729b499a38f1b9a8ae6dacf Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Wed, 30 Sep 2026 18:55:59 +0200 Subject: [PATCH] WIP: Export Kontor DB --- kontor-gin/go.mod | 3 +- kontor-gin/go.sum | 18 +- kontor-gin/internal/cmd/export.go | 175 +++++++++++--------- kontor-gin/internal/handlers/artist.go | 30 ++++ kontor-gin/internal/handlers/card.go | 40 +++++ kontor-gin/internal/handlers/cardset.go | 40 +++++ kontor-gin/internal/handlers/comic.go | 30 +++- kontor-gin/internal/handlers/comicwork.go | 30 ++++ kontor-gin/internal/handlers/issue.go | 49 ++++++ kontor-gin/internal/handlers/issuework.go | 49 ++++++ kontor-gin/internal/handlers/player.go | 7 + kontor-gin/internal/handlers/position.go | 7 + kontor-gin/internal/handlers/publisher.go | 7 + kontor-gin/internal/handlers/rooster.go | 40 +++++ kontor-gin/internal/handlers/sport.go | 7 + kontor-gin/internal/handlers/storyarc.go | 49 ++++++ kontor-gin/internal/handlers/team.go | 7 + kontor-gin/internal/handlers/tysc.go | 23 +-- kontor-gin/internal/handlers/vendor.go | 40 +++++ kontor-gin/internal/handlers/volume.go | 49 ++++++ kontor-gin/internal/handlers/worktype.go | 49 ++++++ kontor-gin/internal/models/artist.go | 26 +++ kontor-gin/internal/models/comicwork.go | 36 +++- kontor-gin/internal/models/issue.go | 40 ++++- kontor-gin/internal/models/issuework.go | 36 +++- kontor-gin/internal/models/publisher.go | 2 +- kontor-gin/internal/models/storyarc.go | 34 +++- kontor-gin/internal/models/volume.go | 32 +++- kontor-gin/internal/models/worktype.go | 28 +++- kontor-gin/internal/repository/artist.go | 27 +++ kontor-gin/internal/repository/card.go | 37 +++++ kontor-gin/internal/repository/cardset.go | 37 +++++ kontor-gin/internal/repository/comicwork.go | 27 +++ kontor-gin/internal/repository/issue.go | 27 +++ kontor-gin/internal/repository/issuework.go | 27 +++ kontor-gin/internal/repository/rooster.go | 37 +++++ kontor-gin/internal/repository/storyarc.go | 27 +++ kontor-gin/internal/repository/vendor.go | 37 +++++ kontor-gin/internal/repository/volume.go | 27 +++ kontor-gin/internal/repository/worktype.go | 27 +++ kontor-gin/internal/router/router.go | 22 +-- kontor-gin/internal/service/artist.go | 22 +++ kontor-gin/internal/service/card.go | 27 +++ kontor-gin/internal/service/cardset.go | 27 +++ kontor-gin/internal/service/comicwork.go | 22 +++ kontor-gin/internal/service/issue.go | 22 +++ kontor-gin/internal/service/issuework.go | 22 +++ kontor-gin/internal/service/rooster.go | 27 +++ kontor-gin/internal/service/storyarc.go | 22 +++ kontor-gin/internal/service/vendor.go | 27 +++ kontor-gin/internal/service/volume.go | 22 +++ kontor-gin/internal/service/worktype.go | 22 +++ 52 files changed, 1458 insertions(+), 146 deletions(-) create mode 100644 kontor-gin/internal/handlers/artist.go create mode 100644 kontor-gin/internal/handlers/card.go create mode 100644 kontor-gin/internal/handlers/cardset.go create mode 100644 kontor-gin/internal/handlers/comicwork.go create mode 100644 kontor-gin/internal/handlers/issue.go create mode 100644 kontor-gin/internal/handlers/issuework.go create mode 100644 kontor-gin/internal/handlers/rooster.go create mode 100644 kontor-gin/internal/handlers/storyarc.go create mode 100644 kontor-gin/internal/handlers/vendor.go create mode 100644 kontor-gin/internal/handlers/volume.go create mode 100644 kontor-gin/internal/handlers/worktype.go create mode 100644 kontor-gin/internal/repository/artist.go create mode 100644 kontor-gin/internal/repository/card.go create mode 100644 kontor-gin/internal/repository/cardset.go create mode 100644 kontor-gin/internal/repository/comicwork.go create mode 100644 kontor-gin/internal/repository/issue.go create mode 100644 kontor-gin/internal/repository/issuework.go create mode 100644 kontor-gin/internal/repository/rooster.go create mode 100644 kontor-gin/internal/repository/storyarc.go create mode 100644 kontor-gin/internal/repository/vendor.go create mode 100644 kontor-gin/internal/repository/volume.go create mode 100644 kontor-gin/internal/repository/worktype.go create mode 100644 kontor-gin/internal/service/artist.go create mode 100644 kontor-gin/internal/service/card.go create mode 100644 kontor-gin/internal/service/cardset.go create mode 100644 kontor-gin/internal/service/comicwork.go create mode 100644 kontor-gin/internal/service/issue.go create mode 100644 kontor-gin/internal/service/issuework.go create mode 100644 kontor-gin/internal/service/rooster.go create mode 100644 kontor-gin/internal/service/storyarc.go create mode 100644 kontor-gin/internal/service/vendor.go create mode 100644 kontor-gin/internal/service/volume.go create mode 100644 kontor-gin/internal/service/worktype.go diff --git a/kontor-gin/go.mod b/kontor-gin/go.mod index 3676a63..41bccde 100644 --- a/kontor-gin/go.mod +++ b/kontor-gin/go.mod @@ -15,6 +15,7 @@ require ( golang.org/x/time v0.16.0 gorm.io/driver/postgres v1.6.3 gorm.io/gorm v1.31.2 + resty.dev/v3 v3.0.0-rc.4 ) require ( @@ -66,6 +67,4 @@ require ( golang.org/x/sys v0.48.0 // indirect golang.org/x/text v0.42.0 // indirect google.golang.org/protobuf v1.36.12 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - resty.dev/v3 v3.0.0-rc.4 // indirect ) diff --git a/kontor-gin/go.sum b/kontor-gin/go.sum index 6df00a7..402b6ba 100644 --- a/kontor-gin/go.sum +++ b/kontor-gin/go.sum @@ -18,16 +18,12 @@ github.com/gabriel-vasile/mimetype v1.4.15 h1:05iP/CYtZ/w455R/KZM6rZ5ieAdh99UPtd github.com/gabriel-vasile/mimetype v1.4.15/go.mod h1:azpTcoLcDZRNgFou5j+APrqQx9HqVPWa6ijYQIIVswQ= github.com/gin-contrib/cors v1.7.2 h1:oLDHxdg8W/XDoN/8zamqk/Drgt4oVZDvaV0YmvVICQw= github.com/gin-contrib/cors v1.7.2/go.mod h1:SUJVARKgQ40dmrzgXEVxj2m7Ig1v1qIboQkPDTQ9t2E= -github.com/gin-contrib/sessions v1.0.2 h1:UaIjUvTH1cMeOdj3in6dl+Xb6It8RiKRF9Z1anbUyCA= -github.com/gin-contrib/sessions v1.0.2/go.mod h1:KxKxWqWP5LJVDCInulOl4WbLzK2KSPlLesfZ66wRvMs= github.com/gin-contrib/sessions v1.1.2 h1:utWRqOHT/kbqxxqF/mtutV9wfGLi1+uu5YuvWUhj/Ow= github.com/gin-contrib/sessions v1.1.2/go.mod h1:qRxYwA/TYJw0wv28oFzs4gY/8G8z69id862SNgX9Gmw= github.com/gin-contrib/slog v1.1.0 h1:K9MVNrETT6r/C3u2Aheer/gxwVeVqrGL0hXlsmv3fm4= github.com/gin-contrib/slog v1.1.0/go.mod h1:PvNXQVXcVOAaaiJR84LV1/xlQHIaXi9ygEXyBkmjdkY= github.com/gin-contrib/sse v1.1.2 h1:MU2fgl1RrdYTMcgJLtz2kJF+vPg3xrqaaKfUUU18tCo= github.com/gin-contrib/sse v1.1.2/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s= -github.com/gin-gonic/gin v1.10.1 h1:T0ujvqyCSqRopADpgPgiTT63DUQVSfojyME59Ei63pQ= -github.com/gin-gonic/gin v1.10.1/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8= github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= @@ -36,8 +32,6 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao= -github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-playground/validator/v10 v10.30.3 h1:4MU6YkEwx7GbcPJOZxrtbu+QfF3pJLJuaYTeAH0DYy8= github.com/go-playground/validator/v10 v10.30.3/go.mod h1:4Axh7oCNGcoGkqLoE4YWt6n20mcEIsPRlB7vPk3lpyc= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= @@ -97,12 +91,14 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/pelletier/go-toml/v2 v2.4.3 h1:GTRvJQutkOSftxIFD5xw9aepkYNuPWmVJpffdDPYVpY= github.com/pelletier/go-toml/v2 v2.4.3/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/quic-go/go-ossfuzz-seeds v0.1.0 h1:APacT+iIaNF6fd8AGEiN3bT/Jtkd2jz4v4TzM7MFjy0= +github.com/quic-go/go-ossfuzz-seeds v0.1.0/go.mod h1:3IOHRbJIc+L6YKMwfDtJAM9Vj9k0YY4muhuyUYk5tbk= github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= github.com/quic-go/quic-go v0.60.0 h1:xcQioE8OM66UQLeUMHltK1CCcOu3JbVB4JAQdDQSB+0= github.com/quic-go/quic-go v0.60.0/go.mod h1:wpKpjmPpftl30sL6pFh7REVpjbcCVy4zt2vDyK1TuJk= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4= github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI= @@ -135,9 +131,10 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.3.2 h1:zkEASHHyEClGeURfgNT9PJZVfAbs9oEX9QXggwWNJbc= github.com/ugorji/go/codec v1.3.2/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4= -go.mongodb.org/mongo-driver v1.17.9 h1:IexDdCuuNJ3BHrELgBlyaH9p60JXAvdzWR128q+U5tU= go.mongodb.org/mongo-driver/v2 v2.8.0 h1:CxWDGQYY8QQwNjAl/aq2sfWakdnWZynnqJ9F4DhHbP8= go.mongodb.org/mongo-driver/v2 v2.8.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0= +go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= +go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= @@ -158,10 +155,7 @@ golang.org/x/time v0.16.0/go.mod h1:rVKOqvZeKvrDKTQiAHJ7wmwP0RzleSphoEA9RcdLA0s= google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/postgres v1.6.3 h1:bAn6O2pUa8LtpWEvL5NFU4+52Tfx8Ut7IVaIacCLcI0= gorm.io/driver/postgres v1.6.3/go.mod h1:0c4fQA44XhOklXDkgtuKqysHCycTa5i9e3EIpDGCwXk= diff --git a/kontor-gin/internal/cmd/export.go b/kontor-gin/internal/cmd/export.go index 5cd5d91..63ddb68 100644 --- a/kontor-gin/internal/cmd/export.go +++ b/kontor-gin/internal/cmd/export.go @@ -19,96 +19,85 @@ var exportCmd = &cobra.Command{ slog.Info("export kontor") slog.Info("Verbosity level", "level", verbose) var login LoginResponse + client := resty.New() - _, err := client.R(). - SetBody(Login{ - Email: "thomas.peetz@thpeetz.de", - Password: "admin", - }). - SetHeader("Accept", "application/json"). - SetResult(&login). - Post("http://127.0.0.1:8550/api/login") - if err != nil { - slog.Info("Health", "error", err.Error()) - } - slog.Info("health", "token", login.Token) + PostJSON(client, "http://127.0.0.1:8550/api/login", &login) type ExportData struct { - Sport []models.SportDTO `json:"sport"` - Player []models.PlayerDTO `json:"player"` - Team []models.TeamDTO `json:"team"` - Position []models.PositionDTO `json:"field_position"` - Rooster []models.RoosterDTO `json:"rooster"` - Vendor []models.VendorDTO `json:"vendor"` - CardSet []models.CardSetDTO `json:"card_set"` - Card []models.CardDTO `json:"card"` - Comic []models.ComicDTO `json:"comic"` + Sport []models.SportDTO `json:"sport"` + Player []models.PlayerDTO `json:"player"` + Team []models.TeamDTO `json:"team"` + Position []models.PositionDTO `json:"field_position"` + Rooster []models.RoosterDTO `json:"rooster"` + Vendor []models.VendorDTO `json:"vendor"` + CardSet []models.CardSetDTO `json:"card_set"` + Card []models.CardDTO `json:"card"` + Artist []models.ArtistDTO `json:"artist"` + Publisher []models.PublisherDTO `json:"publisher"` + Worktype []models.WorkTypeDTO `json:"worktype"` + Comic []models.ComicDTO `json:"comic"` + Volume []models.VolumeDTO `json:"volume"` + StoryArc []models.StoryArcDTO `json:"story_arc"` + Issue []models.IssueDTO `json:"issue"` } - var sports []models.SportDTO - _, err = client.R(). - SetAuthToken(login.Token). - SetHeader("Accept", "application/json"). - SetResult(&sports). - Get("http://127.0.0.1:8550/api/v1/tysc/sports") - if err != nil { - slog.Info("sports", "error", err.Error()) - } + var ( + sports []models.SportDTO + players []models.PlayerDTO + teams []models.TeamDTO + positions []models.PositionDTO + roosters []models.RoosterDTO + vendors []models.VendorDTO + cardsets []models.CardSetDTO + cards []models.CardDTO + artists []models.ArtistDTO + publishers []models.PublisherDTO + worktypes []models.WorkTypeDTO + comics []models.ComicDTO + volumes []models.VolumeDTO + storyarcs []models.StoryArcDTO + issues []models.IssueDTO + ) - var players []models.PlayerDTO - _, err = client.R(). - SetAuthToken(login.Token). - SetHeader("Accept", "application/json"). - SetResult(&players). - Get("http://127.0.0.1:8550/api/v1/tysc/players") - if err != nil { - slog.Info("players", "error", err.Error()) + registry := map[string]any{ + "http://127.0.0.1:8550/api/v1/tysc/sports": &sports, + "http://127.0.0.1:8550/api/v1/tysc/players": &players, + "http://127.0.0.1:8550/api/v1/tysc/teams": &teams, + "http://127.0.0.1:8550/api/v1/tysc/positions": &positions, + "http://127.0.0.1:8550/api/v1/tysc/roosters": &roosters, + "http://127.0.0.1:8550/api/v1/tysc/vendors": &vendors, + "http://127.0.0.1:8550/api/v1/tysc/cardsets": &cardsets, + "http://127.0.0.1:8550/api/v1/tysc/cards": &cards, + "http://127.0.0.1:8550/api/v1/comics/artists": &artists, + "http://127.0.0.1:8550/api/v1/comics/publishers": &publishers, + "http://127.0.0.1:8550/api/v1/comics/worktypes": &worktypes, + "http://127.0.0.1:8550/api/v1/comics/comics": &comics, + "http://127.0.0.1:8550/api/v1/comics/volumes": &volumes, + "http://127.0.0.1:8550/api/v1/comics/storyarcs": &storyarcs, + "http://127.0.0.1:8550/api/v1/comics/issues": &issues, } - - var teams []models.TeamDTO - _, err = client.R(). - SetAuthToken(login.Token). - SetHeader("Accept", "application/json"). - SetResult(&teams). - Get("http://127.0.0.1:8550/api/v1/tysc/teams") - if err != nil { - slog.Info("teams", "error", err.Error()) + for url, value := range registry { + GetJSON(client, login.Token, url, value) } - - var positions []models.PositionDTO - _, err = client.R(). - SetAuthToken(login.Token). - SetHeader("Accept", "application/json"). - SetResult(&positions). - Get("http://127.0.0.1:8550/api/v1/tysc/positions") - if err != nil { - slog.Info("teams", "error", err.Error()) - } - - var comics []models.ComicDTO - _, err = client.R(). - SetAuthToken(login.Token). - SetHeader("Accept", "application/json"). - SetResult(&comics). - Get("http://127.0.0.1:8550/api/v1/comics/comics") - if err != nil { - slog.Info("comics", "error", err.Error()) - } - // slog.Info("comics", "res", comics) - - data := ExportData{ - Sport: sports, - Player: players, - Team: teams, - Position: positions, - Rooster: []models.RoosterDTO{}, - Vendor: []models.VendorDTO{}, - CardSet: []models.CardSetDTO{}, - Card: []models.CardDTO{}, - Comic: comics, + export := ExportData{ + Sport: sports, + Player: players, + Team: teams, + Position: positions, + Rooster: roosters, + Vendor: vendors, + CardSet: cardsets, + Card: cards, + Artist: artists, + Publisher: publishers, + Worktype: worktypes, + Comic: comics, + Volume: volumes, + StoryArc: storyarcs, + Issue: issues, } defer client.Close() - jsonData, err := json.MarshalIndent(data, "", " ") + jsonData, err := json.MarshalIndent(export, "", " ") if err != nil { slog.Info("JSON MarshalIndent failed", "Error:", err) } @@ -121,6 +110,32 @@ var exportCmd = &cobra.Command{ }, } +func GetJSON(client *resty.Client, token string, url string, v any) { + _, err := client.R(). + SetAuthToken(token). + SetHeader("Accept", "application/json"). + SetResult(v). + Get(url) + if err != nil { + slog.Info(url, "error", err.Error()) + } +} + +func PostJSON(client *resty.Client, url string, v any) { + _, err := client.R(). + SetBody(Login{ + Email: "thomas.peetz@thpeetz.de", + Password: "admin", + }). + SetHeader("Accept", "application/json"). + SetResult(v). + Post(url) + if err != nil { + slog.Info("Health", "error", err.Error()) + } + slog.Info(url, "token", v) +} + func init() { rootCmd.AddCommand(exportCmd) } diff --git a/kontor-gin/internal/handlers/artist.go b/kontor-gin/internal/handlers/artist.go new file mode 100644 index 0000000..56fbe89 --- /dev/null +++ b/kontor-gin/internal/handlers/artist.go @@ -0,0 +1,30 @@ +package handlers + +import ( + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "kontor-api-gin/internal/service" + "net/http" + + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +type ArtistHandler struct { + Service *service.ArtistService +} + +func NewArtistHandler(db *gorm.DB) *ArtistHandler { + handler := &ArtistHandler{Service: service.NewArtistService(repository.NewArtistRepository(db))} + return handler +} + +func (handler *ArtistHandler) List(c *gin.Context) { + artists, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertArtistsToDtos(artists) + c.JSON(http.StatusOK, dtos) +} diff --git a/kontor-gin/internal/handlers/card.go b/kontor-gin/internal/handlers/card.go new file mode 100644 index 0000000..6812eed --- /dev/null +++ b/kontor-gin/internal/handlers/card.go @@ -0,0 +1,40 @@ +package handlers + +import ( + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "kontor-api-gin/internal/service" + "net/http" + + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +type CardHandler struct { + Service *service.CardService +} + +func (handler *CardHandler) List(c *gin.Context) { + cards, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertCardsToDtos(cards) + c.JSON(http.StatusOK, dtos) +} + +func (handler *CardHandler) Get(c *gin.Context) { + id := c.Param("id") + card, err := handler.Service.Get(c.Request.Context(), id) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "card not found"}) + return + } + c.JSON(http.StatusOK, card) +} + +func NewCardHandler(db *gorm.DB) *CardHandler { + handler := &CardHandler{Service: service.NewCardService(repository.NewCardRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/cardset.go b/kontor-gin/internal/handlers/cardset.go new file mode 100644 index 0000000..b96b9c4 --- /dev/null +++ b/kontor-gin/internal/handlers/cardset.go @@ -0,0 +1,40 @@ +package handlers + +import ( + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "kontor-api-gin/internal/service" + "net/http" + + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +type CardSetHandler struct { + Service *service.CardSetService +} + +func (handler *CardSetHandler) List(c *gin.Context) { + cardsets, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertCardSetsToDtos(cardsets) + c.JSON(http.StatusOK, dtos) +} + +func (handler *CardSetHandler) Get(c *gin.Context) { + id := c.Param("id") + cardset, err := handler.Service.Get(c.Request.Context(), id) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "cardset not found"}) + return + } + c.JSON(http.StatusOK, cardset) +} + +func NewCardSetHandler(db *gorm.DB) *CardSetHandler { + handler := &CardSetHandler{Service: service.NewCardSetService(repository.NewCardSetRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/comic.go b/kontor-gin/internal/handlers/comic.go index 9972be2..b7490db 100644 --- a/kontor-gin/internal/handlers/comic.go +++ b/kontor-gin/internal/handlers/comic.go @@ -15,19 +15,26 @@ import ( type ComicsHandler struct { ComicHandler *ComicHandler PublisherHandler *PublisherHandler - // ArtistHandler *ArtistHandler - // IssueHandler *IssueHandler - // WorktypeHandler *WorktypeHandler - // VolumeHandler *VolumeHandler - // StoryarcHandler *StoryarcHandler - // ComicworkHandler *ComicworkHandler - // IssueworkHandler *IssueworkHandler + ArtistHandler *ArtistHandler + IssueHandler *IssueHandler + WorkTypeHandler *WorkTypeHandler + VolumeHandler *VolumeHandler + StoryArcHandler *StoryArcHandler + ComicworkHandler *ComicworkHandler + IssueworkHandler *IssueworkHandler } func NewComicsHandler(db *gorm.DB) *ComicsHandler { comicsHandler := &ComicsHandler{ - ComicHandler: &ComicHandler{Service: service.NewComicService(repository.NewComicRepository(db))}, - PublisherHandler: &PublisherHandler{Service: service.NewPublisherService(repository.NewPublisherRepository(db))}, + ComicHandler: NewComicHandler(db), + PublisherHandler: NewPublisherHandler(db), + ArtistHandler: NewArtistHandler(db), + IssueHandler: NewIssueHandler(db), + WorkTypeHandler: NewWorkTypeHandler(db), + VolumeHandler: NewVolumeHandler(db), + StoryArcHandler: NewStoryArcHandler(db), + ComicworkHandler: NewComicworkHandler(db), + IssueworkHandler: NewIssueworkHandler(db), } return comicsHandler } @@ -36,6 +43,11 @@ type ComicHandler struct { Service *service.ComicService } +func NewComicHandler(db *gorm.DB) *ComicHandler { + handler := &ComicHandler{Service: service.NewComicService(repository.NewComicRepository(db))} + return handler +} + func (handler *ComicHandler) List(c *gin.Context) { comics, err := handler.Service.List(c.Request.Context()) if err != nil { diff --git a/kontor-gin/internal/handlers/comicwork.go b/kontor-gin/internal/handlers/comicwork.go new file mode 100644 index 0000000..bd6b8f4 --- /dev/null +++ b/kontor-gin/internal/handlers/comicwork.go @@ -0,0 +1,30 @@ +package handlers + +import ( + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "kontor-api-gin/internal/service" + "net/http" + + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +type ComicworkHandler struct { + Service *service.ComicworkService +} + +func NewComicworkHandler(db *gorm.DB) *ComicworkHandler { + handler := &ComicworkHandler{Service: service.NewComicworkService(repository.NewComicworkRepository(db))} + return handler +} + +func (handler *ComicworkHandler) List(c *gin.Context) { + comicworks, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertComicworksToDtos(comicworks) + c.JSON(http.StatusOK, dtos) +} diff --git a/kontor-gin/internal/handlers/issue.go b/kontor-gin/internal/handlers/issue.go new file mode 100644 index 0000000..9311a32 --- /dev/null +++ b/kontor-gin/internal/handlers/issue.go @@ -0,0 +1,49 @@ +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 IssueHandler struct { + Service *service.IssueService +} + +func NewIssueHandler(db *gorm.DB) *IssueHandler { + handler := &IssueHandler{Service: service.NewIssueService(repository.NewIssueRepository(db))} + return handler +} + +func (handler *IssueHandler) List(c *gin.Context) { + issues, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertIssuesToDtos(issues) + c.JSON(http.StatusOK, dtos) +} + +func (handler *IssueHandler) ListPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + issues, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.HTML(http.StatusOK, "Issues", gin.H{ + "title": "Kontor Issues", + "version": "0.4.0", + "message": "Issues...", + "issues": issues, + "user": user, + }) +} diff --git a/kontor-gin/internal/handlers/issuework.go b/kontor-gin/internal/handlers/issuework.go new file mode 100644 index 0000000..f556f3e --- /dev/null +++ b/kontor-gin/internal/handlers/issuework.go @@ -0,0 +1,49 @@ +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 IssueworkHandler struct { + Service *service.IssueworkService +} + +func NewIssueworkHandler(db *gorm.DB) *IssueworkHandler { + handler := &IssueworkHandler{Service: service.NewIssueworkService(repository.NewIssueworkRepository(db))} + return handler +} + +func (handler *IssueworkHandler) List(c *gin.Context) { + issueworks, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertIssueworksToDtos(issueworks) + c.JSON(http.StatusOK, dtos) +} + +func (handler *IssueworkHandler) ListPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + issueworks, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.HTML(http.StatusOK, "Issues", gin.H{ + "title": "Kontor Issues", + "version": "0.4.0", + "message": "Issues...", + "issueworks": issueworks, + "user": user, + }) +} diff --git a/kontor-gin/internal/handlers/player.go b/kontor-gin/internal/handlers/player.go index 67ff21f..4dc9a24 100644 --- a/kontor-gin/internal/handlers/player.go +++ b/kontor-gin/internal/handlers/player.go @@ -2,10 +2,12 @@ package handlers import ( "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" "kontor-api-gin/internal/service" "net/http" "github.com/gin-gonic/gin" + "gorm.io/gorm" ) type PlayerHandler struct { @@ -31,3 +33,8 @@ func (handler *PlayerHandler) Get(c *gin.Context) { } c.JSON(http.StatusOK, player) } + +func NewPlayerHandler(db *gorm.DB) *PlayerHandler { + handler := &PlayerHandler{Service: service.NewPlayerService(repository.NewPlayerRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/position.go b/kontor-gin/internal/handlers/position.go index e67f7d5..b1985e9 100644 --- a/kontor-gin/internal/handlers/position.go +++ b/kontor-gin/internal/handlers/position.go @@ -2,10 +2,12 @@ package handlers import ( "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" "kontor-api-gin/internal/service" "net/http" "github.com/gin-gonic/gin" + "gorm.io/gorm" ) type PositionHandler struct { @@ -31,3 +33,8 @@ func (handler *PositionHandler) Get(c *gin.Context) { } c.JSON(http.StatusOK, position) } + +func NewPositionHandler(db *gorm.DB) *PositionHandler { + handler := &PositionHandler{Service: service.NewPositionService(repository.NewPositionRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/publisher.go b/kontor-gin/internal/handlers/publisher.go index d84d2d3..90aa844 100644 --- a/kontor-gin/internal/handlers/publisher.go +++ b/kontor-gin/internal/handlers/publisher.go @@ -2,16 +2,23 @@ package handlers import ( "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" "kontor-api-gin/internal/service" "net/http" "github.com/gin-gonic/gin" + "gorm.io/gorm" ) type PublisherHandler struct { Service *service.PublisherService } +func NewPublisherHandler(db *gorm.DB) *PublisherHandler { + handler := &PublisherHandler{Service: service.NewPublisherService(repository.NewPublisherRepository(db))} + return handler +} + func (handler *PublisherHandler) List(c *gin.Context) { comics, err := handler.Service.List(c.Request.Context()) if err != nil { diff --git a/kontor-gin/internal/handlers/rooster.go b/kontor-gin/internal/handlers/rooster.go new file mode 100644 index 0000000..a1f566a --- /dev/null +++ b/kontor-gin/internal/handlers/rooster.go @@ -0,0 +1,40 @@ +package handlers + +import ( + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "kontor-api-gin/internal/service" + "net/http" + + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +type RoosterHandler struct { + Service *service.RoosterService +} + +func (handler *RoosterHandler) List(c *gin.Context) { + roosters, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertRoostersToDtos(roosters) + c.JSON(http.StatusOK, dtos) +} + +func (handler *RoosterHandler) Get(c *gin.Context) { + id := c.Param("id") + rooster, err := handler.Service.Get(c.Request.Context(), id) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "rooster not found"}) + return + } + c.JSON(http.StatusOK, rooster) +} + +func NewRoosterHandler(db *gorm.DB) *RoosterHandler { + handler := &RoosterHandler{Service: service.NewRoosterService(repository.NewRoosterRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/sport.go b/kontor-gin/internal/handlers/sport.go index c30a3d6..fb71b5d 100644 --- a/kontor-gin/internal/handlers/sport.go +++ b/kontor-gin/internal/handlers/sport.go @@ -2,10 +2,12 @@ package handlers import ( "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" "kontor-api-gin/internal/service" "net/http" "github.com/gin-gonic/gin" + "gorm.io/gorm" ) type SportHandler struct { @@ -31,3 +33,8 @@ func (handler *SportHandler) Get(c *gin.Context) { } c.JSON(http.StatusOK, sport) } + +func NewSportHandler(db *gorm.DB) *SportHandler { + handler := &SportHandler{Service: service.NewSportService(repository.NewSportRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/storyarc.go b/kontor-gin/internal/handlers/storyarc.go new file mode 100644 index 0000000..9eea06c --- /dev/null +++ b/kontor-gin/internal/handlers/storyarc.go @@ -0,0 +1,49 @@ +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 StoryArcHandler struct { + Service *service.StoryArcService +} + +func NewStoryArcHandler(db *gorm.DB) *StoryArcHandler { + handler := &StoryArcHandler{Service: service.NewStoryArcService(repository.NewStoryArcRepository(db))} + return handler +} + +func (handler *StoryArcHandler) List(c *gin.Context) { + storyArcs, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertStoryArcsToDtos(storyArcs) + c.JSON(http.StatusOK, dtos) +} + +func (handler *StoryArcHandler) ListPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + storyArcs, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.HTML(http.StatusOK, "StoryArcs", gin.H{ + "title": "Kontor StoryArcs", + "version": "0.4.0", + "message": "StoryArcs...", + "storyArcs": storyArcs, + "user": user, + }) +} diff --git a/kontor-gin/internal/handlers/team.go b/kontor-gin/internal/handlers/team.go index 9b4471f..d166543 100644 --- a/kontor-gin/internal/handlers/team.go +++ b/kontor-gin/internal/handlers/team.go @@ -2,10 +2,12 @@ package handlers import ( "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" "kontor-api-gin/internal/service" "net/http" "github.com/gin-gonic/gin" + "gorm.io/gorm" ) type TeamHandler struct { @@ -31,3 +33,8 @@ func (handler *TeamHandler) Get(c *gin.Context) { } c.JSON(http.StatusOK, team) } + +func NewTeamHandler(db *gorm.DB) *TeamHandler { + handler := &TeamHandler{Service: service.NewTeamService(repository.NewTeamRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/tysc.go b/kontor-gin/internal/handlers/tysc.go index f884e2c..97fada2 100644 --- a/kontor-gin/internal/handlers/tysc.go +++ b/kontor-gin/internal/handlers/tysc.go @@ -1,9 +1,6 @@ package handlers import ( - "kontor-api-gin/internal/repository" - "kontor-api-gin/internal/service" - "gorm.io/gorm" ) @@ -12,18 +9,22 @@ type TyscHandler struct { PlayerHandler *PlayerHandler TeamHandler *TeamHandler PositionHandler *PositionHandler - // RoosterHandler *RoosterHandler - // VendorHandler *VendorHandler - // CardSetHandler *CardSetHandler - // CardHandler *CardHandler + RoosterHandler *RoosterHandler + VendorHandler *VendorHandler + CardSetHandler *CardSetHandler + CardHandler *CardHandler } func NewTyscHandler(db *gorm.DB) *TyscHandler { handlerMap := &TyscHandler{ - SportHandler: &SportHandler{Service: service.NewSportService(repository.NewSportRepository(db))}, - PlayerHandler: &PlayerHandler{Service: service.NewPlayerService(repository.NewPlayerRepository(db))}, - TeamHandler: &TeamHandler{Service: service.NewTeamService(repository.NewTeamRepository(db))}, - PositionHandler: &PositionHandler{Service: service.NewPositionService(repository.NewPositionRepository(db))}, + SportHandler: NewSportHandler(db), + PlayerHandler: NewPlayerHandler(db), + TeamHandler: NewTeamHandler(db), + PositionHandler: NewPositionHandler(db), + RoosterHandler: NewRoosterHandler(db), + VendorHandler: NewVendorHandler(db), + CardSetHandler: NewCardSetHandler(db), + CardHandler: NewCardHandler(db), } return handlerMap } diff --git a/kontor-gin/internal/handlers/vendor.go b/kontor-gin/internal/handlers/vendor.go new file mode 100644 index 0000000..920ee50 --- /dev/null +++ b/kontor-gin/internal/handlers/vendor.go @@ -0,0 +1,40 @@ +package handlers + +import ( + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "kontor-api-gin/internal/service" + "net/http" + + "github.com/gin-gonic/gin" + "gorm.io/gorm" +) + +type VendorHandler struct { + Service *service.VendorService +} + +func (handler *VendorHandler) List(c *gin.Context) { + vendors, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertVendorsToDtos(vendors) + c.JSON(http.StatusOK, dtos) +} + +func (handler *VendorHandler) Get(c *gin.Context) { + id := c.Param("id") + vendor, err := handler.Service.Get(c.Request.Context(), id) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "vendor not found"}) + return + } + c.JSON(http.StatusOK, vendor) +} + +func NewVendorHandler(db *gorm.DB) *VendorHandler { + handler := &VendorHandler{Service: service.NewVendorService(repository.NewVendorRepository(db))} + return handler +} diff --git a/kontor-gin/internal/handlers/volume.go b/kontor-gin/internal/handlers/volume.go new file mode 100644 index 0000000..bc78ebe --- /dev/null +++ b/kontor-gin/internal/handlers/volume.go @@ -0,0 +1,49 @@ +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 VolumeHandler struct { + Service *service.VolumeService +} + +func NewVolumeHandler(db *gorm.DB) *VolumeHandler { + handler := &VolumeHandler{Service: service.NewVolumeService(repository.NewVolumeRepository(db))} + return handler +} + +func (handler *VolumeHandler) List(c *gin.Context) { + volumes, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertVolumesToDtos(volumes) + c.JSON(http.StatusOK, dtos) +} + +func (handler *VolumeHandler) ListPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + volumes, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.HTML(http.StatusOK, "Volumes", gin.H{ + "title": "Kontor Volumes", + "version": "0.4.0", + "message": "Volumes...", + "volumes": volumes, + "user": user, + }) +} diff --git a/kontor-gin/internal/handlers/worktype.go b/kontor-gin/internal/handlers/worktype.go new file mode 100644 index 0000000..6e42e80 --- /dev/null +++ b/kontor-gin/internal/handlers/worktype.go @@ -0,0 +1,49 @@ +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 WorkTypeHandler struct { + Service *service.WorkTypeService +} + +func NewWorkTypeHandler(db *gorm.DB) *WorkTypeHandler { + handler := &WorkTypeHandler{Service: service.NewWorkTypeService(repository.NewWorkTypeRepository(db))} + return handler +} + +func (handler *WorkTypeHandler) List(c *gin.Context) { + workTypes, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + dtos := models.ConvertWorkTypesToDtos(workTypes) + c.JSON(http.StatusOK, dtos) +} + +func (handler *WorkTypeHandler) ListPage(c *gin.Context) { + session := sessions.Default(c) + user := session.Get(globals.UserKey) + workTypes, err := handler.Service.List(c.Request.Context()) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + c.HTML(http.StatusOK, "WorkTypes", gin.H{ + "title": "Kontor WorkTypes", + "version": "0.4.0", + "message": "WorkTypes...", + "workTypes": workTypes, + "user": user, + }) +} diff --git a/kontor-gin/internal/models/artist.go b/kontor-gin/internal/models/artist.go index b175e12..08f44d9 100644 --- a/kontor-gin/internal/models/artist.go +++ b/kontor-gin/internal/models/artist.go @@ -16,6 +16,32 @@ func (artist *Artist) TableName() string { return "artist" } +type ArtistDTO struct { + ID string `json:"id"` + CreatedAt time.Time `json:"created_date"` + UpdatedAt time.Time `json:"last_modified_date"` + DeletedAt *time.Time `json:"deleted_date,omitempty"` + Version int `json:"version"` + Name string `json:"name"` + WebLink string `json:"weblink"` +} + +func ConvertArtistsToDtos(artists []Artist) []ArtistDTO { + dtos := make([]ArtistDTO, len(artists)) + for i, artist := range artists { + dtos[i] = ArtistDTO{ + ID: artist.ID, + CreatedAt: artist.CreatedAt, + UpdatedAt: artist.UpdatedAt, + DeletedAt: artist.DeletedAt, + Version: artist.Version, + Name: artist.Name, + WebLink: artist.WebLink, + } + } + return dtos +} + type CreateArtistDTO struct { Name string `json:"name" binding:"required"` WebLink string `json:"weblink" binding:"required"` diff --git a/kontor-gin/internal/models/comicwork.go b/kontor-gin/internal/models/comicwork.go index f17c65e..ec96605 100644 --- a/kontor-gin/internal/models/comicwork.go +++ b/kontor-gin/internal/models/comicwork.go @@ -3,19 +3,47 @@ package models import "time" type ComicWork struct { - ID string `gorm:"type:string;primary_key;"` + ID string `gorm:"type:string;primary_key;" json:"id"` CreatedAt time.Time `gorm:"column:created_date" json:"created_date"` UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"` DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"` Version int `gorm:"default:0" json:"version"` ArtistID *string `gorm:"column:artist_id" json:"artist_id"` - Artist *Artist `gorm:"foreignKey:ArtistID"` + Artist *Artist `gorm:"foreignKey:ArtistID" json:"artist"` ComicID *string `gorm:"column:comic_id" json:"comic_id"` - Comic *Comic `gorm:"foreignKey:ComicID"` + Comic *Comic `gorm:"foreignKey:ComicID" json:"comic"` WorkTypeID *string `gorm:"column:work_type_id" json:"work_type_id"` - WorkType *WorkType `gorm:"foreignKey:WorkTypeID"` + WorkType *WorkType `gorm:"foreignKey:WorkTypeID" json:"work_type"` } func (comic_work *ComicWork) TableName() string { return "comic_work" } + +type ComicworkDTO struct { + ID string `json:"id" binding:"required"` + CreatedAt time.Time `json:"created_date"` + UpdatedAt time.Time `json:"last_modified_date"` + DeletedAt *time.Time `json:"deleted_date,omitempty"` + Version int `json:"version"` + ArtistID *string `json:"artist_id"` + ComicID *string `json:"comic_id"` + WorkTypeID *string `json:"work_type_id"` +} + +func ConvertComicworksToDtos(comicworks []ComicWork) []ComicworkDTO { + dtos := make([]ComicworkDTO, len(comicworks)) + for i, comicwork := range comicworks { + dtos[i] = ComicworkDTO{ + ID: comicwork.ID, + CreatedAt: comicwork.CreatedAt, + UpdatedAt: comicwork.UpdatedAt, + DeletedAt: comicwork.DeletedAt, + Version: comicwork.Version, + ArtistID: comicwork.ArtistID, + ComicID: comicwork.ComicID, + WorkTypeID: comicwork.WorkTypeID, + } + } + return dtos +} diff --git a/kontor-gin/internal/models/issue.go b/kontor-gin/internal/models/issue.go index bca7ae1..8f0afe5 100644 --- a/kontor-gin/internal/models/issue.go +++ b/kontor-gin/internal/models/issue.go @@ -3,7 +3,7 @@ package models import "time" type Issue struct { - ID string `gorm:"type:string;primary_key;"` + ID string `gorm:"type:string;primary_key;" json:"id"` CreatedAt time.Time `gorm:"column:created_date" json:"created_date"` UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"` DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"` @@ -14,13 +14,45 @@ type Issue struct { Title string `gorm:"column:title" json:"title"` PublishedOn time.Time `gorm:"column:published_on" json:"published_on"` ComicID *string `gorm:"column:comic_id" json:"comic_id"` - Comic *Comic `gorm:"foreignKey:ComicID"` + Comic *Comic `gorm:"foreignKey:ComicID" json:"comic"` StoryArcID *string `gorm:"column:story_arc_id" json:"story_arc_id"` - StoryArc *StoryArc `gorm:"foreignKey:StoryArcID"` + StoryArc *StoryArc `gorm:"foreignKey:StoryArcID" json:"story_arc"` VolumeID *string `gorm:"column:volume_id" json:"volume_id"` - Volume *Volume `gorm:"foreignKey:VolumeID"` + Volume *Volume `gorm:"foreignKey:VolumeID" json:"volume"` } func (issue *Issue) TableName() string { return "issue" } + +type IssueDTO struct { + ID string `json:"id" binding:"required"` + CreatedAt time.Time `json:"created_date"` + UpdatedAt time.Time `json:"last_modified_date"` + DeletedAt *time.Time `json:"deleted_date,omitempty"` + Version int `json:"version"` + Title string `json:"title"` + PublishedOn time.Time `json:"published_on"` + ComicID *string `json:"comic_id"` + StoryArcID *string `json:"story_arc_id"` + VolumeID *string `json:"volume_id"` +} + +func ConvertIssuesToDtos(issues []Issue) []IssueDTO { + dtos := make([]IssueDTO, len(issues)) + for i, issue := range issues { + dtos[i] = IssueDTO{ + ID: issue.ID, + CreatedAt: issue.CreatedAt, + UpdatedAt: issue.UpdatedAt, + DeletedAt: issue.DeletedAt, + Version: issue.Version, + Title: issue.Title, + PublishedOn: issue.PublishedOn, + ComicID: issue.ComicID, + StoryArcID: issue.StoryArcID, + VolumeID: issue.VolumeID, + } + } + return dtos +} diff --git a/kontor-gin/internal/models/issuework.go b/kontor-gin/internal/models/issuework.go index 2bd6fa3..d9c254e 100644 --- a/kontor-gin/internal/models/issuework.go +++ b/kontor-gin/internal/models/issuework.go @@ -3,19 +3,47 @@ package models import "time" type IssueWork struct { - ID string `gorm:"type:string;primary_key;"` + ID string `gorm:"type:string;primary_key;" json:"id"` CreatedAt time.Time `gorm:"column:created_date" json:"created_date"` UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"` DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"` Version int `gorm:"default:0" json:"version"` ArtistID *string `gorm:"column:artist_id" json:"artist_id"` - Artist *Artist `gorm:"foreignKey:ArtistID"` + Artist *Artist `gorm:"foreignKey:ArtistID" json:"artist"` IssueID *string `gorm:"column:issue_id" json:"issue_id"` - Issue *Issue `gorm:"foreignKey:IssueID"` + Issue *Issue `gorm:"foreignKey:IssueID" json:"issue"` WorkTypeID *string `gorm:"column:work_type_id" json:"work_type_id"` - WorkType *WorkType `gorm:"foreignKey:WorkTypeID"` + WorkType *WorkType `gorm:"foreignKey:WorkTypeID" json:"work_type"` } func (issue_work *IssueWork) TableName() string { return "issue_work" } + +type IssueworkDTO struct { + ID string `json:"id" binding:"required"` + CreatedAt time.Time `json:"created_date"` + UpdatedAt time.Time `json:"last_modified_date"` + DeletedAt *time.Time `json:"deleted_date,omitempty"` + Version int `json:"version"` + ArtistID *string `json:"artist_id"` + IssueID *string `json:"issue_id"` + WorkTypeID *string `json:"work_type_id"` +} + +func ConvertIssueworksToDtos(issueworks []IssueWork) []IssueworkDTO { + dtos := make([]IssueworkDTO, len(issueworks)) + for i, issuework := range issueworks { + dtos[i] = IssueworkDTO{ + ID: issuework.ID, + CreatedAt: issuework.CreatedAt, + UpdatedAt: issuework.UpdatedAt, + DeletedAt: issuework.DeletedAt, + Version: issuework.Version, + ArtistID: issuework.ArtistID, + IssueID: issuework.IssueID, + WorkTypeID: issuework.WorkTypeID, + } + } + return dtos +} diff --git a/kontor-gin/internal/models/publisher.go b/kontor-gin/internal/models/publisher.go index 1e0a26c..44266fb 100644 --- a/kontor-gin/internal/models/publisher.go +++ b/kontor-gin/internal/models/publisher.go @@ -24,7 +24,7 @@ type PublisherDTO struct { ID string `json:"id" binding:"required"` CreatedAt time.Time `json:"created_date"` UpdatedAt time.Time `json:"last_modified_date"` - DeletedAt *time.Time `json:"deleted_date"` + DeletedAt *time.Time `json:"deleted_date,omitempty"` Version int `json:"version"` Name string `json:"name"` WebLink string `json:"weblink"` diff --git a/kontor-gin/internal/models/storyarc.go b/kontor-gin/internal/models/storyarc.go index 57c9f0e..38128d7 100644 --- a/kontor-gin/internal/models/storyarc.go +++ b/kontor-gin/internal/models/storyarc.go @@ -3,18 +3,46 @@ package models import "time" type StoryArc struct { - ID string `gorm:"type:string;primary_key;"` + ID string `gorm:"type:string;primary_key;" json:"id"` CreatedAt time.Time `gorm:"column:created_date" json:"created_date"` UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"` DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"` Version int `gorm:"default:0" json:"version"` Name string `gorm:"uniqueIndex" json:"name"` ComicID *string `gorm:"column:comic_id" json:"comic_id"` - Comic *Comic `gorm:"foreignKey:ComicID"` + Comic *Comic `gorm:"foreignKey:ComicID" json:"comic"` VolumeID *string `gorm:"column:volume_id" json:"volume_id"` - Volume *Volume `gorm:"foreignKey:VolumeID"` + Volume *Volume `gorm:"foreignKey:VolumeID" json:"volume"` } func (story_arc *StoryArc) TableName() string { return "story_arc" } + +type StoryArcDTO struct { + ID string `json:"id" binding:"required"` + CreatedAt time.Time `json:"created_date"` + UpdatedAt time.Time `json:"last_modified_date"` + DeletedAt *time.Time `json:"deleted_date,omitempty"` + Version int `json:"version"` + Name string `json:"name"` + ComicID *string `json:"comic_id"` + VolumeID *string `json:"volume_id"` +} + +func ConvertStoryArcsToDtos(storyarcs []StoryArc) []StoryArcDTO { + dtos := make([]StoryArcDTO, len(storyarcs)) + for i, storyarc := range storyarcs { + dtos[i] = StoryArcDTO{ + ID: storyarc.ID, + CreatedAt: storyarc.CreatedAt, + UpdatedAt: storyarc.UpdatedAt, + DeletedAt: storyarc.DeletedAt, + Version: storyarc.Version, + Name: storyarc.Name, + ComicID: storyarc.ComicID, + VolumeID: storyarc.VolumeID, + } + } + return dtos +} diff --git a/kontor-gin/internal/models/volume.go b/kontor-gin/internal/models/volume.go index 46b6607..7fd1892 100644 --- a/kontor-gin/internal/models/volume.go +++ b/kontor-gin/internal/models/volume.go @@ -3,16 +3,42 @@ package models import "time" type Volume struct { - ID string `gorm:"type:string;primary_key;"` + ID string `gorm:"type:string;primary_key;" json:"id"` CreatedAt time.Time `gorm:"column:created_date" json:"created_date"` UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"` DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"` Version int `gorm:"default:0" json:"version"` - Name string `gorm:"uniqueIndex" json:"name"` + Name string `gorm:"uniqueIndex" json:"name"` ComicID *string `gorm:"column:comic_id" json:"comic_id"` - Comic *Comic `gorm:"foreignKey:ComicID"` + Comic *Comic `gorm:"foreignKey:ComicID" json:"comic"` } func (volume *Volume) TableName() string { return "volume" } + +type VolumeDTO struct { + ID string `json:"id" binding:"required"` + CreatedAt time.Time `json:"created_date"` + UpdatedAt time.Time `json:"last_modified_date"` + DeletedAt *time.Time `json:"deleted_date,omitempty"` + Version int `json:"version"` + Name string `json:"name"` + ComicID *string `json:"comic_id"` +} + +func ConvertVolumesToDtos(volumes []Volume) []VolumeDTO { + dtos := make([]VolumeDTO, len(volumes)) + for i, volume := range volumes { + dtos[i] = VolumeDTO{ + ID: volume.ID, + CreatedAt: volume.CreatedAt, + UpdatedAt: volume.UpdatedAt, + DeletedAt: volume.DeletedAt, + Version: volume.Version, + Name: volume.Name, + ComicID: volume.ComicID, + } + } + return dtos +} diff --git a/kontor-gin/internal/models/worktype.go b/kontor-gin/internal/models/worktype.go index 63b3924..14dbf92 100644 --- a/kontor-gin/internal/models/worktype.go +++ b/kontor-gin/internal/models/worktype.go @@ -3,14 +3,38 @@ package models import "time" type WorkType struct { - ID string `gorm:"type:string;primary_key;"` + ID string `gorm:"type:string;primary_key;" json:"id"` CreatedAt time.Time `gorm:"column:created_date" json:"created_date"` UpdatedAt time.Time `gorm:"column:last_modified_date" json:"last_modified_date"` DeletedAt *time.Time `gorm:"column:deleted_date" json:"deleted_date"` Version int `gorm:"default:0" json:"version"` - Name string `gorm:"uniqueIndex" json:"name"` + Name string `gorm:"uniqueIndex" json:"name"` } func (worktype *WorkType) TableName() string { return "worktype" } + +type WorkTypeDTO struct { + ID string `json:"id"` + CreatedAt time.Time `json:"created_date"` + UpdatedAt time.Time `json:"last_modified_date"` + DeletedAt *time.Time `json:"deleted_date"` + Version int `json:"version"` + Name string `json:"name"` +} + +func ConvertWorkTypesToDtos(worktypes []WorkType) []WorkTypeDTO { + dtos := make([]WorkTypeDTO, len(worktypes)) + for i, worktype := range worktypes { + dtos[i] = WorkTypeDTO{ + ID: worktype.ID, + CreatedAt: worktype.CreatedAt, + UpdatedAt: worktype.UpdatedAt, + DeletedAt: worktype.DeletedAt, + Version: worktype.Version, + Name: worktype.Name, + } + } + return dtos +} diff --git a/kontor-gin/internal/repository/artist.go b/kontor-gin/internal/repository/artist.go new file mode 100644 index 0000000..293ddd4 --- /dev/null +++ b/kontor-gin/internal/repository/artist.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type ArtistRepository struct { + db *gorm.DB +} + +func NewArtistRepository(db *gorm.DB) *ArtistRepository { + repo := &ArtistRepository{db: db} + return repo +} + +func (repository *ArtistRepository) FindAll(context context.Context) ([]models.Artist, error) { + var artists []models.Artist + + result := repository.db.Find(&artists) + slog.Info("ArtistRepository#FindAll", "count", result.RowsAffected) + + return artists, nil +} diff --git a/kontor-gin/internal/repository/card.go b/kontor-gin/internal/repository/card.go new file mode 100644 index 0000000..996bf6a --- /dev/null +++ b/kontor-gin/internal/repository/card.go @@ -0,0 +1,37 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type CardRepository struct { + db *gorm.DB +} + +func NewCardRepository(db *gorm.DB) *CardRepository { + repo := &CardRepository{db: db} + return repo +} + +func (repository *CardRepository) FindAll(context context.Context) ([]models.Card, error) { + var cards []models.Card + + result := repository.db.Find(&cards) + slog.Info("CardRepository#FindAll", "count", result.RowsAffected) + + return cards, nil +} + +func (repository *CardRepository) GetById(context context.Context, id string) (models.Card, error) { + var card = models.Card{ID: id} + slog.Info("CardRepository#GetById", "id", id) + result := repository.db.First(&card) + if result.Error != nil { + slog.Info("CardRepository#GetById", "error", result.Error.Error()) + } + return card, result.Error +} diff --git a/kontor-gin/internal/repository/cardset.go b/kontor-gin/internal/repository/cardset.go new file mode 100644 index 0000000..c95efa6 --- /dev/null +++ b/kontor-gin/internal/repository/cardset.go @@ -0,0 +1,37 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type CardSetRepository struct { + db *gorm.DB +} + +func NewCardSetRepository(db *gorm.DB) *CardSetRepository { + repo := &CardSetRepository{db: db} + return repo +} + +func (repository *CardSetRepository) FindAll(context context.Context) ([]models.CardSet, error) { + var cardsets []models.CardSet + + result := repository.db.Find(&cardsets) + slog.Info("CardSetRepository#FindAll", "count", result.RowsAffected) + + return cardsets, nil +} + +func (repository *CardSetRepository) GetById(context context.Context, id string) (models.CardSet, error) { + var cardset = models.CardSet{ID: id} + slog.Info("CardSetRepository#GetById", "id", id) + result := repository.db.First(&cardset) + if result.Error != nil { + slog.Info("CardSetRepository#GetById", "error", result.Error.Error()) + } + return cardset, result.Error +} diff --git a/kontor-gin/internal/repository/comicwork.go b/kontor-gin/internal/repository/comicwork.go new file mode 100644 index 0000000..af71fa3 --- /dev/null +++ b/kontor-gin/internal/repository/comicwork.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type ComicworkRepository struct { + db *gorm.DB +} + +func NewComicworkRepository(db *gorm.DB) *ComicworkRepository { + repo := &ComicworkRepository{db: db} + return repo +} + +func (repository *ComicworkRepository) FindAll(context context.Context) ([]models.ComicWork, error) { + var comicworks []models.ComicWork + + result := repository.db.Find(&comicworks) + slog.Info("ComicRepository#FindAll", "count", result.RowsAffected) + + return comicworks, nil +} diff --git a/kontor-gin/internal/repository/issue.go b/kontor-gin/internal/repository/issue.go new file mode 100644 index 0000000..f6bd32a --- /dev/null +++ b/kontor-gin/internal/repository/issue.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type IssueRepository struct { + db *gorm.DB +} + +func NewIssueRepository(db *gorm.DB) *IssueRepository { + repo := &IssueRepository{db: db} + return repo +} + +func (repository *IssueRepository) FindAll(context context.Context) ([]models.Issue, error) { + var issues []models.Issue + + result := repository.db.Find(&issues) + slog.Info("IssueRepository#FindAll", "count", result.RowsAffected) + + return issues, nil +} diff --git a/kontor-gin/internal/repository/issuework.go b/kontor-gin/internal/repository/issuework.go new file mode 100644 index 0000000..990a9b2 --- /dev/null +++ b/kontor-gin/internal/repository/issuework.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type IssueworkRepository struct { + db *gorm.DB +} + +func NewIssueworkRepository(db *gorm.DB) *IssueworkRepository { + repo := &IssueworkRepository{db: db} + return repo +} + +func (repository *IssueworkRepository) FindAll(context context.Context) ([]models.IssueWork, error) { + var issueworks []models.IssueWork + + result := repository.db.Find(&issueworks) + slog.Info("IssueRepository#FindAll", "count", result.RowsAffected) + + return issueworks, nil +} diff --git a/kontor-gin/internal/repository/rooster.go b/kontor-gin/internal/repository/rooster.go new file mode 100644 index 0000000..dbc7414 --- /dev/null +++ b/kontor-gin/internal/repository/rooster.go @@ -0,0 +1,37 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type RoosterRepository struct { + db *gorm.DB +} + +func NewRoosterRepository(db *gorm.DB) *RoosterRepository { + repo := &RoosterRepository{db: db} + return repo +} + +func (repository *RoosterRepository) FindAll(context context.Context) ([]models.Rooster, error) { + var roosters []models.Rooster + + result := repository.db.Find(&roosters) + slog.Info("RoosterRepository#FindAll", "count", result.RowsAffected) + + return roosters, nil +} + +func (repository *RoosterRepository) GetById(context context.Context, id string) (models.Rooster, error) { + var rooster = models.Rooster{ID: id} + slog.Info("RoosterRepository#GetById", "id", id) + result := repository.db.First(&rooster) + if result.Error != nil { + slog.Info("RoosterRepository#GetById", "error", result.Error.Error()) + } + return rooster, result.Error +} diff --git a/kontor-gin/internal/repository/storyarc.go b/kontor-gin/internal/repository/storyarc.go new file mode 100644 index 0000000..7cdcb94 --- /dev/null +++ b/kontor-gin/internal/repository/storyarc.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type StoryArcRepository struct { + db *gorm.DB +} + +func NewStoryArcRepository(db *gorm.DB) *StoryArcRepository { + repo := &StoryArcRepository{db: db} + return repo +} + +func (repository *StoryArcRepository) FindAll(context context.Context) ([]models.StoryArc, error) { + var storyArcs []models.StoryArc + + result := repository.db.Find(&storyArcs) + slog.Info("StoryArcRepository#FindAll", "count", result.RowsAffected) + + return storyArcs, nil +} diff --git a/kontor-gin/internal/repository/vendor.go b/kontor-gin/internal/repository/vendor.go new file mode 100644 index 0000000..7cda95b --- /dev/null +++ b/kontor-gin/internal/repository/vendor.go @@ -0,0 +1,37 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type VendorRepository struct { + db *gorm.DB +} + +func NewVendorRepository(db *gorm.DB) *VendorRepository { + repo := &VendorRepository{db: db} + return repo +} + +func (repository *VendorRepository) FindAll(context context.Context) ([]models.Vendor, error) { + var vendors []models.Vendor + + result := repository.db.Find(&vendors) + slog.Info("VendorRepository#FindAll", "count", result.RowsAffected) + + return vendors, nil +} + +func (repository *VendorRepository) GetById(context context.Context, id string) (models.Vendor, error) { + var vendor = models.Vendor{ID: id} + slog.Info("VendorRepository#GetById", "id", id) + result := repository.db.First(&vendor) + if result.Error != nil { + slog.Info("VendorRepository#GetById", "error", result.Error.Error()) + } + return vendor, result.Error +} diff --git a/kontor-gin/internal/repository/volume.go b/kontor-gin/internal/repository/volume.go new file mode 100644 index 0000000..403f734 --- /dev/null +++ b/kontor-gin/internal/repository/volume.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type VolumeRepository struct { + db *gorm.DB +} + +func NewVolumeRepository(db *gorm.DB) *VolumeRepository { + repo := &VolumeRepository{db: db} + return repo +} + +func (repository *VolumeRepository) FindAll(context context.Context) ([]models.Volume, error) { + var volumes []models.Volume + + result := repository.db.Find(&volumes) + slog.Info("VolumeRepository#FindAll", "count", result.RowsAffected) + + return volumes, nil +} diff --git a/kontor-gin/internal/repository/worktype.go b/kontor-gin/internal/repository/worktype.go new file mode 100644 index 0000000..bdbdcd7 --- /dev/null +++ b/kontor-gin/internal/repository/worktype.go @@ -0,0 +1,27 @@ +package repository + +import ( + "context" + "kontor-api-gin/internal/models" + "log/slog" + + "gorm.io/gorm" +) + +type WorkTypeRepository struct { + db *gorm.DB +} + +func NewWorkTypeRepository(db *gorm.DB) *WorkTypeRepository { + repo := &WorkTypeRepository{db: db} + return repo +} + +func (repository *WorkTypeRepository) FindAll(context context.Context) ([]models.WorkType, error) { + var workTypes []models.WorkType + + result := repository.db.Find(&workTypes) + slog.Info("VolumeRepository#FindAll", "count", result.RowsAffected) + + return workTypes, nil +} diff --git a/kontor-gin/internal/router/router.go b/kontor-gin/internal/router/router.go index 00c425c..98dab01 100644 --- a/kontor-gin/internal/router/router.go +++ b/kontor-gin/internal/router/router.go @@ -76,19 +76,19 @@ func New(admin *handlers.AdminHandler, comics *handlers.ComicsHandler, media *ha secured.GET("tysc/players", tysc.PlayerHandler.List) secured.GET("tysc/teams", tysc.TeamHandler.List) secured.GET("tysc/positions", tysc.PositionHandler.List) - // secured.GET("tysc/roosters", tysc.RoosterHandler.List) - // secured.GET("tysc/vendors", tysc.VendorHandler.List) - // secured.GET("tysc/cardsets", tysc.CardSetHandler.List) - // secured.GET("tysc/cards", tysc.CardHandler.List) + secured.GET("tysc/roosters", tysc.RoosterHandler.List) + secured.GET("tysc/vendors", tysc.VendorHandler.List) + secured.GET("tysc/cardsets", tysc.CardSetHandler.List) + secured.GET("tysc/cards", tysc.CardHandler.List) secured.GET("/comics/comics", comics.ComicHandler.List) secured.GET("/comics/publishers", comics.PublisherHandler.List) - // comic.GET("/artists", comics.ArtistHandler.List) - // comic.GET("/issues", comics.IssueHandler.List) - // comic.GET("/worktypes", comics.WorktypeHandler.List) - // comic.GET("/volumes", comics.VolumeHandler.List) - // comic.GET("/storyarcs", comics.StoryarcHandler.List) - // comic.GET("/comicworks", comics.ComicworkHandler.List) - // comic.GET("/issueworks", comics.IssueworkHandler.List) + secured.GET("/comics/artists", comics.ArtistHandler.List) + secured.GET("/comics/issues", comics.IssueHandler.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/lofis", media.MediaLoFiHandler.List) secured.GET("/media/actors", media.MediaActorHandler.List) diff --git a/kontor-gin/internal/service/artist.go b/kontor-gin/internal/service/artist.go new file mode 100644 index 0000000..9bfa78a --- /dev/null +++ b/kontor-gin/internal/service/artist.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type ArtistService struct { + repository *repository.ArtistRepository +} + +func NewArtistService(repo *repository.ArtistRepository) *ArtistService { + service := &ArtistService{repository: repo} + return service +} + +func (service *ArtistService) List(context context.Context) ([]models.Artist, error) { + slog.Info("ArtistService#List") + return service.repository.FindAll(context) +} diff --git a/kontor-gin/internal/service/card.go b/kontor-gin/internal/service/card.go new file mode 100644 index 0000000..b25a346 --- /dev/null +++ b/kontor-gin/internal/service/card.go @@ -0,0 +1,27 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type CardService struct { + repository *repository.CardRepository +} + +func NewCardService(repo *repository.CardRepository) *CardService { + service := &CardService{repository: repo} + return service +} + +func (service *CardService) List(context context.Context) ([]models.Card, error) { + slog.Info("CardService#List") + return service.repository.FindAll(context) +} + +func (service *CardService) Get(context context.Context, id string) (models.Card, error) { + slog.Info("CardService#Get") + return service.repository.GetById(context, id) +} diff --git a/kontor-gin/internal/service/cardset.go b/kontor-gin/internal/service/cardset.go new file mode 100644 index 0000000..f7547de --- /dev/null +++ b/kontor-gin/internal/service/cardset.go @@ -0,0 +1,27 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type CardSetService struct { + repository *repository.CardSetRepository +} + +func NewCardSetService(repo *repository.CardSetRepository) *CardSetService { + service := &CardSetService{repository: repo} + return service +} + +func (service *CardSetService) List(context context.Context) ([]models.CardSet, error) { + slog.Info("CardSetService#List") + return service.repository.FindAll(context) +} + +func (service *CardSetService) Get(context context.Context, id string) (models.CardSet, error) { + slog.Info("CardSetService#Get") + return service.repository.GetById(context, id) +} diff --git a/kontor-gin/internal/service/comicwork.go b/kontor-gin/internal/service/comicwork.go new file mode 100644 index 0000000..26997a4 --- /dev/null +++ b/kontor-gin/internal/service/comicwork.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type ComicworkService struct { + repository *repository.ComicworkRepository +} + +func NewComicworkService(repo *repository.ComicworkRepository) *ComicworkService { + service := &ComicworkService{repository: repo} + return service +} + +func (service *ComicworkService) List(context context.Context) ([]models.ComicWork, error) { + slog.Info("ComicworkService#List") + return service.repository.FindAll(context) +} diff --git a/kontor-gin/internal/service/issue.go b/kontor-gin/internal/service/issue.go new file mode 100644 index 0000000..d29a8cd --- /dev/null +++ b/kontor-gin/internal/service/issue.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type IssueService struct { + repository *repository.IssueRepository +} + +func NewIssueService(repo *repository.IssueRepository) *IssueService { + service := &IssueService{repository: repo} + return service +} + +func (service *IssueService) List(context context.Context) ([]models.Issue, error) { + slog.Info("IssueService#List") + return service.repository.FindAll(context) +} diff --git a/kontor-gin/internal/service/issuework.go b/kontor-gin/internal/service/issuework.go new file mode 100644 index 0000000..90ae0ad --- /dev/null +++ b/kontor-gin/internal/service/issuework.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type IssueworkService struct { + repository *repository.IssueworkRepository +} + +func NewIssueworkService(repo *repository.IssueworkRepository) *IssueworkService { + service := &IssueworkService{repository: repo} + return service +} + +func (service *IssueworkService) List(context context.Context) ([]models.IssueWork, error) { + slog.Info("IssueworkService#List") + return service.repository.FindAll(context) +} diff --git a/kontor-gin/internal/service/rooster.go b/kontor-gin/internal/service/rooster.go new file mode 100644 index 0000000..54bc669 --- /dev/null +++ b/kontor-gin/internal/service/rooster.go @@ -0,0 +1,27 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type RoosterService struct { + repository *repository.RoosterRepository +} + +func NewRoosterService(repo *repository.RoosterRepository) *RoosterService { + service := &RoosterService{repository: repo} + return service +} + +func (service *RoosterService) List(context context.Context) ([]models.Rooster, error) { + slog.Info("RoosterService#List") + return service.repository.FindAll(context) +} + +func (service *RoosterService) Get(context context.Context, id string) (models.Rooster, error) { + slog.Info("RoosterService#Get") + return service.repository.GetById(context, id) +} diff --git a/kontor-gin/internal/service/storyarc.go b/kontor-gin/internal/service/storyarc.go new file mode 100644 index 0000000..c32a459 --- /dev/null +++ b/kontor-gin/internal/service/storyarc.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type StoryArcService struct { + repository *repository.StoryArcRepository +} + +func NewStoryArcService(repo *repository.StoryArcRepository) *StoryArcService { + service := &StoryArcService{repository: repo} + return service +} + +func (service *StoryArcService) List(context context.Context) ([]models.StoryArc, error) { + slog.Info("StoryArcService#List") + return service.repository.FindAll(context) +} diff --git a/kontor-gin/internal/service/vendor.go b/kontor-gin/internal/service/vendor.go new file mode 100644 index 0000000..7dbbecf --- /dev/null +++ b/kontor-gin/internal/service/vendor.go @@ -0,0 +1,27 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type VendorService struct { + repository *repository.VendorRepository +} + +func NewVendorService(repo *repository.VendorRepository) *VendorService { + service := &VendorService{repository: repo} + return service +} + +func (service *VendorService) List(context context.Context) ([]models.Vendor, error) { + slog.Info("VendorService#List") + return service.repository.FindAll(context) +} + +func (service *VendorService) Get(context context.Context, id string) (models.Vendor, error) { + slog.Info("VendorService#Get") + return service.repository.GetById(context, id) +} diff --git a/kontor-gin/internal/service/volume.go b/kontor-gin/internal/service/volume.go new file mode 100644 index 0000000..d6c13f7 --- /dev/null +++ b/kontor-gin/internal/service/volume.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type VolumeService struct { + repository *repository.VolumeRepository +} + +func NewVolumeService(repo *repository.VolumeRepository) *VolumeService { + service := &VolumeService{repository: repo} + return service +} + +func (service *VolumeService) List(context context.Context) ([]models.Volume, error) { + slog.Info("VolumeService#List") + return service.repository.FindAll(context) +} diff --git a/kontor-gin/internal/service/worktype.go b/kontor-gin/internal/service/worktype.go new file mode 100644 index 0000000..660c705 --- /dev/null +++ b/kontor-gin/internal/service/worktype.go @@ -0,0 +1,22 @@ +package service + +import ( + "context" + "kontor-api-gin/internal/models" + "kontor-api-gin/internal/repository" + "log/slog" +) + +type WorkTypeService struct { + repository *repository.WorkTypeRepository +} + +func NewWorkTypeService(repo *repository.WorkTypeRepository) *WorkTypeService { + service := &WorkTypeService{repository: repo} + return service +} + +func (service *WorkTypeService) List(context context.Context) ([]models.WorkType, error) { + slog.Info("WorkTypeService#List") + return service.repository.FindAll(context) +}