package logic import ( "errors" "github.com/furryboard/spider-scheduler/pkg/dao" "github.com/furryboard/spider-scheduler/pkg/dao/model" "gorm.io/gorm" ) func AddOrUpdateMetadata(key, value string) error { metadata, err := GetMetadata(key) if err != nil { return err } var tx *gorm.DB if metadata != nil { metadata.Value = value tx = dao.DB().Save(metadata) } else { tx = dao.DB().Create(&model.Metadata{ Key: key, Value: value, }) } return tx.Error } func DeleteMetadata(key string) error { tx := dao.DB().Model(&model.Metadata{}).Delete("key = ?", key) return tx.Error } func GetMetadata(key string) (*model.Metadata, error) { var metadata model.Metadata tx := dao.DB().Model(&model.Metadata{}).Where("key = ?", key).First(&metadata) err := tx.Error if errors.Is(err, gorm.ErrRecordNotFound) { return nil, nil } return &metadata, tx.Error }