add methods in Repository and Model for importing data
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
Gitea Actions Demo / build-and-test (push) Failing after 19m24s

This commit is contained in:
Thomas Peetz
2026-10-29 17:40:54 +01:00
parent 2aeba70906
commit 0750621b96
54 changed files with 779 additions and 84 deletions
+1 -2
View File
@@ -25,8 +25,7 @@ func main() {
log.Fatalf("Failed to initialize config: %v", err) log.Fatalf("Failed to initialize config: %v", err)
} }
db, err := config.NewDB(config.ServerConfig.DB)
db, err := config.NewDB()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
+69 -69
View File
@@ -19,43 +19,43 @@ type LoginResponse struct {
} }
type ExportData struct { type ExportData struct {
Sport models.SportDTOList `json:"sport"` Sport models.SportDTOList `json:"sport"`
Player models.PlayerDTOList `json:"player"` Player models.PlayerDTOList `json:"player"`
Team []models.TeamDTO `json:"team"` Team models.TeamDTOList `json:"team"`
Position []models.PositionDTO `json:"field_position"` Position models.PositionDTOList `json:"field_position"`
Rooster []models.RoosterDTO `json:"rooster"` Rooster models.RoosterDTOList `json:"rooster"`
Vendor []models.VendorDTO `json:"vendor"` Vendor models.VendorDTOList `json:"vendor"`
CardSet []models.CardSetDTO `json:"card_set"` CardSet models.CardSetDTOList `json:"card_set"`
Card []models.CardDTO `json:"card"` Card models.CardDTOList `json:"card"`
Artist []models.ArtistDTO `json:"artist"` Artist models.ArtistDTOList `json:"artist"`
Publisher []models.PublisherDTO `json:"publisher"` Publisher models.PublisherDTOList `json:"publisher"`
Worktype []models.WorkTypeDTO `json:"worktype"` Worktype models.WorkTypeDTOList `json:"worktype"`
Comic []models.ComicDTO `json:"comic"` Comic models.ComicDTOList `json:"comic"`
Volume []models.VolumeDTO `json:"volume"` Volume models.VolumeDTOList `json:"volume"`
StoryArc []models.StoryArcDTO `json:"story_arc"` StoryArc models.StoryArcDTOList `json:"story_arc"`
Issue []models.IssueDTO `json:"issue"` Issue models.IssueDTOList `json:"issue"`
TradePaperback []models.TradePaperbackDTO `json:"trade_paperback"` TradePaperback models.TradePaperbackDTOList `json:"trade_paperback"`
ComicWork []models.ComicworkDTO `json:"comic_work"` ComicWork models.ComicworkDTOList `json:"comic_work"`
IssueWork []models.IssueworkDTO `json:"issue_work"` IssueWork models.IssueworkDTOList `json:"issue_work"`
Article []models.ArticleDTO `json:"article"` Article models.ArticleDTOList `json:"article"`
BookshelfPublisher []models.BookshelfPublisherDTO `json:"bookshelf_publisher"` BookshelfPublisher models.BookshelfPublisherDTOList `json:"bookshelf_publisher"`
Book []models.BookDTO `json:"book"` Book models.BookDTOList `json:"book"`
Author []models.AuthorDTO `json:"author"` Author models.AuthorDTOList `json:"author"`
ArticleAuthor []models.ArticleAuthorDTO `json:"article_author"` ArticleAuthor models.ArticleAuthorDTOList `json:"article_author"`
BookAuthor []models.BookAuthorDTO `json:"book_author"` BookAuthor models.BookAuthorDTOList `json:"book_author"`
MediaArticle []models.MediaArticleDTO `json:"media_article"` MediaArticle models.MediaArticleDTOList `json:"media_article"`
MediaVideo []models.MediaVideoDTO `json:"media_video"` MediaVideo models.MediaVideoDTOList `json:"media_video"`
MediaLoFi models.MediaLoFiDTOList `json:"media_lofi"` MediaLoFi models.MediaLoFiDTOList `json:"media_lofi"`
MediaMusic models.MediaMusicDTOList `json:"media_music"` MediaMusic models.MediaMusicDTOList `json:"media_music"`
MediaFile []models.MediaFileDTO `json:"media_file"` MediaFile models.MediaFileDTOList `json:"media_file"`
MediaActor []models.MediaActorDTO `json:"media_actor"` MediaActor models.MediaActorDTOList `json:"media_actor"`
MediaActorFile []models.MediaActorFileDTO `json:"media_actor_file"` MediaActorFile models.MediaActorFileDTOList `json:"media_actor_file"`
Profile models.ProfileDTOList `json:"profile"` Profile models.ProfileDTOList `json:"profile"`
Permission []models.PermissionDTO `json:"permission"` Permission models.PermissionDTOList `json:"permission"`
Assignment []models.AssignmentDTO `json:"assignment"` Assignment models.AssignmentDTOList `json:"assignment"`
Token []models.TokenDTO `json:"token"` Token models.TokenDTOList `json:"token"`
MailAccount []models.MailAccountDTO `json:"mail_account"` MailAccount models.MailAccountDTOList `json:"mail_account"`
Mail []models.MailDTO `json:"mail"` Mail models.MailDTOList `json:"mail"`
} }
func (e *ExportData) GetMap() map[string]any { func (e *ExportData) GetMap() map[string]any {
@@ -74,41 +74,41 @@ func (e *ExportData) GetMap() map[string]any {
var ( var (
Sports models.SportDTOList Sports models.SportDTOList
Players models.PlayerDTOList Players models.PlayerDTOList
Teams []models.TeamDTO Teams models.TeamDTOList
Positions []models.PositionDTO Positions models.PositionDTOList
Roosters []models.RoosterDTO Roosters models.RoosterDTOList
Vendors []models.VendorDTO Vendors models.VendorDTOList
Cardsets []models.CardSetDTO Cardsets models.CardSetDTOList
Cards []models.CardDTO Cards models.CardDTOList
Artists []models.ArtistDTO Artists models.ArtistDTOList
Publishers []models.PublisherDTO Publishers models.PublisherDTOList
Worktypes []models.WorkTypeDTO Worktypes models.WorkTypeDTOList
Comics []models.ComicDTO Comics models.ComicDTOList
Volumes []models.VolumeDTO Volumes models.VolumeDTOList
Storyarcs []models.StoryArcDTO Storyarcs models.StoryArcDTOList
Issues []models.IssueDTO Issues models.IssueDTOList
Tradepaperbacks []models.TradePaperbackDTO Tradepaperbacks models.TradePaperbackDTOList
Comicworks []models.ComicworkDTO Comicworks models.ComicworkDTOList
Issueworks []models.IssueworkDTO Issueworks models.IssueworkDTOList
Articles []models.ArticleDTO Articles models.ArticleDTOList
Bookshelf_publishers []models.BookshelfPublisherDTO Bookshelf_publishers models.BookshelfPublisherDTOList
Books []models.BookDTO Books models.BookDTOList
Authors []models.AuthorDTO Authors models.AuthorDTOList
Article_authors []models.ArticleAuthorDTO Article_authors models.ArticleAuthorDTOList
Book_authors []models.BookAuthorDTO Book_authors models.BookAuthorDTOList
Mediaarticles []models.MediaArticleDTO Mediaarticles models.MediaArticleDTOList
Mediavideos []models.MediaVideoDTO Mediavideos models.MediaVideoDTOList
Mediaactors []models.MediaActorDTO Mediaactors models.MediaActorDTOList
Mediaactorfiles []models.MediaActorFileDTO Mediaactorfiles models.MediaActorFileDTOList
Mediafiles []models.MediaFileDTO Mediafiles models.MediaFileDTOList
Medialofis models.MediaLoFiDTOList Medialofis models.MediaLoFiDTOList
MediaMusics models.MediaMusicDTOList MediaMusics models.MediaMusicDTOList
Profiles models.ProfileDTOList Profiles models.ProfileDTOList
Permissions []models.PermissionDTO Permissions models.PermissionDTOList
Assignments []models.AssignmentDTO Assignments models.AssignmentDTOList
Tokens []models.TokenDTO Tokens models.TokenDTOList
Mailaccounts []models.MailAccountDTO Mailaccounts models.MailAccountDTOList
Mail []models.MailDTO Mail models.MailDTOList
) )
var Registry map[string]any var Registry map[string]any
+80
View File
@@ -3,6 +3,9 @@ package cmd
import ( import (
"kontor-api-gin/internal/api" "kontor-api-gin/internal/api"
"kontor-api-gin/internal/config" "kontor-api-gin/internal/config"
"kontor-api-gin/internal/models"
"kontor-api-gin/internal/repository"
"log"
"log/slog" "log/slog"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@@ -21,6 +24,83 @@ var importCmd = &cobra.Command{
if err != nil { if err != nil {
slog.Info("Error importing data", "Error", err.Error()) slog.Info("Error importing data", "Error", err.Error())
} }
db, err := config.NewDB(config.Config.DB)
if err != nil {
log.Fatal(err)
}
if config.Config.DB.Type == "sqlite" {
if err := db.AutoMigrate(
models.Profile{},
models.Permission{},
models.Assignment{},
models.Sport{},
models.Player{},
models.Team{},
models.Position{},
models.Rooster{},
models.Vendor{},
models.CardSet{},
models.Card{},
models.Artist{},
models.Publisher{},
models.WorkType{},
models.Comic{},
models.Volume{},
models.StoryArc{},
models.Issue{},
models.TradePaperback{},
models.ComicWork{},
models.IssueWork{},
models.Article{},
models.BookshelfPublisher{},
models.Book{},
models.Author{},
models.ArticleAuthor{},
models.BookAuthor{},
models.MediaArticle{},
models.MediaVideo{},
models.MediaLoFi{},
models.MediaFile{},
models.MediaActor{},
models.MediaActorFile{},
models.Token{},
models.MailAccount{},
models.Mail{},
); err != nil {
log.Fatal(err)
}
}
profileRepository := repository.NewProfileRepository(db)
profileRepository.Import(data.Profile)
permissionRepository := repository.NewPermissionRepository(db)
permissionRepository.Import(data.Permission)
assignmentRepository := repository.NewAssignmentRepository(db)
assignmentRepository.Import(data.Assignment)
sportRepository := repository.NewSportRepository(db)
sportRepository.Import(data.Sport)
playerRepository := repository.NewPlayerRepository(db)
playerRepository.Import(data.Player)
teamRepository := repository.NewTeamRepository(db)
teamRepository.Import(data.Team)
roosterRepository := repository.NewRoosterRepository(db)
roosterRepository.Import(data.Rooster)
vendorRepository := repository.NewVendorRepository(db)
vendorRepository.Import(data.Vendor)
cardSetRepository := repository.NewCardSetRepository(db)
cardSetRepository.Import(data.CardSet)
cardRepository := repository.NewCardRepository(db)
cardRepository.Import(data.Card)
artistRepository := repository.NewArtistRepository(db)
artistRepository.Import(data.Artist)
publisherRepository := repository.NewPublisherRepository(db)
publisherRepository.Import(data.Publisher)
workTypeRepository := repository.NewWorkTypeRepository(db)
workTypeRepository.Import(data.Worktype)
comicRepository := repository.NewComicRepository(db)
comicRepository.Import(data.Comic)
volumeRepository := repository.NewVolumeRepository(db)
volumeRepository.Import(data.Volume)
slog.Info("importing Profiles", "count", len(data.Profile)) slog.Info("importing Profiles", "count", len(data.Profile))
slog.Info("importing Permissions", "count", len(data.Permission)) slog.Info("importing Permissions", "count", len(data.Permission))
slog.Info("importing Assignments", "count", len(data.Assignment)) slog.Info("importing Assignments", "count", len(data.Assignment))
+10 -10
View File
@@ -2,34 +2,34 @@ package config
import ( import (
"fmt" "fmt"
"github.com/spf13/viper" "log/slog"
"gorm.io/driver/postgres" "gorm.io/driver/postgres"
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/logger" "gorm.io/gorm/logger"
"log/slog"
) )
func NewDB() (*gorm.DB, error) { func NewDB(db Database) (*gorm.DB, error) {
db_type := ServerConfig.DB.Type db_type := db.Type
slog.Info("using database", "type", db_type) slog.Info("using database", "type", db_type)
switch db_type { switch db_type {
case "postgres": case "postgres":
dsn := fmt.Sprintf( dsn := fmt.Sprintf(
"host=%s user=%s password=%s dbname=%s port=%d sslmode=disable", "host=%s user=%s password=%s dbname=%s port=%d sslmode=disable",
viper.GetString("db.host"), db.Host,
viper.GetString("db.user"), db.User,
viper.GetString("db.password"), db.Password,
viper.GetString("db.name"), db.Name,
viper.GetInt("db.port"), db.Port,
) )
return gorm.Open(postgres.Open(dsn), &gorm.Config{ return gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info), Logger: logger.Default.LogMode(logger.Info),
}) })
case "sqlite": case "sqlite":
return gorm.Open(sqlite.Open(viper.GetString("db.path")), &gorm.Config{ return gorm.Open(sqlite.Open(db.Path), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info), Logger: logger.Default.LogMode(logger.Info),
}) })
default: default:
+2
View File
@@ -43,6 +43,8 @@ func ConvertArticlesToDtos(articles []Article) []ArticleDTO {
return dtos return dtos
} }
type ArticleDTOList []ArticleDTO
type CreateArticleDTO struct { type CreateArticleDTO struct {
Title string `json:"title" binding:"required"` Title string `json:"title" binding:"required"`
} }
@@ -46,3 +46,5 @@ func ConvertArticleAuthorsToDtos(article_authors []ArticleAuthor) []ArticleAutho
} }
return dtos return dtos
} }
type ArticleAuthorDTOList []ArticleAuthorDTO
+15
View File
@@ -29,6 +29,19 @@ type ArtistDTO struct {
WebLink string `json:"weblink"` WebLink string `json:"weblink"`
} }
func (dto ArtistDTO) ConvertDTOToModel() Artist {
model := Artist{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
WebLink: dto.WebLink,
}
return model
}
func ConvertArtistsToDtos(artists []Artist) []ArtistDTO { func ConvertArtistsToDtos(artists []Artist) []ArtistDTO {
dtos := make([]ArtistDTO, len(artists)) dtos := make([]ArtistDTO, len(artists))
for i, artist := range artists { for i, artist := range artists {
@@ -49,3 +62,5 @@ type CreateArtistDTO struct {
Name string `json:"name" binding:"required"` Name string `json:"name" binding:"required"`
WebLink string `json:"weblink" binding:"required"` WebLink string `json:"weblink" binding:"required"`
} }
type ArtistDTOList []ArtistDTO
+15
View File
@@ -31,6 +31,19 @@ type AssignmentDTO struct {
PermissionID *string `json:"permission_id"` PermissionID *string `json:"permission_id"`
} }
func (dto *AssignmentDTO) ConvertDTOToModel() Assignment {
model := Assignment{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
ProfileID: dto.ProfileID,
PermissionID: dto.PermissionID,
}
return model
}
func ConvertAssignmentsToDtos(assignments []Assignment) []AssignmentDTO { func ConvertAssignmentsToDtos(assignments []Assignment) []AssignmentDTO {
dtos := make([]AssignmentDTO, len(assignments)) dtos := make([]AssignmentDTO, len(assignments))
for i, assignment := range assignments { for i, assignment := range assignments {
@@ -46,3 +59,5 @@ func ConvertAssignmentsToDtos(assignments []Assignment) []AssignmentDTO {
} }
return dtos return dtos
} }
type AssignmentDTOList []AssignmentDTO
+2
View File
@@ -46,3 +46,5 @@ func ConvertAuthorsToDtos(authors []Author) []AuthorDTO {
} }
return dtos return dtos
} }
type AuthorDTOList []AuthorDTO
+2
View File
@@ -46,3 +46,5 @@ func ConvertBooksToDtos(books []Book) []BookDTO {
} }
return dtos return dtos
} }
type BookDTOList []BookDTO
@@ -46,3 +46,5 @@ func ConvertBookAuthorsToDtos(book_authors []BookAuthor) []BookAuthorDTO {
} }
return dtos return dtos
} }
type BookAuthorDTOList []BookAuthorDTO
@@ -42,3 +42,5 @@ func ConvertBookshelfPublishersToDtos(publishers []BookshelfPublisher) []Bookshe
} }
return dtos return dtos
} }
type BookshelfPublisherDTOList []BookshelfPublisherDTO
+18
View File
@@ -38,6 +38,22 @@ type CardDTO struct {
VendorID string `json:"vendor_id" binding:"required"` VendorID string `json:"vendor_id" binding:"required"`
} }
func (dto CardDTO) ConvertDTOToModel() Card {
model := Card{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
CardNumber: dto.CardNumber,
Year: dto.Year,
CardSetID: dto.CardSetID,
RoosterID: dto.RoosterID,
VendorID: dto.VendorID,
}
return model
}
func ConvertCardsToDtos(cards []Card) []CardDTO { func ConvertCardsToDtos(cards []Card) []CardDTO {
dtos := make([]CardDTO, len(cards)) dtos := make([]CardDTO, len(cards))
for i, card := range cards { for i, card := range cards {
@@ -56,3 +72,5 @@ func ConvertCardsToDtos(cards []Card) []CardDTO {
} }
return dtos return dtos
} }
type CardDTOList []CardDTO
+17
View File
@@ -35,6 +35,21 @@ type CardSetDTO struct {
VendorID string `json:"vendor_id" binding:"required"` VendorID string `json:"vendor_id" binding:"required"`
} }
func (dto CardSetDTO) ConvertDTOToModel() CardSet {
model := CardSet{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
ParallelSet: dto.ParallelSet,
InsertSet: dto.InsertSet,
VendorID: dto.VendorID,
}
return model
}
func ConvertCardSetsToDtos(cardsets []CardSet) []CardSetDTO { func ConvertCardSetsToDtos(cardsets []CardSet) []CardSetDTO {
dtos := make([]CardSetDTO, len(cardsets)) dtos := make([]CardSetDTO, len(cardsets))
for i, cardset := range cardsets { for i, cardset := range cardsets {
@@ -52,3 +67,5 @@ func ConvertCardSetsToDtos(cardsets []CardSet) []CardSetDTO {
} }
return dtos return dtos
} }
type CardSetDTOList []CardSetDTO
+18
View File
@@ -41,6 +41,22 @@ type ComicDTO struct {
WebLink string `json:"weblink"` WebLink string `json:"weblink"`
} }
func (dto ComicDTO) ConvertDTOToModel() Comic {
model := Comic{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Title: dto.Title,
PublisherID: dto.PublisherID,
CurrentOrder: dto.CurrentOrder,
Completed: dto.Completed,
WebLink: dto.WebLink,
}
return model
}
func ConvertComicsToDtos(comics []Comic) []ComicDTO { func ConvertComicsToDtos(comics []Comic) []ComicDTO {
dtos := make([]ComicDTO, len(comics)) dtos := make([]ComicDTO, len(comics))
for i, comic := range comics { for i, comic := range comics {
@@ -60,6 +76,8 @@ func ConvertComicsToDtos(comics []Comic) []ComicDTO {
return dtos return dtos
} }
type ComicDTOList []ComicDTO
type CreateComicDTO struct { type CreateComicDTO struct {
Title string `json:"title" binding:"required"` Title string `json:"title" binding:"required"`
} }
+2
View File
@@ -50,3 +50,5 @@ func ConvertComicworksToDtos(comicworks []ComicWork) []ComicworkDTO {
} }
return dtos return dtos
} }
type ComicworkDTOList []ComicworkDTO
+2
View File
@@ -65,3 +65,5 @@ func ConvertIssuesToDtos(issues []Issue) []IssueDTO {
} }
return dtos return dtos
} }
type IssueDTOList []IssueDTO
+2
View File
@@ -50,3 +50,5 @@ func ConvertIssueworksToDtos(issueworks []IssueWork) []IssueworkDTO {
} }
return dtos return dtos
} }
type IssueworkDTOList []IssueworkDTO
+2
View File
@@ -53,3 +53,5 @@ func ConvertMailsToDtos(mails []Mail) []MailDTO {
} }
return dtos return dtos
} }
type MailDTOList []MailDTO
@@ -56,3 +56,5 @@ func ConvertMailAccountsToDtos(mailaccounts []MailAccount) []MailAccountDTO {
} }
return dtos return dtos
} }
type MailAccountDTOList []MailAccountDTO
@@ -55,3 +55,5 @@ func ConvertMediaActorsToDtos(actors []MediaActor) []MediaActorDTO {
} }
return dtos return dtos
} }
type MediaActorDTOList []MediaActorDTO
@@ -51,3 +51,5 @@ func ConvertMediaActorFilesToDtos(actor_files []MediaActorFile) []MediaActorFile
} }
return dtos return dtos
} }
type MediaActorFileDTOList []MediaActorFileDTO
@@ -44,3 +44,5 @@ func ConvertMediaArticlesToDtos(media_articles []MediaArticle) []MediaArticleDTO
} }
return dtos return dtos
} }
type MediaArticleDTOList []MediaArticleDTO
+2
View File
@@ -75,3 +75,5 @@ func ConvertMediaFilesToDtos(media_files []MediaFile) []MediaFileDTO {
} }
return dtos return dtos
} }
type MediaFileDTOList []MediaFileDTO
@@ -80,3 +80,5 @@ func ConvertMediaVideosToDtos(media_videos []MediaVideo) []MediaVideoDTO {
} }
return dtos return dtos
} }
type MediaVideoDTOList []MediaVideoDTO
+14
View File
@@ -28,6 +28,18 @@ type PermissionDTO struct {
Name string `json:"name" binding:"required"` Name string `json:"name" binding:"required"`
} }
func (permission *PermissionDTO) ConvertDTOToModel() Permission {
model := Permission{
ID: permission.ID,
CreatedAt: permission.CreatedAt.Time,
UpdatedAt: permission.UpdatedAt.Time,
DeletedAt: permission.DeletedAt,
Version: permission.Version,
Name: permission.Name,
}
return model
}
func ConvertPermissionsToDtos(permissions []Permission) []PermissionDTO { func ConvertPermissionsToDtos(permissions []Permission) []PermissionDTO {
dtos := make([]PermissionDTO, len(permissions)) dtos := make([]PermissionDTO, len(permissions))
for i, permission := range permissions { for i, permission := range permissions {
@@ -42,3 +54,5 @@ func ConvertPermissionsToDtos(permissions []Permission) []PermissionDTO {
} }
return dtos return dtos
} }
type PermissionDTOList []PermissionDTO
+13
View File
@@ -32,6 +32,19 @@ type PlayerDTO struct {
LastName string `json:"last_name" binding:"required"` LastName string `json:"last_name" binding:"required"`
} }
func (dto PlayerDTO) ConvertDTOToModel() Player {
model := Player{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
FirstName: dto.FirstName,
LastName: dto.LastName,
}
return model
}
type PlayerDTOList []PlayerDTO type PlayerDTOList []PlayerDTO
func (playerList *PlayerDTOList) CompareIds(target *PlayerDTOList) (missing, obsolete []string) { func (playerList *PlayerDTOList) CompareIds(target *PlayerDTOList) (missing, obsolete []string) {
+2
View File
@@ -49,3 +49,5 @@ func ConvertPositionsToDtos(positions []Position) []PositionDTO {
} }
return dtos return dtos
} }
type PositionDTOList []PositionDTO
+17
View File
@@ -52,6 +52,23 @@ type ProfileDTO struct {
Enabled bool `json:"enabled" binding:"required"` Enabled bool `json:"enabled" binding:"required"`
} }
func (profile *ProfileDTO) ConvertDTOToModel() Profile {
model := Profile{
ID: profile.ID,
CreatedAt: profile.CreatedAt.Time,
UpdatedAt: profile.UpdatedAt.Time,
DeletedAt: profile.DeletedAt,
Version: profile.Version,
First_Name: profile.First_Name,
Last_Name: profile.Last_Name,
User_Name: profile.User_Name,
Email: profile.Email,
Password: profile.Password,
Enabled: profile.Enabled,
}
return model
}
func ConvertProfilesToDtos(profiles []Profile) []ProfileDTO { func ConvertProfilesToDtos(profiles []Profile) []ProfileDTO {
dtos := make([]ProfileDTO, len(profiles)) dtos := make([]ProfileDTO, len(profiles))
for i, profile := range profiles { for i, profile := range profiles {
+16
View File
@@ -34,6 +34,20 @@ type PublisherDTO struct {
ParentPublisherID *string `json:"parent_publisher_id"` ParentPublisherID *string `json:"parent_publisher_id"`
} }
func (dto PublisherDTO) ConvertDTOToModel() Publisher {
model := Publisher{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
WebLink: dto.WebLink,
ParentPublisherID: dto.ParentPublisherID,
}
return model
}
func ConvertPublishersToDtos(publishers []Publisher) []PublisherDTO { func ConvertPublishersToDtos(publishers []Publisher) []PublisherDTO {
dtos := make([]PublisherDTO, len(publishers)) dtos := make([]PublisherDTO, len(publishers))
for i, publisher := range publishers { for i, publisher := range publishers {
@@ -55,3 +69,5 @@ type CreatePublisherDTO struct {
Name string `json:"name" binding:"required"` Name string `json:"name" binding:"required"`
WebLink string `json:"weblink" binding:"required"` WebLink string `json:"weblink" binding:"required"`
} }
type PublisherDTOList []PublisherDTO
+17
View File
@@ -37,6 +37,21 @@ type RoosterDTO struct {
PositionID string `json:"position_id" binding:"required"` PositionID string `json:"position_id" binding:"required"`
} }
func (dto RoosterDTO) ConvertDTOToModel() Rooster {
model := Rooster{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Year: dto.Year,
TeamID: dto.TeamID,
PlayerID: dto.PlayerID,
PositionID: dto.PositionID,
}
return model
}
func ConvertRoostersToDtos(roosters []Rooster) []RoosterDTO { func ConvertRoostersToDtos(roosters []Rooster) []RoosterDTO {
dtos := make([]RoosterDTO, len(roosters)) dtos := make([]RoosterDTO, len(roosters))
for i, rooster := range roosters { for i, rooster := range roosters {
@@ -54,3 +69,5 @@ func ConvertRoostersToDtos(roosters []Rooster) []RoosterDTO {
} }
return dtos return dtos
} }
type RoosterDTOList []RoosterDTO
+12
View File
@@ -29,6 +29,18 @@ type SportDTO struct {
Name string `json:"name" binding:"required"` Name string `json:"name" binding:"required"`
} }
func (dto SportDTO) ConvertDTOToModel() Sport {
model := Sport{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
}
return model
}
type SportDTOList []SportDTO type SportDTOList []SportDTO
func (sportList *SportDTOList) CompareIds(target *SportDTOList) (missing, obsolete []string) { func (sportList *SportDTOList) CompareIds(target *SportDTOList) (missing, obsolete []string) {
+2
View File
@@ -49,3 +49,5 @@ func ConvertStoryArcsToDtos(storyarcs []StoryArc) []StoryArcDTO {
} }
return dtos return dtos
} }
type StoryArcDTOList []StoryArcDTO
+16
View File
@@ -33,6 +33,20 @@ type TeamDTO struct {
SportID string `json:"sport_id" binding:"required"` SportID string `json:"sport_id" binding:"required"`
} }
func (dto TeamDTO) ConvertDTOToModel() Team {
model := Team{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
ShortName: dto.ShortName,
SportID: dto.SportID,
}
return model
}
func ConvertTeamsToDtos(teams []Team) []TeamDTO { func ConvertTeamsToDtos(teams []Team) []TeamDTO {
dtos := make([]TeamDTO, len(teams)) dtos := make([]TeamDTO, len(teams))
for i, team := range teams { for i, team := range teams {
@@ -49,3 +63,5 @@ func ConvertTeamsToDtos(teams []Team) []TeamDTO {
} }
return dtos return dtos
} }
type TeamDTOList []TeamDTO
+2
View File
@@ -47,3 +47,5 @@ func ConvertTokensToDtos(tokens []Token) []TokenDTO {
} }
return dtos return dtos
} }
type TokenDTOList []TokenDTO
@@ -51,3 +51,5 @@ func ConvertTradePaperbacksToDtos(tradepaperbacks []TradePaperback) []TradePaper
} }
return dtos return dtos
} }
type TradePaperbackDTOList []TradePaperbackDTO
+14
View File
@@ -29,6 +29,18 @@ type VendorDTO struct {
Name string `json:"name" binding:"required"` Name string `json:"name" binding:"required"`
} }
func (dto VendorDTO) ConvertDTOToModel() Vendor {
model := Vendor{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
}
return model
}
func ConvertVendorsToDtos(vendors []Vendor) []VendorDTO { func ConvertVendorsToDtos(vendors []Vendor) []VendorDTO {
dtos := make([]VendorDTO, len(vendors)) dtos := make([]VendorDTO, len(vendors))
for i, vendor := range vendors { for i, vendor := range vendors {
@@ -43,3 +55,5 @@ func ConvertVendorsToDtos(vendors []Vendor) []VendorDTO {
} }
return dtos return dtos
} }
type VendorDTOList []VendorDTO
+15
View File
@@ -30,6 +30,19 @@ type VolumeDTO struct {
ComicID *string `json:"comic_id"` ComicID *string `json:"comic_id"`
} }
func (dto VolumeDTO) ConvertDTOToModel() Volume {
model := Volume{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
ComicID: dto.ComicID,
}
return model
}
func ConvertVolumesToDtos(volumes []Volume) []VolumeDTO { func ConvertVolumesToDtos(volumes []Volume) []VolumeDTO {
dtos := make([]VolumeDTO, len(volumes)) dtos := make([]VolumeDTO, len(volumes))
for i, volume := range volumes { for i, volume := range volumes {
@@ -45,3 +58,5 @@ func ConvertVolumesToDtos(volumes []Volume) []VolumeDTO {
} }
return dtos return dtos
} }
type VolumeDTOList []VolumeDTO
+14
View File
@@ -27,6 +27,18 @@ type WorkTypeDTO struct {
Name string `json:"name"` Name string `json:"name"`
} }
func (dto WorkTypeDTO) ConvertDTOToModel() WorkType {
model := WorkType{
ID: dto.ID,
CreatedAt: dto.CreatedAt.Time,
UpdatedAt: dto.UpdatedAt.Time,
DeletedAt: dto.DeletedAt,
Version: dto.Version,
Name: dto.Name,
}
return model
}
func ConvertWorkTypesToDtos(worktypes []WorkType) []WorkTypeDTO { func ConvertWorkTypesToDtos(worktypes []WorkType) []WorkTypeDTO {
dtos := make([]WorkTypeDTO, len(worktypes)) dtos := make([]WorkTypeDTO, len(worktypes))
for i, worktype := range worktypes { for i, worktype := range worktypes {
@@ -41,3 +53,5 @@ func ConvertWorkTypesToDtos(worktypes []WorkType) []WorkTypeDTO {
} }
return dtos return dtos
} }
type WorkTypeDTOList []WorkTypeDTO
+23
View File
@@ -12,6 +12,29 @@ type ArtistRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *ArtistRepository) Import(dtos models.ArtistDTOList) {
slog.Info("PlayerRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Artist{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewArtistRepository(db *gorm.DB) *ArtistRepository { func NewArtistRepository(db *gorm.DB) *ArtistRepository {
repo := &ArtistRepository{db: db} repo := &ArtistRepository{db: db}
return repo return repo
@@ -35,3 +35,26 @@ func (repository *AssignmentRepository) GetById(context context.Context, id stri
} }
return assignment, result.Error return assignment, result.Error
} }
func (repository *AssignmentRepository) Import(assignments models.AssignmentDTOList) {
slog.Info("AssignmentRepository#Import")
for index, assignment := range assignments {
slog.Info("importing", "index", index, "profile", assignment)
model := assignment.ConvertDTOToModel()
existing_item := models.Assignment{ID: assignment.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
+23
View File
@@ -12,6 +12,29 @@ type CardRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *CardRepository) Import(dtos models.CardDTOList) {
slog.Info("CardRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Card{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewCardRepository(db *gorm.DB) *CardRepository { func NewCardRepository(db *gorm.DB) *CardRepository {
repo := &CardRepository{db: db} repo := &CardRepository{db: db}
return repo return repo
+23
View File
@@ -12,6 +12,29 @@ type CardSetRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *CardSetRepository) Import(dtos models.CardSetDTOList) {
slog.Info("CardSetRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.CardSet{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewCardSetRepository(db *gorm.DB) *CardSetRepository { func NewCardSetRepository(db *gorm.DB) *CardSetRepository {
repo := &CardSetRepository{db: db} repo := &CardSetRepository{db: db}
return repo return repo
+23
View File
@@ -12,6 +12,29 @@ type ComicRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *ComicRepository) Import(dtos models.ComicDTOList) {
slog.Info("ComicRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Comic{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewComicRepository(db *gorm.DB) *ComicRepository { func NewComicRepository(db *gorm.DB) *ComicRepository {
repo := &ComicRepository{db: db} repo := &ComicRepository{db: db}
return repo return repo
+26 -3
View File
@@ -12,6 +12,11 @@ type PermissionRepository struct {
db *gorm.DB db *gorm.DB
} }
func NewPermissionRepository(db *gorm.DB) *PermissionRepository {
repository := &PermissionRepository{db: db}
return repository
}
func (repository *PermissionRepository) FindAll(context context.Context) ([]models.Permission, error) { func (repository *PermissionRepository) FindAll(context context.Context) ([]models.Permission, error) {
var permissions []models.Permission var permissions []models.Permission
@@ -22,7 +27,25 @@ func (repository *PermissionRepository) FindAll(context context.Context) ([]mode
return permissions, nil return permissions, nil
} }
func NewPermissionRepository(db *gorm.DB) *PermissionRepository { func (repository *PermissionRepository) Import(permissions models.PermissionDTOList) {
repository := &PermissionRepository{db: db} slog.Info("PermissionRepository#Import")
return repository for index, permission := range permissions {
slog.Info("importing", "index", index, "profile", permission)
model := permission.ConvertDTOToModel()
existing_item := models.Permission{ID: permission.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
} }
+23
View File
@@ -12,6 +12,29 @@ type PlayerRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *PlayerRepository) Import(dtos models.PlayerDTOList) {
slog.Info("PlayerRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Player{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewPlayerRepository(db *gorm.DB) *PlayerRepository { func NewPlayerRepository(db *gorm.DB) *PlayerRepository {
repo := &PlayerRepository{db: db} repo := &PlayerRepository{db: db}
return repo return repo
+23
View File
@@ -36,3 +36,26 @@ func (repository *ProfileRepository) FindProfileByEmail(email string) (*models.P
} }
return &profile, nil return &profile, nil
} }
func (repository *ProfileRepository) Import(profiles models.ProfileDTOList) {
slog.Info("ProfileRepository#Import")
for index, profile := range profiles {
slog.Info("importing", "index", index, "profile", profile)
model := profile.ConvertDTOToModel()
existing_profile := models.Profile{ID: profile.ID}
result_existing := repository.db.First(&existing_profile)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
@@ -12,6 +12,29 @@ type PublisherRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *PublisherRepository) Import(dtos models.PublisherDTOList) {
slog.Info("PublisherRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Publisher{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewPublisherRepository(db *gorm.DB) *PublisherRepository { func NewPublisherRepository(db *gorm.DB) *PublisherRepository {
repo := &PublisherRepository{db: db} repo := &PublisherRepository{db: db}
return repo return repo
+23
View File
@@ -12,6 +12,29 @@ type RoosterRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *RoosterRepository) Import(dtos models.RoosterDTOList) {
slog.Info("RoosterRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Rooster{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewRoosterRepository(db *gorm.DB) *RoosterRepository { func NewRoosterRepository(db *gorm.DB) *RoosterRepository {
repo := &RoosterRepository{db: db} repo := &RoosterRepository{db: db}
return repo return repo
+23
View File
@@ -12,6 +12,29 @@ type SportRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *SportRepository) Import(sports models.SportDTOList) {
slog.Info("SportRepository#Import")
for index, sport := range sports {
slog.Info("importing", "index", index, "profile", sport)
model := sport.ConvertDTOToModel()
existing_item := models.Sport{ID: sport.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewSportRepository(db *gorm.DB) *SportRepository { func NewSportRepository(db *gorm.DB) *SportRepository {
repo := &SportRepository{db: db} repo := &SportRepository{db: db}
return repo return repo
+23
View File
@@ -12,6 +12,29 @@ type TeamRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *TeamRepository) Import(dtos models.TeamDTOList) {
slog.Info("TeamRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Team{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewTeamRepository(db *gorm.DB) *TeamRepository { func NewTeamRepository(db *gorm.DB) *TeamRepository {
repo := &TeamRepository{db: db} repo := &TeamRepository{db: db}
return repo return repo
+23
View File
@@ -12,6 +12,29 @@ type VendorRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *VendorRepository) Import(dtos models.VendorDTOList) {
slog.Info("VendorRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Vendor{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewVendorRepository(db *gorm.DB) *VendorRepository { func NewVendorRepository(db *gorm.DB) *VendorRepository {
repo := &VendorRepository{db: db} repo := &VendorRepository{db: db}
return repo return repo
+23
View File
@@ -12,6 +12,29 @@ type VolumeRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *VolumeRepository) Import(dtos models.VolumeDTOList) {
slog.Info("VolumeRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.Volume{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewVolumeRepository(db *gorm.DB) *VolumeRepository { func NewVolumeRepository(db *gorm.DB) *VolumeRepository {
repo := &VolumeRepository{db: db} repo := &VolumeRepository{db: db}
return repo return repo
@@ -12,6 +12,29 @@ type WorkTypeRepository struct {
db *gorm.DB db *gorm.DB
} }
func (repository *WorkTypeRepository) Import(dtos models.WorkTypeDTOList) {
slog.Info("WorkTypeRepository#Import")
for index, dto := range dtos {
slog.Info("importing", "index", index, "profile", dto)
model := dto.ConvertDTOToModel()
existing_item := models.WorkType{ID: dto.ID}
result_existing := repository.db.First(&existing_item)
if result_existing.Error != nil {
slog.Info("check existing id: not found - inserting")
result := repository.db.Create(&model)
if result.Error != nil {
slog.Info("error during import", "error", result.Error.Error())
}
} else {
slog.Info("check existing id: found - updating")
result := repository.db.Save(&model)
if result.Error != nil {
slog.Info("error during updating", "error", result.Error.Error())
}
}
}
}
func NewWorkTypeRepository(db *gorm.DB) *WorkTypeRepository { func NewWorkTypeRepository(db *gorm.DB) *WorkTypeRepository {
repo := &WorkTypeRepository{db: db} repo := &WorkTypeRepository{db: db}
return repo return repo