package repository import ( "u-desk/internal/storage" "u-desk/internal/storage/models" "gorm.io/gorm" ) type TabRepository interface { SaveAll(tabs []models.SqlTab) error FindAll() ([]models.SqlTab, error) Delete(id uint) error } type tabRepository struct { db *gorm.DB } func NewTabRepository() (TabRepository, error) { db := storage.GetDB() if db == nil { var err error db, err = storage.Init() if err != nil { return nil, err } } return &tabRepository{db}, nil } func (r *tabRepository) SaveAll(tabs []models.SqlTab) error { return r.db.Transaction(func(tx *gorm.DB) error { if err := tx.Where("1=1").Delete(&models.SqlTab{}).Error; err != nil { return err } if len(tabs) > 0 { return tx.Create(&tabs).Error } return nil }) } func (r *tabRepository) FindAll() ([]models.SqlTab, error) { var tabs []models.SqlTab return tabs, r.db.Order("`order` ASC, created_at ASC").Find(&tabs).Error } func (r *tabRepository) Delete(id uint) error { return r.db.Delete(&models.SqlTab{}, id).Error }