Fix local pricelist uniqueness and preserve config project on update

This commit is contained in:
Mikhail Chusavitin
2026-02-06 16:00:23 +03:00
parent 3d5ab63970
commit 51e2d1fc83
6 changed files with 178 additions and 10 deletions

View File

@@ -12,10 +12,11 @@ import (
"time"
"git.mchus.pro/mchus/quoteforge/internal/appmeta"
mysqlDriver "github.com/go-sql-driver/mysql"
"github.com/glebarez/sqlite"
mysqlDriver "github.com/go-sql-driver/mysql"
uuidpkg "github.com/google/uuid"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/logger"
)
@@ -557,7 +558,16 @@ func (l *LocalDB) GetLocalPricelistByID(id uint) (*LocalPricelist, error) {
// SaveLocalPricelist saves a pricelist to local SQLite
func (l *LocalDB) SaveLocalPricelist(pricelist *LocalPricelist) error {
return l.db.Save(pricelist).Error
return l.db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "server_id"}},
DoUpdates: clause.Assignments(map[string]interface{}{
"version": pricelist.Version,
"name": pricelist.Name,
"created_at": pricelist.CreatedAt,
"synced_at": pricelist.SyncedAt,
"is_used": pricelist.IsUsed,
}),
}).Create(pricelist).Error
}
// GetLocalPricelists returns all local pricelists