package repositories import ( "strconv" "gorm.io/gorm" "git.dynamicdiscord.de/kalipso/zineshop/models" ) type ConfigRepository interface { Create(models.Config) (models.Config, error) GetAll() ([]models.Config, error) GetById(string) (models.Config, error) Update(models.Config) (models.Config, error) DeleteById(string) error } type GORMConfigRepository struct { DB *gorm.DB } func NewGORMConfigRepository(db *gorm.DB) ConfigRepository { return &GORMConfigRepository{ DB: db, } } func (t *GORMConfigRepository) Create(config models.Config) (models.Config, error) { result := t.DB.Create(&config) if result.Error != nil { return models.Config{}, result.Error } return config, nil } func (t *GORMConfigRepository) GetAll() ([]models.Config, error) { var configs []models.Config result := t.DB.Find(&configs) return configs, result.Error } func (t *GORMConfigRepository) GetById(id string) (models.Config, error) { configId, err := strconv.Atoi(id) if err != nil { return models.Config{}, err } var config models.Config result := t.DB.First(&config, uint(configId)) if result.Error != nil { return models.Config{}, result.Error } return config, nil } func (t *GORMConfigRepository) Update(config models.Config) (models.Config, error) { result := t.DB.Save(&config) if result.Error != nil { return models.Config{}, result.Error } return config, nil } func (t *GORMConfigRepository) DeleteById(id string) error { configId, err := strconv.Atoi(id) if err != nil { return err } result := t.DB.Delete(&models.Config{}, configId) return result.Error }