fix: assciasions update

This commit is contained in:
2025-03-09 15:10:43 +07:00
parent df7c061d3a
commit 9e49d16a43
9 changed files with 36 additions and 16 deletions

View File

@@ -4,7 +4,9 @@ import (
"app/internal/dal"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
"sync"
"time"
)
@@ -18,7 +20,19 @@ const Path = "database.db"
func initialize() error {
var err error
db, err = gorm.Open(sqlite.Open("file:"+Path+"?_fk=1"), &gorm.Config{})
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // Slow SQL threshold
LogLevel: logger.Info, // Log level
IgnoreRecordNotFoundError: false, // Ignore ErrRecordNotFound error for logger
ParameterizedQueries: false, // Don't include params in the SQL log
Colorful: true, // Disable color
},
)
db, err = gorm.Open(sqlite.Open("file:"+Path+"?_fk=1"), &gorm.Config{
Logger: newLogger,
})
if err != nil {
return err
}

View File

@@ -9,12 +9,12 @@ type Post struct {
Text string `displayName:"Текст" ui:"label:Текст"`
Deadline int64 `ui:"label:Дедлайн;datatype:datetime;"`
CreatedAt int64 `gorm:"autoCreateTime" ui:"readonly;datatype:datetime;"`
AuthorId uint `ui:"hidden"`
AuthorId uint `ui:"hidden" gorm:"foreignKey:Id;references:AuthorId;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
Author Author `ui:"label:Автор; field:Name;"`
}
type Author struct {
Id uint `gorm:"primaryKey" ui:"hidden"`
Name string `ui:"label:Имя;"`
Posts []Post `ui:"label:Посты; field:Text;"`
}
Posts []Post `ui:"label:Посты; field:Text;" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
}

View File

@@ -33,7 +33,12 @@ func (service *AuthorService) GetById(id uint) (*Author, error) {
return item, nil
}
func (service *AuthorService) Update(item Author) (Author, error) {
err := dal.Author.Preload(field.Associations).Save(&item)
var posts []*models.Post
for _, post := range item.Posts {
posts = append(posts, &post)
}
err := dal.Author.Posts.Model(&item).Replace(posts...)
_ = dal.Author.Save(&item)
return item, err
}
func (service *AuthorService) Delete(id uint) error {