43 lines
901 B
Go
43 lines
901 B
Go
package logic
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/eigeen/furryboard/spider-scheduler/pkg/dao"
|
|
"github.com/eigeen/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
|
|
}
|