linstrom/storage/userInfoFields.go
mStar 529d106351 Better tracing
Not done yet, still need to add them to just about every other function
2024-11-06 16:57:44 +01:00

57 lines
1.6 KiB
Go

package storage
import (
"time"
"github.com/rs/zerolog/log"
"gitlab.com/mstarongitlab/linstrom/util"
"gorm.io/gorm"
)
// Describes a custom attribute field for accounts
type UserInfoField struct {
gorm.Model // Can actually just embed this as is here as those are not something directly exposed :3
Name string
Value string
LastUrlCheckDate *time.Time // Used if the value is an url to somewhere. Empty if value is not an url
// If the value is an url, this attribute indicates whether Linstrom was able to verify ownership
// of the provided url via the common method of
// "Does the target url contain a rel='me' link to the owner's account"
Confirmed bool
BelongsTo string // Id of account this info field belongs to
}
// TODO: Add functions to store, load, update and delete these
func (s *Storage) FindUserFieldById(id uint) (*UserInfoField, error) {
defer util.Untrace(util.Trace(&log.Logger))
entry := UserInfoField{}
err := s.db.First(&entry, id).Error
switch err {
case nil:
return &entry, nil
case gorm.ErrRecordNotFound:
return nil, ErrEntryNotFound
default:
return nil, err
}
}
func (s *Storage) FindMultipleUserFieldsById(ids []uint) ([]UserInfoField, error) {
defer util.Untrace(util.Trace(&log.Logger))
entries := []UserInfoField{}
err := s.db.Where(ids).Find(&entries).Error
switch err {
case gorm.ErrRecordNotFound:
return nil, ErrEntryNotFound
case nil:
return entries, nil
default:
return nil, err
}
}
func (s *Storage) AddNewUserField(name, value, belongsToId string) (*UserInfoField, error) {
// TODO: Implement me
panic("Not implemented")
}