linstrom/storage/userInfoFields.go

54 lines
1.4 KiB
Go
Raw Normal View History

2024-05-31 09:54:39 +00:00
package storage
import (
"time"
"gorm.io/gorm"
)
2024-09-12 14:57:53 +00:00
// Describes a custom attribute field for accounts
2024-05-31 09:54:39 +00:00
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
2024-05-31 09:54:39 +00:00
}
2024-09-13 13:02:32 +00:00
// TODO: Add functions to store, load, update and delete these
func (s *Storage) FindUserFieldById(id uint) (*UserInfoField, error) {
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) {
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")
}