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
|
2024-10-30 15:05:20 +00:00
|
|
|
// 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
|
2024-11-04 06:48:46 +00:00
|
|
|
|
|
|
|
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")
|
|
|
|
}
|